├── .yarnrc ├── .gitignore ├── images ├── microphone.png ├── recording.png ├── transcribed.png ├── transcribing.png └── whisper-assistant.png ├── .yarn └── install-state.gz ├── .prettierrc ├── .vscodeignore ├── .vscode ├── extensions.json ├── tasks.json ├── settings.json └── launch.json ├── .eslintrc.json ├── tsconfig.json ├── src ├── test │ ├── runTest.ts │ └── suite │ │ ├── index.ts │ │ └── extension.test.ts ├── extension.ts └── speech-transcription.ts ├── LICENSE.md ├── Dockerfile ├── package.json ├── README.md └── yarn.lock /.yarnrc: -------------------------------------------------------------------------------- 1 | --ignore-engines true -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | dist 3 | node_modules 4 | .vscode-test/ 5 | *.vsix 6 | /.whisper 7 | .vscode/settings.json -------------------------------------------------------------------------------- /images/microphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin-opensky/whisper-assistant-vscode/HEAD/images/microphone.png -------------------------------------------------------------------------------- /images/recording.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin-opensky/whisper-assistant-vscode/HEAD/images/recording.png -------------------------------------------------------------------------------- /.yarn/install-state.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin-opensky/whisper-assistant-vscode/HEAD/.yarn/install-state.gz -------------------------------------------------------------------------------- /images/transcribed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin-opensky/whisper-assistant-vscode/HEAD/images/transcribed.png -------------------------------------------------------------------------------- /images/transcribing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin-opensky/whisper-assistant-vscode/HEAD/images/transcribing.png -------------------------------------------------------------------------------- /images/whisper-assistant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin-opensky/whisper-assistant-vscode/HEAD/images/whisper-assistant.png -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": true, 3 | "trailingComma": "all", 4 | "singleQuote": true, 5 | "printWidth": 80, 6 | "tabWidth": 2 7 | } 8 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | .whisper/** 4 | src/** 5 | .gitignore 6 | .yarnrc 7 | vsc-extension-quickstart.md 8 | **/tsconfig.json 9 | **/.eslintrc.json 10 | **/*.map 11 | **/*.ts 12 | -------------------------------------------------------------------------------- /.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/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 | -------------------------------------------------------------------------------- /.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 | "i18n-ally.localesPaths": [], 12 | "cSpell.words": ["Creedy"] 13 | } 14 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "ES2020", 5 | "outDir": "out", 6 | "lib": ["ES2020"], 7 | "esModuleInterop": true, 8 | "sourceMap": true, 9 | "rootDir": "src", 10 | "skipLibCheck": true, 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 | -------------------------------------------------------------------------------- /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({ 17 | extensionDevelopmentPath, 18 | extensionTestsPath, 19 | launchArgs: ['--disable-extensions'], 20 | version: '1.70.0', 21 | }); 22 | } catch (err) { 23 | console.error('Failed to run tests:', err); 24 | process.exit(1); 25 | } 26 | } 27 | 28 | main(); 29 | -------------------------------------------------------------------------------- /src/test/suite/index.ts: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | import Mocha from 'mocha'; 3 | import 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 | timeout: 10000, 11 | }); 12 | 13 | const testsRoot = path.resolve(__dirname, '..'); 14 | 15 | return new Promise(async (c, e) => { 16 | try { 17 | const files = await glob.glob('**/**.test.js', { cwd: testsRoot }); 18 | // Add files to the test suite 19 | files.forEach((f) => mocha.addFile(path.resolve(testsRoot, f))); 20 | 21 | // Run the mocha test 22 | mocha.run((failures) => { 23 | if (failures > 0) { 24 | e(new Error(`${failures} tests failed.`)); 25 | } else { 26 | c(); 27 | } 28 | }); 29 | } catch (err) { 30 | console.error(err); 31 | e(err); 32 | } 33 | }); 34 | } 35 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) [2023] [Martin Creedy] 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 | -------------------------------------------------------------------------------- /.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": ["--extensionDevelopmentPath=${workspaceFolder}"], 13 | "outFiles": ["${workspaceFolder}/out/**/*.js"], 14 | "preLaunchTask": "${defaultBuildTask}" 15 | }, 16 | { 17 | "name": "Extension Tests", 18 | "type": "extensionHost", 19 | "request": "launch", 20 | "runtimeExecutable": "${execPath}", 21 | "args": [ 22 | "--extensionDevelopmentPath=${workspaceFolder}", 23 | "--extensionTestsPath=${workspaceFolder}/out/test/suite/index" 24 | ], 25 | "outFiles": ["${workspaceFolder}/out/test/**/*.js"], 26 | "preLaunchTask": "${defaultBuildTask}", 27 | "env": { 28 | "WHISPER_ASSISTANT_TEST": "true" 29 | } 30 | } 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.10.13-slim 2 | 3 | # Install system dependencies 4 | RUN apt-get update --fix-missing && apt-get install -y \ 5 | git \ 6 | ffmpeg \ 7 | && rm -rf /var/lib/apt/lists/* 8 | 9 | # Install Python packages with retry logic 10 | RUN --mount=type=cache,target=/root/.cache/pip \ 11 | for i in {1..3}; do \ 12 | pip install fastapi uvicorn python-multipart faster-whisper && break || sleep 15; \ 13 | done 14 | 15 | # Create app directory 16 | WORKDIR /app 17 | 18 | # Pre-download the model during build 19 | RUN python -c "from faster_whisper import WhisperModel; WhisperModel('base', device='cpu', compute_type='int8')" 20 | 21 | # Create main.py with embedded code 22 | RUN echo 'from fastapi import FastAPI, UploadFile, File\n\ 23 | from fastapi.middleware.cors import CORSMiddleware\n\ 24 | from faster_whisper import WhisperModel\n\ 25 | import tempfile\n\ 26 | import os\n\ 27 | \n\ 28 | app = FastAPI(title="Whisper Assistant API")\n\ 29 | \n\ 30 | # Configure CORS\n\ 31 | app.add_middleware(\n\ 32 | CORSMiddleware,\n\ 33 | allow_origins=["*"], # Allows all origins\n\ 34 | allow_credentials=True,\n\ 35 | allow_methods=["*"], # Allows all methods\n\ 36 | allow_headers=["*"], # Allows all headers\n\ 37 | )\n\ 38 | \n\ 39 | # Initialize the model (already downloaded during build)\n\ 40 | whisper_model = WhisperModel("base", device="cpu", compute_type="int8")\n\ 41 | \n\ 42 | @app.post("/v1/audio/transcriptions")\n\ 43 | async def transcribe_audio(\n\ 44 | file: UploadFile = File(...),\n\ 45 | model_name: str = "whisper-1", # Renamed parameter to avoid conflict\n\ 46 | language: str = "en"\n\ 47 | ):\n\ 48 | """Transcribe audio file to text"""\n\ 49 | # Save uploaded file temporarily\n\ 50 | with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_file:\n\ 51 | content = await file.read()\n\ 52 | temp_file.write(content)\n\ 53 | temp_file.flush()\n\ 54 | \n\ 55 | # Transcribe the audio\n\ 56 | segments, info = whisper_model.transcribe(\n\ 57 | temp_file.name,\n\ 58 | language=language,\n\ 59 | vad_filter=True\n\ 60 | )\n\ 61 | \n\ 62 | # Format response to match OpenAI API\n\ 63 | formatted_segments = []\n\ 64 | for i, segment in enumerate(segments):\n\ 65 | formatted_segments.append({\n\ 66 | "id": i,\n\ 67 | "seek": 0,\n\ 68 | "start": segment.start,\n\ 69 | "end": segment.end,\n\ 70 | "text": segment.text,\n\ 71 | "tokens": [],\n\ 72 | "temperature": 0.0,\n\ 73 | })\n\ 74 | \n\ 75 | # Clean up temp file\n\ 76 | os.unlink(temp_file.name)\n\ 77 | \n\ 78 | return {\n\ 79 | "text": " ".join(seg["text"] for seg in formatted_segments),\n\ 80 | "segments": formatted_segments,\n\ 81 | "language": info.language\n\ 82 | }\n\ 83 | \n\ 84 | @app.get("/v1/health")\n\ 85 | async def health_check():\n\ 86 | """Check if the API is running"""\n\ 87 | return {"status": "ok"}\n\ 88 | \n\ 89 | @app.get("/")\n\ 90 | async def root():\n\ 91 | """Get API information and available endpoints"""\n\ 92 | return {\n\ 93 | "message": "Whisper Assistant API",\n\ 94 | "docs": "/docs",\n\ 95 | "health_check": "/v1/health",\n\ 96 | "transcribe": "/v1/audio/transcriptions"\n\ 97 | }' > main.py 98 | 99 | # Expose the port 100 | EXPOSE 4444 101 | 102 | # Run the server 103 | CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "4444"] -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "whisper-assistant", 3 | "displayName": "Whisper Assistant", 4 | "description": "Leveraging OpenAI's Whisper to transcribe your speech, enhancing your coding efficiency and experience.", 5 | "version": "1.2.4", 6 | "publisher": "MartinOpenSky", 7 | "icon": "images/whisper-assistant.png", 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/martin-opensky/whisper-assistant-vscode.git" 11 | }, 12 | "engines": { 13 | "vscode": "^1.70.0" 14 | }, 15 | "categories": [ 16 | "Other" 17 | ], 18 | "activationEvents": [ 19 | "onStartupFinished", 20 | "onDidChangeWorkspaceFolders" 21 | ], 22 | "main": "./out/extension.js", 23 | "contributes": { 24 | "commands": [ 25 | { 26 | "command": "whisperAssistant.toggleRecording", 27 | "title": "Toggle Recording" 28 | } 29 | ], 30 | "keybindings": [ 31 | { 32 | "command": "whisperAssistant.toggleRecording", 33 | "key": "ctrl+m", 34 | "mac": "cmd+m" 35 | } 36 | ], 37 | "configuration": { 38 | "type": "object", 39 | "title": "Whisper Assistant Settings", 40 | "properties": { 41 | "whisper-assistant.apiProvider": { 42 | "type": "string", 43 | "default": "localhost", 44 | "enum": [ 45 | "localhost", 46 | "openai", 47 | "groq" 48 | ], 49 | "description": "Select the API provider for transcription" 50 | }, 51 | "whisper-assistant.apiKey": { 52 | "type": "string", 53 | "default": "localhost-key-must-be-set", 54 | "description": "API key for the selected provider (must be set for localhost)" 55 | }, 56 | "whisper-assistant.customEndpoint": { 57 | "type": "string", 58 | "default": "http://localhost:4444", 59 | "description": "Custom endpoint URL (localhost only)" 60 | }, 61 | "whisper-assistant.customRecordingCommand": { 62 | "type": "string", 63 | "default": "", 64 | "description": "Custom recording command (must include $AUDIO_FILE placeholder). Leave empty to use sox (default). Example for macOS: 'ffmpeg -f avfoundation -i :1 -ac 1 -ar 16000 -sample_fmt s16 $AUDIO_FILE'" 65 | }, 66 | "whisper-assistant.model": { 67 | "type": ["string", "null"], 68 | "default": null, 69 | "description": "Specify the Whisper model to use for transcription. Leave as null to use the provider's default model. Examples: 'whisper-1', 'whisper-large-v3-turbo', or any other model supported by your provider." 70 | } 71 | } 72 | } 73 | }, 74 | "scripts": { 75 | "vscode:prepublish": "yarn run compile", 76 | "compile": "tsc -p ./", 77 | "watch": "tsc -watch -p ./", 78 | "pretest": "yarn run compile && yarn run lint && rm -rf .vscode-test", 79 | "lint": "eslint src --ext ts", 80 | "test": "node ./out/test/runTest.js", 81 | "package": "vsce package", 82 | "publish": "vsce package && vsce publish", 83 | "clean": "rm -rf out .vscode-test" 84 | }, 85 | "devDependencies": { 86 | "@types/mocha": "^10.0.1", 87 | "@types/node": "16.x", 88 | "@types/vscode": "^1.70.0", 89 | "@typescript-eslint/eslint-plugin": "^6.4.1", 90 | "@typescript-eslint/parser": "^6.4.1", 91 | "@vscode/test-electron": "^2.3.4", 92 | "@vscode/vsce": "^2.24.0", 93 | "eslint": "^8.47.0", 94 | "glob": "^10.3.3", 95 | "mocha": "^10.2.0", 96 | "openai": "^4.90.0", 97 | "typescript": "^5.1.6" 98 | }, 99 | "dependencies": { 100 | "openai": "^4.90.0" 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /src/test/suite/extension.test.ts: -------------------------------------------------------------------------------- 1 | import * as assert from 'assert'; 2 | import * as vscode from 'vscode'; 3 | import * as fs from 'fs'; 4 | import * as path from 'path'; 5 | import { state } from '../../extension'; 6 | import SpeechTranscription from '../../speech-transcription'; 7 | 8 | suite('Extension Test Suite', () => { 9 | let outputChannel: vscode.OutputChannel; 10 | let storagePath: string; 11 | 12 | setup(() => { 13 | outputChannel = vscode.window.createOutputChannel('Test Output'); 14 | storagePath = path.join(__dirname, 'test-storage'); 15 | if (!fs.existsSync(storagePath)) { 16 | fs.mkdirSync(storagePath, { recursive: true }); 17 | } 18 | }); 19 | 20 | teardown(() => { 21 | outputChannel.dispose(); 22 | if (fs.existsSync(storagePath)) { 23 | fs.rmSync(storagePath, { recursive: true, force: true }); 24 | } 25 | }); 26 | 27 | test('SpeechTranscription initialization', () => { 28 | const speechTranscription = new SpeechTranscription( 29 | storagePath, 30 | outputChannel, 31 | ); 32 | assert.strictEqual(typeof speechTranscription.getOutputDir, 'function'); 33 | }); 34 | 35 | test('Status bar item initialization', () => { 36 | assert.strictEqual(state.isRecording, false); 37 | assert.strictEqual(state.isTranscribing, false); 38 | if (state.myStatusBarItem) { 39 | assert.strictEqual(state.myStatusBarItem.text, '$(quote)'); 40 | } 41 | }); 42 | 43 | test('API configuration', async () => { 44 | // Set test configuration 45 | await vscode.workspace 46 | .getConfiguration('whisper-assistant') 47 | .update('apiProvider', 'openai', vscode.ConfigurationTarget.Global); 48 | await vscode.workspace 49 | .getConfiguration('whisper-assistant') 50 | .update('apiKey', 'test-key', vscode.ConfigurationTarget.Global); 51 | 52 | const speechTranscription = new SpeechTranscription( 53 | storagePath, 54 | outputChannel, 55 | ); 56 | 57 | // Test that initialization doesn't throw with valid config 58 | assert.doesNotThrow(() => { 59 | speechTranscription.getOutputDir(); 60 | }); 61 | 62 | // Reset test configuration 63 | await vscode.workspace 64 | .getConfiguration('whisper-assistant') 65 | .update('apiProvider', undefined, vscode.ConfigurationTarget.Global); 66 | await vscode.workspace 67 | .getConfiguration('whisper-assistant') 68 | .update('apiKey', undefined, vscode.ConfigurationTarget.Global); 69 | }); 70 | 71 | test('Recording state management', async () => { 72 | const speechTranscription = new SpeechTranscription( 73 | storagePath, 74 | outputChannel, 75 | ); 76 | 77 | // Mock recording process 78 | state.isRecording = true; 79 | state.recordingStartTime = Date.now(); 80 | assert.strictEqual(state.isRecording, true); 81 | 82 | // Stop recording 83 | await speechTranscription.stopRecording(); 84 | assert.strictEqual(state.recordingProcess, null); 85 | }); 86 | 87 | test('Temp directory cleanup', () => { 88 | const speechTranscription = new SpeechTranscription( 89 | storagePath, 90 | outputChannel, 91 | ); 92 | 93 | // Create test files 94 | const tempDir = path.join(storagePath, 'temp'); 95 | const testFile = path.join(tempDir, 'test.txt'); 96 | fs.writeFileSync(testFile, 'test content'); 97 | 98 | // Run cleanup 99 | speechTranscription.cleanup(); 100 | 101 | // Verify cleanup 102 | assert.strictEqual(fs.existsSync(tempDir), false); 103 | }); 104 | 105 | test('Error handling for missing API key', () => { 106 | // Clear API key configuration 107 | vscode.workspace 108 | .getConfiguration('whisper-assistant') 109 | .update('apiKey', '', vscode.ConfigurationTarget.Global); 110 | 111 | assert.throws(() => { 112 | new SpeechTranscription(storagePath, outputChannel); 113 | }, /API key not configured/); 114 | }); 115 | 116 | test('API provider selection', async () => { 117 | // Test each provider 118 | const providers = ['openai', 'groq', 'localhost']; 119 | 120 | for (const provider of providers) { 121 | await vscode.workspace 122 | .getConfiguration('whisper-assistant') 123 | .update('apiProvider', provider, vscode.ConfigurationTarget.Global); 124 | await vscode.workspace 125 | .getConfiguration('whisper-assistant') 126 | .update('apiKey', 'test-key', vscode.ConfigurationTarget.Global); 127 | 128 | const speechTranscription = new SpeechTranscription( 129 | storagePath, 130 | outputChannel, 131 | ); 132 | 133 | assert.doesNotThrow(() => { 134 | speechTranscription.getOutputDir(); 135 | }); 136 | } 137 | 138 | // Reset configuration 139 | await vscode.workspace 140 | .getConfiguration('whisper-assistant') 141 | .update('apiProvider', undefined, vscode.ConfigurationTarget.Global); 142 | await vscode.workspace 143 | .getConfiguration('whisper-assistant') 144 | .update('apiKey', undefined, vscode.ConfigurationTarget.Global); 145 | }); 146 | }); 147 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | import SpeechTranscription, { Transcription } from './speech-transcription'; 3 | import * as fs from 'fs'; 4 | 5 | interface ExtensionState { 6 | myStatusBarItem: vscode.StatusBarItem | undefined; 7 | isRecording: boolean; 8 | isTranscribing: boolean; 9 | speechTranscription: SpeechTranscription | undefined; 10 | workspacePath: string | undefined; 11 | outputDir: string | undefined; 12 | recordingStartTime: number | undefined; 13 | outputChannel?: vscode.OutputChannel; 14 | recordingProcess: any; 15 | recordingTimerInterval: NodeJS.Timeout | undefined; 16 | } 17 | 18 | export const state: ExtensionState = { 19 | myStatusBarItem: undefined, 20 | isRecording: false, 21 | isTranscribing: false, 22 | speechTranscription: undefined, 23 | workspacePath: undefined, 24 | outputDir: undefined, 25 | recordingStartTime: undefined, 26 | recordingProcess: null, 27 | recordingTimerInterval: undefined, 28 | }; 29 | 30 | export async function activate(context: vscode.ExtensionContext) { 31 | try { 32 | // Create output channel 33 | const outputChannel = 34 | vscode.window.createOutputChannel('Whisper Assistant'); 35 | outputChannel.appendLine('Activating Whisper Assistant...'); 36 | state.outputChannel = outputChannel; 37 | 38 | // Get the storage path for the extension 39 | const storagePath = context.globalStorageUri.fsPath; 40 | outputChannel.appendLine(`Storage path: ${storagePath}`); 41 | 42 | // Ensure storage directory exists 43 | if (!fs.existsSync(storagePath)) { 44 | fs.mkdirSync(storagePath, { recursive: true }); 45 | outputChannel.appendLine('Created storage directory'); 46 | } 47 | 48 | // Initialize SpeechTranscription with the storage path 49 | state.speechTranscription = new SpeechTranscription( 50 | storagePath, 51 | outputChannel, 52 | ); 53 | outputChannel.appendLine('Initialized SpeechTranscription'); 54 | 55 | // Check if Sox is installed (we still need this for recording) 56 | const isSoxInstalled = await state.speechTranscription?.checkIfInstalled( 57 | 'sox', 58 | ); 59 | outputChannel.appendLine( 60 | `Sox installation status: ${ 61 | isSoxInstalled ? 'installed' : 'not installed' 62 | }`, 63 | ); 64 | 65 | if (!isSoxInstalled) { 66 | const message = 67 | 'SoX is not installed. Please install Sox for this extension to work properly.'; 68 | vscode.window.showErrorMessage(message); 69 | outputChannel.appendLine(message); 70 | } 71 | 72 | // Initialize the extension regardless of Sox installation 73 | registerCommands(context); 74 | outputChannel.appendLine('Registered commands'); 75 | 76 | initializeStatusBarItem(); 77 | outputChannel.appendLine('Initialized status bar item'); 78 | 79 | updateStatusBarItem(); 80 | outputChannel.appendLine('Updated status bar item'); 81 | 82 | if (state.myStatusBarItem !== undefined) { 83 | context.subscriptions.push(state.myStatusBarItem); 84 | outputChannel.appendLine('Added status bar item to subscriptions'); 85 | } 86 | 87 | outputChannel.appendLine('Extension activated successfully!'); 88 | } catch (error) { 89 | const errorMessage = `Error activating extension: ${error}`; 90 | console.error(errorMessage); 91 | // Create a new output channel if one doesn't exist 92 | if (!state.outputChannel) { 93 | state.outputChannel = 94 | vscode.window.createOutputChannel('Whisper Assistant'); 95 | state.outputChannel.show(true); 96 | } 97 | state.outputChannel.appendLine(errorMessage); 98 | state.outputChannel.show(true); 99 | } 100 | } 101 | 102 | export function initializeStatusBarItem(): void { 103 | // create a new status bar item that we can now manage 104 | state.myStatusBarItem = vscode.window.createStatusBarItem( 105 | vscode.StatusBarAlignment.Right, 106 | 1, 107 | ); 108 | state.myStatusBarItem.command = 'whisperAssistant.toggleRecording'; 109 | state.myStatusBarItem.show(); // Make sure the status bar item is shown 110 | } 111 | 112 | export function initializeWorkspace(): void { 113 | const workspaceFolders = vscode.workspace.workspaceFolders; 114 | if (workspaceFolders !== undefined) { 115 | state.workspacePath = workspaceFolders[0].uri.fsPath; 116 | const whisperDir = `${state.workspacePath}/.whisper`; 117 | if (!fs.existsSync(whisperDir)) { 118 | fs.mkdirSync(whisperDir); 119 | } 120 | state.outputDir = `${state.workspacePath}/.whisper`; 121 | } 122 | } 123 | 124 | function registerCommands(context: vscode.ExtensionContext): void { 125 | let toggleRecordingDisposable = vscode.commands.registerCommand( 126 | 'whisperAssistant.toggleRecording', 127 | toggleRecordingCommand, 128 | ); 129 | context.subscriptions.push(toggleRecordingDisposable); 130 | } 131 | 132 | export async function toggleRecordingCommand(): Promise { 133 | if (!state.outputChannel) { 134 | state.outputChannel = 135 | vscode.window.createOutputChannel('Whisper Assistant'); 136 | state.outputChannel.show(true); 137 | } 138 | state.outputChannel.appendLine('Toggle recording command triggered'); 139 | 140 | // Prevent action during transcription 141 | if (state.isTranscribing) { 142 | state.outputChannel.appendLine( 143 | 'Cannot start recording: transcription in progress', 144 | ); 145 | vscode.window.showInformationMessage( 146 | 'Whisper Assistant: Please wait for transcription to complete before starting a new recording.', 147 | ); 148 | return; 149 | } 150 | 151 | if (state.speechTranscription !== undefined) { 152 | if (!state.isRecording && !state.isTranscribing) { 153 | state.outputChannel.appendLine('Starting recording...'); 154 | const recordingStarted = state.speechTranscription.startRecording(); 155 | 156 | if (recordingStarted) { 157 | state.recordingStartTime = Date.now(); 158 | state.isRecording = true; 159 | updateStatusBarItem(); 160 | state.outputChannel.appendLine('Recording started'); 161 | 162 | // Clear any existing timer before starting a new one 163 | if (state.recordingTimerInterval) { 164 | clearInterval(state.recordingTimerInterval); 165 | } 166 | state.recordingTimerInterval = setInterval(updateStatusBarItem, 1000); 167 | } else { 168 | state.outputChannel.appendLine('Failed to start recording'); 169 | } 170 | } else if (state.isRecording) { 171 | state.outputChannel.appendLine('Stopping recording...'); 172 | 173 | // Clear the recording timer 174 | if (state.recordingTimerInterval) { 175 | clearInterval(state.recordingTimerInterval); 176 | state.recordingTimerInterval = undefined; 177 | } 178 | 179 | await state.speechTranscription.stopRecording(); 180 | state.isTranscribing = true; 181 | state.isRecording = false; 182 | state.outputChannel.appendLine('Recording stopped'); 183 | 184 | updateStatusBarItem(); 185 | 186 | // Get the current API provider 187 | const config = vscode.workspace.getConfiguration('whisper-assistant'); 188 | const provider = config.get('apiProvider') || 'localhost'; 189 | const message = `Transcribing using ${ 190 | provider.charAt(0).toUpperCase() + provider.slice(1) 191 | } API`; 192 | state.outputChannel.appendLine(message); 193 | 194 | const progressOptions = { 195 | location: vscode.ProgressLocation.Notification, 196 | cancellable: false, 197 | title: message, 198 | }; 199 | 200 | try { 201 | await vscode.window.withProgress(progressOptions, async (progress) => { 202 | const incrementData = initializeIncrementData(); 203 | const interval = startProgressInterval( 204 | progress, 205 | incrementData, 206 | message, 207 | ); 208 | 209 | try { 210 | if (state.speechTranscription !== undefined) { 211 | const transcription: Transcription | undefined = 212 | await state.speechTranscription.transcribeRecording(); 213 | 214 | if (transcription) { 215 | await vscode.env.clipboard.writeText(transcription.text); 216 | await vscode.commands.executeCommand( 217 | 'editor.action.clipboardPasteAction', 218 | ); 219 | } 220 | } 221 | } catch (error) { 222 | progress.report({ 223 | increment: 0, 224 | message: 'Transcription failed', 225 | }); 226 | throw error; // Re-throw to handle in outer catch 227 | } 228 | 229 | await finalizeProgress(progress, interval, incrementData); 230 | }); 231 | } catch (error) { 232 | // Handle any errors here 233 | if (state.myStatusBarItem) { 234 | state.myStatusBarItem.text = '$(error) Transcription failed'; 235 | setTimeout(() => updateStatusBarItem(), 3000); 236 | } 237 | } finally { 238 | // Always cleanup, even if there was an error 239 | if (state.speechTranscription !== undefined) { 240 | state.speechTranscription.deleteFiles(); 241 | } 242 | state.isTranscribing = false; 243 | state.recordingStartTime = undefined; 244 | // Small delay to ensure UI consistency 245 | setTimeout(() => updateStatusBarItem(), 100); 246 | } 247 | } 248 | } 249 | } 250 | 251 | function updateStatusBarItem(): void { 252 | if (state.myStatusBarItem === undefined) { 253 | return; 254 | } 255 | 256 | // Debug logging 257 | state.outputChannel?.appendLine( 258 | `UI update: isRecording=${state.isRecording}, isTranscribing=${state.isTranscribing}, recordingStartTime=${state.recordingStartTime}`, 259 | ); 260 | 261 | if (state.isRecording && state.recordingStartTime !== undefined) { 262 | const recordingDuration = Math.floor( 263 | (Date.now() - state.recordingStartTime) / 1000, 264 | ); 265 | const minutes = Math.floor(recordingDuration / 60); 266 | const seconds = recordingDuration % 60; 267 | state.myStatusBarItem.text = `$(stop) ${minutes}:${ 268 | seconds < 10 ? '0' + seconds : seconds 269 | }`; 270 | } else { 271 | state.myStatusBarItem.text = state.isTranscribing 272 | ? `$(loading~spin) Whisper` 273 | : `$(mic) Whisper`; 274 | } 275 | } 276 | 277 | function initializeIncrementData(): { 278 | increment: number; 279 | incrementInterval: number; 280 | } { 281 | let increment: number = 0; 282 | const recordingDuration: number = state.recordingStartTime 283 | ? (Date.now() - state.recordingStartTime) / 1000 284 | : 0; 285 | const secondsDuration: number = recordingDuration % 60; 286 | const transcriptionTime: number = secondsDuration * 0.2 + 10; // 20% of the recording time + 10 seconds 287 | const incrementInterval: number = transcriptionTime * 30; // interval time to increment the progress bar 288 | return { increment, incrementInterval }; 289 | } 290 | 291 | function startProgressInterval( 292 | progress: vscode.Progress<{ increment: number; message: string }>, 293 | incrementData: { increment: number; incrementInterval: number }, 294 | message: string, 295 | ): NodeJS.Timeout { 296 | const interval = setInterval(() => { 297 | incrementData.increment += 1; 298 | 299 | progress.report({ 300 | increment: incrementData.increment, 301 | message: '', 302 | }); 303 | }, incrementData.incrementInterval); 304 | 305 | return interval; 306 | } 307 | 308 | async function finalizeProgress( 309 | progress: vscode.Progress<{ increment: number; message: string }>, 310 | interval: NodeJS.Timeout, 311 | incrementData: { increment: number; incrementInterval: number }, 312 | ): Promise { 313 | clearInterval(interval); 314 | 315 | progress.report({ 316 | increment: 100, 317 | message: 'Text has been saved to the clipboard.', 318 | }); 319 | 320 | // Don't reset state here - it's handled in the finally block to prevent race conditions 321 | await new Promise((resolve) => setTimeout(resolve, 500)); 322 | } 323 | 324 | // This method is called when your extension is deactivated 325 | export function deactivate() { 326 | // Clear any running timers 327 | if (state.recordingTimerInterval) { 328 | clearInterval(state.recordingTimerInterval); 329 | state.recordingTimerInterval = undefined; 330 | } 331 | 332 | // Dispose the status bar item 333 | if (state.myStatusBarItem) { 334 | state.myStatusBarItem.dispose(); 335 | } 336 | 337 | // Cleanup temporary files 338 | if (state.speechTranscription) { 339 | state.speechTranscription.cleanup(); 340 | } 341 | 342 | // Reset variables 343 | state.isRecording = false; 344 | state.isTranscribing = false; 345 | state.speechTranscription = undefined; 346 | state.workspacePath = undefined; 347 | state.outputDir = undefined; 348 | state.recordingStartTime = undefined; 349 | 350 | // Log the deactivation 351 | console.log('Your extension "Whisper Assistant" is now deactivated'); 352 | } 353 | 354 | export function initializeOutputChannel(): void { 355 | state.outputChannel = vscode.window.createOutputChannel('Whisper Assistant'); 356 | } 357 | -------------------------------------------------------------------------------- /src/speech-transcription.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | import { exec, ChildProcess, spawn } from 'child_process'; 3 | import * as fs from 'fs'; 4 | import * as path from 'path'; 5 | import { promisify } from 'util'; 6 | import OpenAI from 'openai'; 7 | 8 | const execAsync = promisify(exec); 9 | 10 | interface Segment { 11 | id: number; 12 | seek: number; 13 | start: number; 14 | end: number; 15 | text: string; 16 | tokens: number[]; 17 | temperature: number; 18 | } 19 | 20 | export interface Transcription { 21 | text: string; 22 | segments: Segment[]; 23 | language: string; 24 | } 25 | 26 | export type WhisperModel = 'whisper-1' | 'whisper-large-v3-turbo'; 27 | 28 | type ApiProvider = 'localhost' | 'openai' | 'groq'; 29 | 30 | interface ApiConfig { 31 | baseURL: string; 32 | apiKey: string; 33 | } 34 | 35 | const PROVIDER_MODELS: Record = { 36 | openai: 'whisper-1', 37 | groq: 'whisper-large-v3-turbo', 38 | localhost: 'whisper-1', // default to OpenAI model for localhost 39 | }; 40 | 41 | class SpeechTranscription { 42 | private fileName: string = 'recording'; 43 | private recordingProcess: ChildProcess | null = null; 44 | private tempDir: string; 45 | 46 | constructor( 47 | private storagePath: string, 48 | private outputChannel: vscode.OutputChannel, 49 | ) { 50 | // Create a temp directory within the storage path 51 | this.tempDir = path.join(this.storagePath, 'temp'); 52 | if (!fs.existsSync(this.tempDir)) { 53 | fs.mkdirSync(this.tempDir, { recursive: true }); 54 | } 55 | } 56 | 57 | private getApiConfig(): ApiConfig { 58 | const config = vscode.workspace.getConfiguration('whisper-assistant'); 59 | const provider = config.get('apiProvider') || 'localhost'; 60 | 61 | const apiKey = config.get('apiKey'); 62 | if (!apiKey) { 63 | vscode.window.showErrorMessage( 64 | `Whisper Assistant: API key not configured for ${provider}. Please set the API key in settings.`, 65 | ); 66 | throw new Error(`API key not configured for ${provider}`); 67 | } 68 | 69 | const baseURLs: Record = { 70 | localhost: 71 | (config.get('customEndpoint') || 'http://localhost:4444') + '/v1', 72 | openai: 'https://api.openai.com/v1', 73 | groq: 'https://api.groq.com/openai/v1', 74 | }; 75 | 76 | return { 77 | baseURL: baseURLs[provider], 78 | apiKey, 79 | }; 80 | } 81 | 82 | async checkIfInstalled(command: string): Promise { 83 | try { 84 | await execAsync(`${command} --help`); 85 | return true; 86 | } catch (error) { 87 | return false; 88 | } 89 | } 90 | 91 | getOutputDir(): string { 92 | return this.storagePath; 93 | } 94 | 95 | startRecording(): boolean { 96 | try { 97 | // Ensure temp directory exists 98 | if (!fs.existsSync(this.tempDir)) { 99 | fs.mkdirSync(this.tempDir, { recursive: true }); 100 | } 101 | 102 | const outputPath = path.join(this.tempDir, `${this.fileName}.wav`); 103 | 104 | // Check for custom recording command first 105 | const config = vscode.workspace.getConfiguration('whisper-assistant'); 106 | const customCommand = config.get('customRecordingCommand') || ''; 107 | 108 | if (customCommand.trim()) { 109 | this.outputChannel.appendLine( 110 | 'Whisper Assistant: Using custom recording command', 111 | ); 112 | return this.startCustomRecording(outputPath, customCommand); 113 | } else { 114 | this.outputChannel.appendLine( 115 | 'Whisper Assistant: Using sox for recording (default)', 116 | ); 117 | this.startSoxRecording(outputPath); 118 | return true; 119 | } 120 | } catch (error) { 121 | this.outputChannel.appendLine(`Whisper Assistant: error: ${error}`); 122 | return false; 123 | } 124 | } 125 | 126 | private startCustomRecording( 127 | outputPath: string, 128 | customCommand: string, 129 | ): boolean { 130 | // Validate that the command contains the required placeholder 131 | if (!customCommand.includes('$AUDIO_FILE')) { 132 | vscode.window.showErrorMessage( 133 | 'Whisper Assistant: Custom recording command must include $AUDIO_FILE placeholder. Example: ffmpeg -f avfoundation -i :1 -ac 1 -ar 16000 -sample_fmt s16 $AUDIO_FILE', 134 | ); 135 | return false; // Return false to indicate failure 136 | } 137 | 138 | // Replace the placeholder with the actual output path (properly quoted) 139 | const command = customCommand.replace(/\$AUDIO_FILE/g, `"${outputPath}"`); 140 | 141 | this.outputChannel.appendLine( 142 | `Whisper Assistant: Executing custom command: ${command}`, 143 | ); 144 | 145 | // Use platform-appropriate shell execution 146 | this.recordingProcess = this.spawnWithShell(command); 147 | this.setupProcessHandlers(); 148 | return true; // Return true to indicate success 149 | } 150 | 151 | private spawnWithShell(command: string): ChildProcess { 152 | const platform = process.platform; 153 | 154 | switch (platform) { 155 | case 'win32': 156 | // Use cmd.exe on Windows 157 | return spawn('cmd', ['/c', command]); 158 | 159 | case 'darwin': 160 | case 'linux': 161 | default: 162 | // Use sh on Unix-like systems (macOS, Linux, etc.) 163 | return spawn('sh', ['-c', command]); 164 | } 165 | } 166 | 167 | private startSoxRecording(outputPath: string): void { 168 | try { 169 | this.recordingProcess = spawn('sox', [ 170 | '-d', 171 | '-b', 172 | '16', 173 | '-e', 174 | 'signed', 175 | '-c', 176 | '1', 177 | '-r', 178 | '16k', 179 | outputPath, 180 | ]); 181 | this.setupProcessHandlers(); 182 | } catch (error) { 183 | this.outputChannel.appendLine( 184 | `Whisper Assistant: Error starting sox recording: ${error}`, 185 | ); 186 | vscode.window.showErrorMessage( 187 | 'Whisper Assistant: Failed to start sox recording. Please ensure sox is installed.', 188 | ); 189 | throw error; // Re-throw so startRecording() can return false 190 | } 191 | } 192 | 193 | private setupProcessHandlers(): void { 194 | if (this.recordingProcess) { 195 | // Only show initial configuration 196 | let initialConfigShown = false; 197 | 198 | this.recordingProcess.stderr?.on('data', (data) => { 199 | const message = data.toString(); 200 | // Only show the initial configuration message 201 | if (!initialConfigShown && message.includes('Input File')) { 202 | this.outputChannel.appendLine( 203 | `Whisper Assistant: Configuration: ${message.trim()}`, 204 | ); 205 | initialConfigShown = true; 206 | } 207 | }); 208 | 209 | this.recordingProcess.stdout?.on('data', (data) => { 210 | this.outputChannel.appendLine(`Whisper Assistant: stdout: ${data}`); 211 | }); 212 | 213 | this.recordingProcess.on('close', (code) => { 214 | if (code !== 0) { 215 | this.outputChannel.appendLine( 216 | `Whisper Assistant: Recording process exited with code ${code}`, 217 | ); 218 | } 219 | }); 220 | } 221 | } 222 | 223 | async stopRecording(): Promise { 224 | if (!this.recordingProcess) { 225 | this.outputChannel.appendLine( 226 | 'Whisper Assistant: No recording process found', 227 | ); 228 | return; 229 | } 230 | 231 | this.outputChannel.appendLine( 232 | 'Whisper Assistant: Stopping recording gracefully', 233 | ); 234 | 235 | // Try graceful shutdown first with SIGINT (Ctrl+C equivalent) 236 | this.recordingProcess.kill('SIGINT'); 237 | 238 | // Wait for graceful shutdown 239 | const gracefulShutdown = new Promise((resolve) => { 240 | const timeout = setTimeout(() => { 241 | resolve(); 242 | }, 2000); // 2 second timeout 243 | 244 | this.recordingProcess!.on('exit', () => { 245 | clearTimeout(timeout); 246 | resolve(); 247 | }); 248 | }); 249 | 250 | await gracefulShutdown; 251 | 252 | // If process is still running, force kill it 253 | if (this.recordingProcess && !this.recordingProcess.killed) { 254 | this.outputChannel.appendLine( 255 | 'Whisper Assistant: Force stopping recording process', 256 | ); 257 | this.recordingProcess.kill('SIGKILL'); 258 | } 259 | 260 | this.recordingProcess = null; 261 | } 262 | 263 | async transcribeRecording(): Promise { 264 | const config = vscode.workspace.getConfiguration('whisper-assistant'); 265 | const provider = config.get('apiProvider') || 'localhost'; 266 | 267 | let apiConfig: ApiConfig; 268 | try { 269 | apiConfig = this.getApiConfig(); 270 | } catch (error) { 271 | // getApiConfig already shows a user error message, just return 272 | return undefined; 273 | } 274 | 275 | try { 276 | this.outputChannel.appendLine( 277 | `Whisper Assistant: Transcribing recording using ${provider} API`, 278 | ); 279 | 280 | const audioFile = fs.createReadStream( 281 | path.join(this.tempDir, `${this.fileName}.wav`), 282 | ); 283 | 284 | // Get the configured model or fall back to provider default 285 | const configuredModel = config.get('model'); 286 | const model = configuredModel ?? PROVIDER_MODELS[provider]; 287 | 288 | this.outputChannel.appendLine( 289 | `Whisper Assistant: Using model ${model} for ${provider}`, 290 | ); 291 | 292 | const openai = new OpenAI({ 293 | baseURL: apiConfig.baseURL, 294 | apiKey: apiConfig.apiKey, 295 | maxRetries: 0, 296 | timeout: 30 * 1000, 297 | }); 298 | 299 | if (!openai) { 300 | vscode.window.showErrorMessage( 301 | 'Whisper Assistant: Failed to initialize OpenAI client. Please check your API configuration.', 302 | ); 303 | return undefined; 304 | } 305 | 306 | const transcription = await openai.audio.transcriptions.create({ 307 | file: audioFile, 308 | model: model, 309 | language: 'en', 310 | // eslint-disable-next-line @typescript-eslint/naming-convention 311 | response_format: 'verbose_json', 312 | }); 313 | 314 | // Convert response to our Transcription interface 315 | const result: Transcription = { 316 | text: transcription.text, 317 | segments: 318 | transcription.segments?.map((seg) => ({ 319 | id: seg.id, 320 | seek: 0, 321 | start: seg.start, 322 | end: seg.end, 323 | text: seg.text, 324 | tokens: [], 325 | temperature: 0, 326 | })) ?? [], 327 | language: transcription.language, 328 | }; 329 | 330 | // Save transcription to storage path 331 | await fs.promises.writeFile( 332 | path.join(this.tempDir, `${this.fileName}.json`), 333 | JSON.stringify(result, null, 2), 334 | ); 335 | 336 | this.outputChannel.appendLine( 337 | `Whisper Assistant: Transcription: ${result.text}`, 338 | ); 339 | 340 | if (result?.text?.length === 0) { 341 | return undefined; 342 | } 343 | 344 | return result; 345 | } catch (error) { 346 | // Log the error to output channel 347 | this.outputChannel.appendLine( 348 | `Whisper Assistant: error: ${error} (apiConfig.baseURL: ${apiConfig.baseURL})`, 349 | ); 350 | 351 | if (provider === 'localhost') { 352 | vscode.window.showErrorMessage( 353 | 'Whisper Assistant: Ensure local Whisper server is running.', 354 | ); 355 | } else if (error instanceof Error) { 356 | // Format the error message to be more user-friendly 357 | const errorMessage = error.message 358 | .replace(/\bError\b/i, '') // Remove redundant "Error" word 359 | .trim(); 360 | 361 | vscode.window.showErrorMessage(`Whisper Assistant: ${errorMessage}`); 362 | } 363 | 364 | return undefined; 365 | } 366 | } 367 | 368 | deleteFiles(): void { 369 | try { 370 | const wavFile = path.join(this.tempDir, `${this.fileName}.wav`); 371 | const jsonFile = path.join(this.tempDir, `${this.fileName}.json`); 372 | 373 | if (fs.existsSync(wavFile)) { 374 | fs.unlinkSync(wavFile); 375 | } 376 | if (fs.existsSync(jsonFile)) { 377 | fs.unlinkSync(jsonFile); 378 | } 379 | } catch (error) { 380 | this.outputChannel.appendLine( 381 | `Whisper Assistant: Error deleting files: ${error}`, 382 | ); 383 | } 384 | } 385 | 386 | // Add cleanup method for extension deactivation 387 | cleanup(): void { 388 | try { 389 | if (fs.existsSync(this.tempDir)) { 390 | fs.rmSync(this.tempDir, { recursive: true, force: true }); 391 | } 392 | } catch (error) { 393 | this.outputChannel.appendLine( 394 | `Whisper Assistant: Error cleaning up: ${error}`, 395 | ); 396 | } 397 | } 398 | } 399 | 400 | export default SpeechTranscription; 401 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Whisper Assistant 3 |

4 | 5 | # Whisper Assistant: Your Voice-Driven Coding Companion 6 | 7 | Whisper Assistant is an extension for Visual Studio Code that transcribes your spoken words into text within the VSCode & Cursor editor. This hands-free approach to coding allows you to focus on your ideas instead of your typing. 8 | 9 | ✨ **Features:** 10 | 11 | - Cross-platform audio recording with SoX (default) or custom recording commands 12 | - Multiple API options: Local Docker, OpenAI, or Groq 13 | - Configurable recording tools (ffmpeg, arecord, etc.) for advanced users 14 | - Optimized for integration with AI coding assistants like Cursor 15 | 16 | Whisper Assistant can also be integrated with other powerful AI tools, such as Chat GPT-4 or [Cursor](https://www.cursor.so/), to create a dynamic, AI-driven development environment. 17 | 18 | # Powered by OpenAI Whisper 19 | 20 | By default, Whisper Assistant utilizes Whisper AI on your _local machine_, offering a free voice transcription service. For this, the base model of Whisper is used, balancing accuracy and performance. **In the future, we will support other models.** 21 | 22 | There is also the option to use the OpenAI API or Groq API to transcribe your audio for remote transcription. **Note: This requires an API key.** 23 | 24 | For more details about Whisper, visit the [Whisper OpenAI GitHub page](https://github.com/openai/whisper). 25 | 26 | ## Getting Started: Installation Instructions 27 | 28 | To install and setup Whisper Assistant, follow these steps: 29 | 30 | 1. **Install a recording tool**: Whisper Assistant uses SoX by default for microphone recording, but you can also configure a custom recording command using alternatives like ffmpeg. 31 | 32 | ### Option A: SoX (Default - Recommended) 33 | 34 | - **MacOS**: Using the Homebrew package manager: 35 | ```bash 36 | brew install sox 37 | ``` 38 | - **Windows**: Using the Chocolatey package manager: 39 | ```bash 40 | choco install sox.portable 41 | ``` 42 | **Note for Windows Users:** Some users have reported issues with newer SoX versions not recognizing the default audio device. If you encounter this, installing version 14.4.1 specifically might resolve the problem: 43 | ```bash 44 | choco install sox.portable --version=14.4.1 45 | ``` 46 | - **Ubuntu/Debian**: 47 | ```bash 48 | sudo apt install sox 49 | ``` 50 | - **Other Linux distributions**: Use your package manager (e.g., `yum install sox`, `pacman -S sox`) 51 | 52 | ### Option B: Custom Recording Command (Alternative) 53 | 54 | **Linux users experiencing audio cutoff issues with SoX can use ffmpeg instead:** 55 | 56 | - **Ubuntu/Debian**: 57 | ```bash 58 | sudo apt install ffmpeg 59 | ``` 60 | - **MacOS**: 61 | ```bash 62 | brew install ffmpeg 63 | ``` 64 | - **Windows**: 65 | ```bash 66 | choco install ffmpeg 67 | ``` 68 | 69 | After installation, configure the custom recording command in VS Code settings (see [Custom Recording Commands](#custom-recording-commands) section below). 70 | 71 | 2. Install Docker to enable the local Whisper model or use the OpenAI API or Groq API for remote transcription. 72 | - If using local transcription, follow the instructions in the [Local Development with Faster Whisper](#local-development-with-faster-whisper) section. 73 | - If using remote transcription, follow the instructions in the [Multiple API Options](#multiple-api-options) section. 74 | 3. Install the Whisper Assistant extension into Visual Studio Code or Cursor. 75 | 76 | # How to Use Whisper Assistant 77 | 78 | 1. **Initialization**: Upon loading Visual Studio Code, the extension verifies the correct installation of SoX (or your custom recording command if configured). If any issues are detected, an error message will be displayed. 79 | 80 | Once initialization is complete, a microphone icon will appear in the bottom right status bar. 81 | 82 | Whisper Assistant icon 83 | 84 | 2. **Starting the Recording**: Activate the extension by clicking on the quote icon or using the shortcut `Command+M` (for Mac) or `Control+M` (for Windows). You can record for as long as you like, but remember, the longer the recording, the longer the transcription process. The recording time will be displayed in the status bar. 85 | 86 | Recording icon 87 | 88 | 3. **Stopping the Recording**: Stop the recording using the same shortcut (`Command+M` or `Control+M`). The extension icon in the status bar will change to a loading icon, and a progress message will be displayed, indicating that the transcription is underway. 89 | 90 | Transcribing 91 | 92 | 4. **Transcription**: Once the transcription is complete, the text will be saved to the clipboard. This allows you to use the transcription in any program, not just within Visual Studio Code. If an editor is active, the transcription will be pasted there automatically. 93 | 94 | Transcribed 95 | 96 | **Tip**: A good microphone will improve transcription accuracy, although it is not a requirement. 97 | 98 | **Tip**: For an optimal experience, consider using the Cursor.so application to directly call the Chat GPT-4 API for code instructions. This allows you to use your voice to instruct GPT to refactor your code, write unit tests, and implement various improvements. 99 | 100 | ## Custom Recording Commands 101 | 102 | Whisper Assistant uses SoX by default, but you can configure a custom recording command if you prefer alternatives like ffmpeg or need to work around platform-specific issues. 103 | 104 | ### When to Use Custom Recording Commands 105 | 106 | - **Linux users experiencing audio cutoff**: Some Linux distributions have issues with SoX cutting off the last few seconds of recordings 107 | - **Advanced users**: Want to use specific audio settings or recording tools 108 | - **Specific microphone requirements**: Need to target a particular audio device 109 | 110 | ### Configuration 111 | 112 | 1. Open VS Code settings (`Cmd/Ctrl + ,`) 113 | 2. Search for "Whisper Assistant" 114 | 3. Find "Custom Recording Command" 115 | 4. Enter your command with the `$AUDIO_FILE` placeholder 116 | 117 | **Important**: Your command MUST include `$AUDIO_FILE` where the output file should be saved. 118 | 119 | ### Platform-Specific Examples 120 | 121 | #### macOS (ffmpeg) 122 | 123 | ```bash 124 | ffmpeg -f avfoundation -i :1 -ac 1 -ar 16000 -sample_fmt s16 $AUDIO_FILE 125 | ``` 126 | 127 | _Note: Replace `:1` with the appropriate device number from `ffmpeg -f avfoundation -list_devices true -i ""`_ 128 | 129 | #### Linux (ffmpeg with PulseAudio) 130 | 131 | ```bash 132 | ffmpeg -f pulse -i default -ac 1 -ar 16000 -sample_fmt s16 $AUDIO_FILE 133 | ``` 134 | 135 | #### Linux (ffmpeg with ALSA) 136 | 137 | ```bash 138 | ffmpeg -f alsa -i default -ac 1 -ar 16000 -sample_fmt s16 $AUDIO_FILE 139 | ``` 140 | 141 | #### Windows (ffmpeg) 142 | 143 | ```bash 144 | ffmpeg -f dshow -i audio="Microphone" -ac 1 -ar 16000 -sample_fmt s16 $AUDIO_FILE 145 | ``` 146 | 147 | #### Alternative Tools 148 | 149 | **Linux with arecord:** 150 | 151 | ```bash 152 | arecord -f S16_LE -c 1 -r 16000 $AUDIO_FILE 153 | ``` 154 | 155 | **Any platform with custom settings:** 156 | 157 | ```bash 158 | sox -t pulseaudio default -c 1 -r 16000 $AUDIO_FILE gain -3 159 | ``` 160 | 161 | ### Troubleshooting Custom Commands 162 | 163 | - **Command validation error**: Ensure your command includes `$AUDIO_FILE` 164 | - **No audio recorded**: Check your audio device permissions and microphone access 165 | - **Command not found**: Verify the recording tool (ffmpeg, arecord, etc.) is installed and in your PATH 166 | - **Still experiencing cutoffs**: Try adjusting buffer settings or switching recording tools 167 | 168 | ### Finding Your Audio Device 169 | 170 | **macOS (ffmpeg):** 171 | 172 | ```bash 173 | ffmpeg -f avfoundation -list_devices true -i "" 174 | ``` 175 | 176 | **Linux (PulseAudio):** 177 | 178 | ```bash 179 | pactl list sources short 180 | ``` 181 | 182 | **Linux (ALSA):** 183 | 184 | ```bash 185 | arecord -l 186 | ``` 187 | 188 | **Windows (ffmpeg):** 189 | 190 | ```bash 191 | ffmpeg -list_devices true -f dshow -i dummy 192 | ``` 193 | 194 | ## Using Whisper Assistant with Cursor.so 195 | 196 | To enhance your development experience with Cursor.so and Whisper Assistant, follow these simple steps: 197 | 198 | 1. Start the recording: Press `Command+M` (Mac) or `Control+M` (Windows). 199 | 2. Speak your instructions clearly. 200 | 3. Stop the recording: Press `Command+M` (Mac) or `Control+M` (Windows). 201 | _Note: This initiates the transcription process._ 202 | 4. Open the Cursor dialog: Press `Command+K` or `Command+L`. 203 | _Important: Do this **before** the transcription completes._ 204 | 5. The transcribed text will automatically populate the Cursor dialog. Here, you can edit the text or add files/docs, then press `Enter` to execute the GPT query. 205 | 206 | By integrating Cursor.so with Whisper Assistant, you can provide extensive instructions without the need for typing, significantly enhancing your development workflow. 207 | 208 | # Platform Compatibility 209 | 210 | Whisper Assistant has been tested and supports: 211 | 212 | - **macOS**: Full support with SoX (default) and ffmpeg (custom) 213 | - **Windows**: Full support with SoX (default) and ffmpeg (custom) 214 | - **Linux**: Full support with SoX (default) and ffmpeg (custom) - _Note: Some distributions may experience audio cutoff issues with SoX, for which ffmpeg is recommended_ 215 | 216 | If you encounter any platform-specific issues, please consider using the [custom recording command](#custom-recording-commands) feature or report the issue on our GitHub repository. 217 | 218 | ## Local Development with Faster Whisper 219 | 220 | This extension supports using a local Faster Whisper model through Docker. This provides fast transcription locally and doesn't require an API key. 221 | 222 | ### Quick Start with Docker 223 | 224 | To get started with local transcription, use our Docker image: 225 | 226 | ```bash 227 | docker run -d -p 4444:4444 --name whisper-assistant martinopensky/whisper-assistant:latest 228 | ``` 229 | 230 | Then configure VSCode: 231 | 232 | 1. Open VSCode settings (File > Preferences > Settings) 233 | 2. Search for "Whisper Assistant" 234 | 3. Set "Api Provider" to "localhost" 235 | 4. Set "Api Key" to any non-empty string (e.g., "localhost-dummy-key") 236 | 237 | That's it! You can now use the extension with your local Whisper server. 238 | 239 | ### Docker Configuration Options 240 | 241 | #### Memory Limits 242 | 243 | If you're experiencing memory issues, you can limit the container's memory: 244 | 245 | ```bash 246 | docker run -d -p 4444:4444 --memory=4g --name whisper-assistant martinopensky/whisper-assistant:latest 247 | ``` 248 | 249 | #### GPU Support 250 | 251 | If you have a CUDA-capable GPU: 252 | 253 | ```bash 254 | docker run -d -p 4444:4444 --gpus all --name whisper-assistant martinopensky/whisper-assistant:latest 255 | ``` 256 | 257 | #### Container Management 258 | 259 | ```bash 260 | # Stop the server 261 | docker stop whisper-assistant 262 | 263 | # Start the server 264 | docker start whisper-assistant 265 | 266 | # Remove the container 267 | docker rm whisper-assistant 268 | 269 | # View logs 270 | docker logs whisper-assistant 271 | 272 | # Update to latest version 273 | docker pull martinopensky/whisper-assistant:latest 274 | docker stop whisper-assistant 275 | docker rm whisper-assistant 276 | docker run -d -p 4444:4444 martinopensky/whisper-assistant:latest 277 | ``` 278 | 279 | ### Troubleshooting 280 | 281 | 1. Check if the server is running: 282 | 283 | ```bash 284 | curl http://localhost:4444/v1/health 285 | ``` 286 | 287 | 2. Common issues: 288 | - **First startup delay**: The model is downloaded on first use, which may take a few minutes 289 | - **Memory issues**: Try using the `--memory=4g` flag as shown above 290 | - **Port conflicts**: If port 4444 is in use, you can map to a different port: 291 | ```bash 292 | docker run -d -p 5000:4444 martinopensky/whisper-assistant:latest 293 | ``` 294 | Then update the custom endpoint in VSCode settings to `http://localhost:5000` 295 | 296 | ### Advanced: Building from Source 297 | 298 | If you want to customize the server, you can build from our Dockerfile: 299 | 300 | 1. Get the Dockerfile from our repository 301 | 2. Build the image: 302 | ```bash 303 | docker build -t whisper-assistant-local . 304 | docker run -d -p 4444:4444 whisper-assistant-local 305 | ``` 306 | 307 | # Multiple API Options 308 | 309 | Whisper Assistant offers three ways to transcribe your audio: 310 | 311 | 1. **Local Docker Server** (Default): Run Whisper locally using our Docker container for privacy and no remote API costs 312 | 2. **OpenAI Cloud API**: A powerful cloud option using OpenAI's Whisper-1 model for fast, accurate transcription (requires API key) 313 | 3. **Groq Cloud API**: A powerful cloud option using Groq's Whisper Large v3 Turbo model for fast, accurate transcription (requires API key) 314 | 315 | ## Configuring the API Provider 316 | 317 | 1. Open VSCode settings (File > Preferences > Settings) 318 | 2. Search for "Whisper Assistant" 319 | 3. Set "Api Provider" to one of: 320 | - `localhost` (default) 321 | - `openai` 322 | - `groq` 323 | 4. Enter your API key: 324 | - For localhost: Any non-empty string (e.g., "localhost-dummy-key") 325 | - For OpenAI: Get your key from [OpenAI's console](https://platform.openai.com/api-keys) 326 | - For Groq: Get your key from [GROQ's console](https://console.groq.com) 327 | 328 | When using localhost (default), you can customize the endpoint URL in settings if you're running the Docker container on a different port or host. 329 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@azure/abort-controller@^2.0.0": 6 | version "2.1.2" 7 | resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-2.1.2.tgz#42fe0ccab23841d9905812c58f1082d27784566d" 8 | integrity sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA== 9 | dependencies: 10 | tslib "^2.6.2" 11 | 12 | "@azure/core-auth@^1.4.0", "@azure/core-auth@^1.8.0", "@azure/core-auth@^1.9.0": 13 | version "1.9.0" 14 | resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.9.0.tgz#ac725b03fabe3c892371065ee9e2041bee0fd1ac" 15 | integrity sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw== 16 | dependencies: 17 | "@azure/abort-controller" "^2.0.0" 18 | "@azure/core-util" "^1.11.0" 19 | tslib "^2.6.2" 20 | 21 | "@azure/core-client@^1.9.2": 22 | version "1.9.3" 23 | resolved "https://registry.yarnpkg.com/@azure/core-client/-/core-client-1.9.3.tgz#9ca8f3bdc730d10d58f65c9c2c9ca992bc15bb67" 24 | integrity sha512-/wGw8fJ4mdpJ1Cum7s1S+VQyXt1ihwKLzfabS1O/RDADnmzVc01dHn44qD0BvGH6KlZNzOMW95tEpKqhkCChPA== 25 | dependencies: 26 | "@azure/abort-controller" "^2.0.0" 27 | "@azure/core-auth" "^1.4.0" 28 | "@azure/core-rest-pipeline" "^1.9.1" 29 | "@azure/core-tracing" "^1.0.0" 30 | "@azure/core-util" "^1.6.1" 31 | "@azure/logger" "^1.0.0" 32 | tslib "^2.6.2" 33 | 34 | "@azure/core-rest-pipeline@^1.17.0", "@azure/core-rest-pipeline@^1.9.1": 35 | version "1.19.1" 36 | resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.19.1.tgz#e740676444777a04dc55656d8660131dfd926924" 37 | integrity sha512-zHeoI3NCs53lLBbWNzQycjnYKsA1CVKlnzSNuSFcUDwBp8HHVObePxrM7HaX+Ha5Ks639H7chNC9HOaIhNS03w== 38 | dependencies: 39 | "@azure/abort-controller" "^2.0.0" 40 | "@azure/core-auth" "^1.8.0" 41 | "@azure/core-tracing" "^1.0.1" 42 | "@azure/core-util" "^1.11.0" 43 | "@azure/logger" "^1.0.0" 44 | http-proxy-agent "^7.0.0" 45 | https-proxy-agent "^7.0.0" 46 | tslib "^2.6.2" 47 | 48 | "@azure/core-tracing@^1.0.0", "@azure/core-tracing@^1.0.1": 49 | version "1.2.0" 50 | resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.2.0.tgz#7be5d53c3522d639cf19042cbcdb19f71bc35ab2" 51 | integrity sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg== 52 | dependencies: 53 | tslib "^2.6.2" 54 | 55 | "@azure/core-util@^1.11.0", "@azure/core-util@^1.6.1": 56 | version "1.11.0" 57 | resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.11.0.tgz#f530fc67e738aea872fbdd1cc8416e70219fada7" 58 | integrity sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g== 59 | dependencies: 60 | "@azure/abort-controller" "^2.0.0" 61 | tslib "^2.6.2" 62 | 63 | "@azure/identity@^4.1.0": 64 | version "4.8.0" 65 | resolved "https://registry.yarnpkg.com/@azure/identity/-/identity-4.8.0.tgz#686682683a470ccf4dbb2597ee234f9c5c483a40" 66 | integrity sha512-l9ALUGHtFB/JfsqmA+9iYAp2a+cCwdNO/cyIr2y7nJLJsz1aae6qVP8XxT7Kbudg0IQRSIMXj0+iivFdbD1xPA== 67 | dependencies: 68 | "@azure/abort-controller" "^2.0.0" 69 | "@azure/core-auth" "^1.9.0" 70 | "@azure/core-client" "^1.9.2" 71 | "@azure/core-rest-pipeline" "^1.17.0" 72 | "@azure/core-tracing" "^1.0.0" 73 | "@azure/core-util" "^1.11.0" 74 | "@azure/logger" "^1.0.0" 75 | "@azure/msal-browser" "^4.2.0" 76 | "@azure/msal-node" "^3.2.3" 77 | events "^3.0.0" 78 | jws "^4.0.0" 79 | open "^10.1.0" 80 | stoppable "^1.1.0" 81 | tslib "^2.2.0" 82 | 83 | "@azure/logger@^1.0.0": 84 | version "1.1.4" 85 | resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.1.4.tgz#223cbf2b424dfa66478ce9a4f575f59c6f379768" 86 | integrity sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ== 87 | dependencies: 88 | tslib "^2.6.2" 89 | 90 | "@azure/msal-browser@^4.2.0": 91 | version "4.8.0" 92 | resolved "https://registry.yarnpkg.com/@azure/msal-browser/-/msal-browser-4.8.0.tgz#888e5a375c07fe345eaf09e88b5f40c48b494b2d" 93 | integrity sha512-z7kJlMW3IAETyq82LDKJqr++IeOvU728q9lkuTFjEIPUWxnB1OlmuPCF32fYurxOnOnJeFEZxjbEzq8xyP0aag== 94 | dependencies: 95 | "@azure/msal-common" "15.3.0" 96 | 97 | "@azure/msal-common@15.3.0": 98 | version "15.3.0" 99 | resolved "https://registry.yarnpkg.com/@azure/msal-common/-/msal-common-15.3.0.tgz#cc75760f7929588b261b970a1dd1d292d0efdbc8" 100 | integrity sha512-lh+eZfibGwtQxFnx+mj6cYWn0pwA8tDnn8CBs9P21nC7Uw5YWRwfXaXdVQSMENZ5ojRqR+NzRaucEo4qUvs3pA== 101 | 102 | "@azure/msal-common@15.4.0": 103 | version "15.4.0" 104 | resolved "https://registry.yarnpkg.com/@azure/msal-common/-/msal-common-15.4.0.tgz#300779b88026ab7d60b4e9c368509a2ec0c20617" 105 | integrity sha512-reeIUDXt6Xc+FpCBDEbUFQWvJ6SjE0JwsGYIfa3ZCR6Tpzjc9J1v+/InQgfCeJzfTRd7PDJVxI6TSzOmOd7+Ag== 106 | 107 | "@azure/msal-node@^3.2.3": 108 | version "3.4.1" 109 | resolved "https://registry.yarnpkg.com/@azure/msal-node/-/msal-node-3.4.1.tgz#838dbc3de3fe8dae919b2de20c300d3b9b0ff425" 110 | integrity sha512-VlW6ygnKBIqUKIHnA/ubQ+F3rZ8aW3K6VA1bpZ90Ln0vlE4XaA6yGB/FibPJxet7gWinAG1oSpQqPN/PL9AqIw== 111 | dependencies: 112 | "@azure/msal-common" "15.4.0" 113 | jsonwebtoken "^9.0.0" 114 | uuid "^8.3.0" 115 | 116 | "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": 117 | version "4.5.1" 118 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz#b0fc7e06d0c94f801537fd4237edc2706d3b8e4c" 119 | integrity sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w== 120 | dependencies: 121 | eslint-visitor-keys "^3.4.3" 122 | 123 | "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": 124 | version "4.12.1" 125 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" 126 | integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== 127 | 128 | "@eslint/eslintrc@^2.1.4": 129 | version "2.1.4" 130 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" 131 | integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== 132 | dependencies: 133 | ajv "^6.12.4" 134 | debug "^4.3.2" 135 | espree "^9.6.0" 136 | globals "^13.19.0" 137 | ignore "^5.2.0" 138 | import-fresh "^3.2.1" 139 | js-yaml "^4.1.0" 140 | minimatch "^3.1.2" 141 | strip-json-comments "^3.1.1" 142 | 143 | "@eslint/js@8.57.1": 144 | version "8.57.1" 145 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" 146 | integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== 147 | 148 | "@humanwhocodes/config-array@^0.13.0": 149 | version "0.13.0" 150 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" 151 | integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== 152 | dependencies: 153 | "@humanwhocodes/object-schema" "^2.0.3" 154 | debug "^4.3.1" 155 | minimatch "^3.0.5" 156 | 157 | "@humanwhocodes/module-importer@^1.0.1": 158 | version "1.0.1" 159 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" 160 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 161 | 162 | "@humanwhocodes/object-schema@^2.0.3": 163 | version "2.0.3" 164 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" 165 | integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== 166 | 167 | "@isaacs/cliui@^8.0.2": 168 | version "8.0.2" 169 | resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" 170 | integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== 171 | dependencies: 172 | string-width "^5.1.2" 173 | string-width-cjs "npm:string-width@^4.2.0" 174 | strip-ansi "^7.0.1" 175 | strip-ansi-cjs "npm:strip-ansi@^6.0.1" 176 | wrap-ansi "^8.1.0" 177 | wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" 178 | 179 | "@nodelib/fs.scandir@2.1.5": 180 | version "2.1.5" 181 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 182 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 183 | dependencies: 184 | "@nodelib/fs.stat" "2.0.5" 185 | run-parallel "^1.1.9" 186 | 187 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 188 | version "2.0.5" 189 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 190 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 191 | 192 | "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": 193 | version "1.2.8" 194 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 195 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 196 | dependencies: 197 | "@nodelib/fs.scandir" "2.1.5" 198 | fastq "^1.6.0" 199 | 200 | "@pkgjs/parseargs@^0.11.0": 201 | version "0.11.0" 202 | resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" 203 | integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== 204 | 205 | "@types/json-schema@^7.0.12": 206 | version "7.0.15" 207 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" 208 | integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== 209 | 210 | "@types/mocha@^10.0.1": 211 | version "10.0.10" 212 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.10.tgz#91f62905e8d23cbd66225312f239454a23bebfa0" 213 | integrity sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q== 214 | 215 | "@types/node-fetch@^2.6.4": 216 | version "2.6.12" 217 | resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.12.tgz#8ab5c3ef8330f13100a7479e2cd56d3386830a03" 218 | integrity sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA== 219 | dependencies: 220 | "@types/node" "*" 221 | form-data "^4.0.0" 222 | 223 | "@types/node@*": 224 | version "22.14.0" 225 | resolved "https://registry.yarnpkg.com/@types/node/-/node-22.14.0.tgz#d3bfa3936fef0dbacd79ea3eb17d521c628bb47e" 226 | integrity sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA== 227 | dependencies: 228 | undici-types "~6.21.0" 229 | 230 | "@types/node@16.x": 231 | version "16.18.126" 232 | resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.126.tgz#27875faa2926c0f475b39a8bb1e546c0176f8d4b" 233 | integrity sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw== 234 | 235 | "@types/node@^18.11.18": 236 | version "18.19.86" 237 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.86.tgz#a7e1785289c343155578b9d84a0e3e924deb948b" 238 | integrity sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ== 239 | dependencies: 240 | undici-types "~5.26.4" 241 | 242 | "@types/semver@^7.5.0": 243 | version "7.7.0" 244 | resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" 245 | integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== 246 | 247 | "@types/vscode@^1.70.0": 248 | version "1.98.0" 249 | resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.98.0.tgz#5b6fa5bd99ba15313567d3847fb1177832fee08c" 250 | integrity sha512-+KuiWhpbKBaG2egF+51KjbGWatTH5BbmWQjSLMDCssb4xF8FJnW4nGH4nuAdOOfMbpD0QlHtI+C3tPq+DoKElg== 251 | 252 | "@typescript-eslint/eslint-plugin@^6.4.1": 253 | version "6.21.0" 254 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" 255 | integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== 256 | dependencies: 257 | "@eslint-community/regexpp" "^4.5.1" 258 | "@typescript-eslint/scope-manager" "6.21.0" 259 | "@typescript-eslint/type-utils" "6.21.0" 260 | "@typescript-eslint/utils" "6.21.0" 261 | "@typescript-eslint/visitor-keys" "6.21.0" 262 | debug "^4.3.4" 263 | graphemer "^1.4.0" 264 | ignore "^5.2.4" 265 | natural-compare "^1.4.0" 266 | semver "^7.5.4" 267 | ts-api-utils "^1.0.1" 268 | 269 | "@typescript-eslint/parser@^6.4.1": 270 | version "6.21.0" 271 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" 272 | integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== 273 | dependencies: 274 | "@typescript-eslint/scope-manager" "6.21.0" 275 | "@typescript-eslint/types" "6.21.0" 276 | "@typescript-eslint/typescript-estree" "6.21.0" 277 | "@typescript-eslint/visitor-keys" "6.21.0" 278 | debug "^4.3.4" 279 | 280 | "@typescript-eslint/scope-manager@6.21.0": 281 | version "6.21.0" 282 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" 283 | integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== 284 | dependencies: 285 | "@typescript-eslint/types" "6.21.0" 286 | "@typescript-eslint/visitor-keys" "6.21.0" 287 | 288 | "@typescript-eslint/type-utils@6.21.0": 289 | version "6.21.0" 290 | resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" 291 | integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== 292 | dependencies: 293 | "@typescript-eslint/typescript-estree" "6.21.0" 294 | "@typescript-eslint/utils" "6.21.0" 295 | debug "^4.3.4" 296 | ts-api-utils "^1.0.1" 297 | 298 | "@typescript-eslint/types@6.21.0": 299 | version "6.21.0" 300 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" 301 | integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== 302 | 303 | "@typescript-eslint/typescript-estree@6.21.0": 304 | version "6.21.0" 305 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" 306 | integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== 307 | dependencies: 308 | "@typescript-eslint/types" "6.21.0" 309 | "@typescript-eslint/visitor-keys" "6.21.0" 310 | debug "^4.3.4" 311 | globby "^11.1.0" 312 | is-glob "^4.0.3" 313 | minimatch "9.0.3" 314 | semver "^7.5.4" 315 | ts-api-utils "^1.0.1" 316 | 317 | "@typescript-eslint/utils@6.21.0": 318 | version "6.21.0" 319 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" 320 | integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== 321 | dependencies: 322 | "@eslint-community/eslint-utils" "^4.4.0" 323 | "@types/json-schema" "^7.0.12" 324 | "@types/semver" "^7.5.0" 325 | "@typescript-eslint/scope-manager" "6.21.0" 326 | "@typescript-eslint/types" "6.21.0" 327 | "@typescript-eslint/typescript-estree" "6.21.0" 328 | semver "^7.5.4" 329 | 330 | "@typescript-eslint/visitor-keys@6.21.0": 331 | version "6.21.0" 332 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" 333 | integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== 334 | dependencies: 335 | "@typescript-eslint/types" "6.21.0" 336 | eslint-visitor-keys "^3.4.1" 337 | 338 | "@ungap/structured-clone@^1.2.0": 339 | version "1.3.0" 340 | resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" 341 | integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== 342 | 343 | "@vscode/test-electron@^2.3.4": 344 | version "2.4.1" 345 | resolved "https://registry.yarnpkg.com/@vscode/test-electron/-/test-electron-2.4.1.tgz#5c2760640bf692efbdaa18bafcd35fb519688941" 346 | integrity sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ== 347 | dependencies: 348 | http-proxy-agent "^7.0.2" 349 | https-proxy-agent "^7.0.5" 350 | jszip "^3.10.1" 351 | ora "^7.0.1" 352 | semver "^7.6.2" 353 | 354 | "@vscode/vsce-sign-alpine-arm64@2.0.2": 355 | version "2.0.2" 356 | resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.2.tgz#4accc485e55aa6ff04b195b47f722ead57daa58e" 357 | integrity sha512-E80YvqhtZCLUv3YAf9+tIbbqoinWLCO/B3j03yQPbjT3ZIHCliKZlsy1peNc4XNZ5uIb87Jn0HWx/ZbPXviuAQ== 358 | 359 | "@vscode/vsce-sign-alpine-x64@2.0.2": 360 | version "2.0.2" 361 | resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.2.tgz#4a4b7b505b4cc0f58596394897c49a0bce0e540c" 362 | integrity sha512-n1WC15MSMvTaeJ5KjWCzo0nzjydwxLyoHiMJHu1Ov0VWTZiddasmOQHekA47tFRycnt4FsQrlkSCTdgHppn6bw== 363 | 364 | "@vscode/vsce-sign-darwin-arm64@2.0.2": 365 | version "2.0.2" 366 | resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz#10aa69feb7f81a3dc68c242038ca03eaff19c12e" 367 | integrity sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ== 368 | 369 | "@vscode/vsce-sign-darwin-x64@2.0.2": 370 | version "2.0.2" 371 | resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz#3315528f3ea1007a648b3320bff36a33a9e07aa5" 372 | integrity sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw== 373 | 374 | "@vscode/vsce-sign-linux-arm64@2.0.2": 375 | version "2.0.2" 376 | resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.2.tgz#ce5c5cfc99e3454b4fb770405812b46bd6dca870" 377 | integrity sha512-Ybeu7cA6+/koxszsORXX0OJk9N0GgfHq70Wqi4vv2iJCZvBrOWwcIrxKjvFtwyDgdeQzgPheH5nhLVl5eQy7WA== 378 | 379 | "@vscode/vsce-sign-linux-arm@2.0.2": 380 | version "2.0.2" 381 | resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.2.tgz#4142fda83e7130b31aedd8aa81e4daa6334323c2" 382 | integrity sha512-Fkb5jpbfhZKVw3xwR6t7WYfwKZktVGNXdg1m08uEx1anO0oUPUkoQRsNm4QniL3hmfw0ijg00YA6TrxCRkPVOQ== 383 | 384 | "@vscode/vsce-sign-linux-x64@2.0.2": 385 | version "2.0.2" 386 | resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.2.tgz#59ab93f322efb3cf49166d4e2e812789c3117428" 387 | integrity sha512-NsPPFVtLaTlVJKOiTnO8Cl78LZNWy0Q8iAg+LlBiCDEgC12Gt4WXOSs2pmcIjDYzj2kY4NwdeN1mBTaujYZaPg== 388 | 389 | "@vscode/vsce-sign-win32-arm64@2.0.2": 390 | version "2.0.2" 391 | resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.2.tgz#d095704a14b0404c0b6f696e9889e9a51b31a86c" 392 | integrity sha512-wPs848ymZ3Ny+Y1Qlyi7mcT6VSigG89FWQnp2qRYCyMhdJxOpA4lDwxzlpL8fG6xC8GjQjGDkwbkWUcCobvksQ== 393 | 394 | "@vscode/vsce-sign-win32-x64@2.0.2": 395 | version "2.0.2" 396 | resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.2.tgz#294ea72b44fedd694d49f5cef4c55bf3876dc257" 397 | integrity sha512-pAiRN6qSAhDM5SVOIxgx+2xnoVUePHbRNC7OD2aOR3WltTKxxF25OfpK8h8UQ7A0BuRkSgREbB59DBlFk4iAeg== 398 | 399 | "@vscode/vsce-sign@^2.0.0": 400 | version "2.0.5" 401 | resolved "https://registry.yarnpkg.com/@vscode/vsce-sign/-/vsce-sign-2.0.5.tgz#8850036476dc0d4e080d9c2d8325e3e97eff5193" 402 | integrity sha512-GfYWrsT/vypTMDMgWDm75iDmAOMe7F71sZECJ+Ws6/xyIfmB3ELVnVN+LwMFAvmXY+e6eWhR2EzNGF/zAhWY3Q== 403 | optionalDependencies: 404 | "@vscode/vsce-sign-alpine-arm64" "2.0.2" 405 | "@vscode/vsce-sign-alpine-x64" "2.0.2" 406 | "@vscode/vsce-sign-darwin-arm64" "2.0.2" 407 | "@vscode/vsce-sign-darwin-x64" "2.0.2" 408 | "@vscode/vsce-sign-linux-arm" "2.0.2" 409 | "@vscode/vsce-sign-linux-arm64" "2.0.2" 410 | "@vscode/vsce-sign-linux-x64" "2.0.2" 411 | "@vscode/vsce-sign-win32-arm64" "2.0.2" 412 | "@vscode/vsce-sign-win32-x64" "2.0.2" 413 | 414 | "@vscode/vsce@^2.24.0": 415 | version "2.32.0" 416 | resolved "https://registry.yarnpkg.com/@vscode/vsce/-/vsce-2.32.0.tgz#fc90fc28dc82614a8ab537de591e084b46ad2070" 417 | integrity sha512-3EFJfsgrSftIqt3EtdRcAygy/OJ3hstyI1cDmIgkU9CFZW5C+3djr6mfosndCUqcVYuyjmxOK1xmFp/Bq7+NIg== 418 | dependencies: 419 | "@azure/identity" "^4.1.0" 420 | "@vscode/vsce-sign" "^2.0.0" 421 | azure-devops-node-api "^12.5.0" 422 | chalk "^2.4.2" 423 | cheerio "^1.0.0-rc.9" 424 | cockatiel "^3.1.2" 425 | commander "^6.2.1" 426 | form-data "^4.0.0" 427 | glob "^7.0.6" 428 | hosted-git-info "^4.0.2" 429 | jsonc-parser "^3.2.0" 430 | leven "^3.1.0" 431 | markdown-it "^12.3.2" 432 | mime "^1.3.4" 433 | minimatch "^3.0.3" 434 | parse-semver "^1.1.1" 435 | read "^1.0.7" 436 | semver "^7.5.2" 437 | tmp "^0.2.1" 438 | typed-rest-client "^1.8.4" 439 | url-join "^4.0.1" 440 | xml2js "^0.5.0" 441 | yauzl "^2.3.1" 442 | yazl "^2.2.2" 443 | optionalDependencies: 444 | keytar "^7.7.0" 445 | 446 | abort-controller@^3.0.0: 447 | version "3.0.0" 448 | resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" 449 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== 450 | dependencies: 451 | event-target-shim "^5.0.0" 452 | 453 | acorn-jsx@^5.3.2: 454 | version "5.3.2" 455 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 456 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 457 | 458 | acorn@^8.9.0: 459 | version "8.14.1" 460 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" 461 | integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== 462 | 463 | agent-base@^7.1.0, agent-base@^7.1.2: 464 | version "7.1.3" 465 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" 466 | integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== 467 | 468 | agentkeepalive@^4.2.1: 469 | version "4.6.0" 470 | resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" 471 | integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== 472 | dependencies: 473 | humanize-ms "^1.2.1" 474 | 475 | ajv@^6.12.4: 476 | version "6.12.6" 477 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 478 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 479 | dependencies: 480 | fast-deep-equal "^3.1.1" 481 | fast-json-stable-stringify "^2.0.0" 482 | json-schema-traverse "^0.4.1" 483 | uri-js "^4.2.2" 484 | 485 | ansi-colors@^4.1.3: 486 | version "4.1.3" 487 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" 488 | integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== 489 | 490 | ansi-regex@^5.0.1: 491 | version "5.0.1" 492 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 493 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 494 | 495 | ansi-regex@^6.0.1: 496 | version "6.1.0" 497 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" 498 | integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== 499 | 500 | ansi-styles@^3.2.1: 501 | version "3.2.1" 502 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 503 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 504 | dependencies: 505 | color-convert "^1.9.0" 506 | 507 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 508 | version "4.3.0" 509 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 510 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 511 | dependencies: 512 | color-convert "^2.0.1" 513 | 514 | ansi-styles@^6.1.0: 515 | version "6.2.1" 516 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" 517 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 518 | 519 | anymatch@~3.1.2: 520 | version "3.1.3" 521 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 522 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 523 | dependencies: 524 | normalize-path "^3.0.0" 525 | picomatch "^2.0.4" 526 | 527 | argparse@^2.0.1: 528 | version "2.0.1" 529 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 530 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 531 | 532 | array-union@^2.1.0: 533 | version "2.1.0" 534 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 535 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 536 | 537 | asynckit@^0.4.0: 538 | version "0.4.0" 539 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 540 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 541 | 542 | azure-devops-node-api@^12.5.0: 543 | version "12.5.0" 544 | resolved "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz#38b9efd7c5ac74354fe4e8dbe42697db0b8e85a5" 545 | integrity sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og== 546 | dependencies: 547 | tunnel "0.0.6" 548 | typed-rest-client "^1.8.4" 549 | 550 | balanced-match@^1.0.0: 551 | version "1.0.2" 552 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 553 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 554 | 555 | base64-js@^1.3.1: 556 | version "1.5.1" 557 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 558 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 559 | 560 | binary-extensions@^2.0.0: 561 | version "2.3.0" 562 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" 563 | integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== 564 | 565 | bl@^4.0.3: 566 | version "4.1.0" 567 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" 568 | integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== 569 | dependencies: 570 | buffer "^5.5.0" 571 | inherits "^2.0.4" 572 | readable-stream "^3.4.0" 573 | 574 | bl@^5.0.0: 575 | version "5.1.0" 576 | resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" 577 | integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== 578 | dependencies: 579 | buffer "^6.0.3" 580 | inherits "^2.0.4" 581 | readable-stream "^3.4.0" 582 | 583 | boolbase@^1.0.0: 584 | version "1.0.0" 585 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" 586 | integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== 587 | 588 | brace-expansion@^1.1.7: 589 | version "1.1.11" 590 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 591 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 592 | dependencies: 593 | balanced-match "^1.0.0" 594 | concat-map "0.0.1" 595 | 596 | brace-expansion@^2.0.1: 597 | version "2.0.1" 598 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 599 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 600 | dependencies: 601 | balanced-match "^1.0.0" 602 | 603 | braces@^3.0.3, braces@~3.0.2: 604 | version "3.0.3" 605 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 606 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 607 | dependencies: 608 | fill-range "^7.1.1" 609 | 610 | browser-stdout@^1.3.1: 611 | version "1.3.1" 612 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 613 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 614 | 615 | buffer-crc32@~0.2.3: 616 | version "0.2.13" 617 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 618 | integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== 619 | 620 | buffer-equal-constant-time@1.0.1: 621 | version "1.0.1" 622 | resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" 623 | integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== 624 | 625 | buffer@^5.5.0: 626 | version "5.7.1" 627 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 628 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 629 | dependencies: 630 | base64-js "^1.3.1" 631 | ieee754 "^1.1.13" 632 | 633 | buffer@^6.0.3: 634 | version "6.0.3" 635 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" 636 | integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== 637 | dependencies: 638 | base64-js "^1.3.1" 639 | ieee754 "^1.2.1" 640 | 641 | bundle-name@^4.1.0: 642 | version "4.1.0" 643 | resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" 644 | integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== 645 | dependencies: 646 | run-applescript "^7.0.0" 647 | 648 | call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: 649 | version "1.0.2" 650 | resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" 651 | integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== 652 | dependencies: 653 | es-errors "^1.3.0" 654 | function-bind "^1.1.2" 655 | 656 | call-bound@^1.0.2: 657 | version "1.0.4" 658 | resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" 659 | integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== 660 | dependencies: 661 | call-bind-apply-helpers "^1.0.2" 662 | get-intrinsic "^1.3.0" 663 | 664 | callsites@^3.0.0: 665 | version "3.1.0" 666 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 667 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 668 | 669 | camelcase@^6.0.0: 670 | version "6.3.0" 671 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 672 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 673 | 674 | chalk@^2.4.2: 675 | version "2.4.2" 676 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 677 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 678 | dependencies: 679 | ansi-styles "^3.2.1" 680 | escape-string-regexp "^1.0.5" 681 | supports-color "^5.3.0" 682 | 683 | chalk@^4.0.0, chalk@^4.1.0: 684 | version "4.1.2" 685 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 686 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 687 | dependencies: 688 | ansi-styles "^4.1.0" 689 | supports-color "^7.1.0" 690 | 691 | chalk@^5.0.0, chalk@^5.3.0: 692 | version "5.4.1" 693 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" 694 | integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== 695 | 696 | cheerio-select@^2.1.0: 697 | version "2.1.0" 698 | resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" 699 | integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== 700 | dependencies: 701 | boolbase "^1.0.0" 702 | css-select "^5.1.0" 703 | css-what "^6.1.0" 704 | domelementtype "^2.3.0" 705 | domhandler "^5.0.3" 706 | domutils "^3.0.1" 707 | 708 | cheerio@^1.0.0-rc.9: 709 | version "1.0.0" 710 | resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0.tgz#1ede4895a82f26e8af71009f961a9b8cb60d6a81" 711 | integrity sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww== 712 | dependencies: 713 | cheerio-select "^2.1.0" 714 | dom-serializer "^2.0.0" 715 | domhandler "^5.0.3" 716 | domutils "^3.1.0" 717 | encoding-sniffer "^0.2.0" 718 | htmlparser2 "^9.1.0" 719 | parse5 "^7.1.2" 720 | parse5-htmlparser2-tree-adapter "^7.0.0" 721 | parse5-parser-stream "^7.1.2" 722 | undici "^6.19.5" 723 | whatwg-mimetype "^4.0.0" 724 | 725 | chokidar@^3.5.3: 726 | version "3.6.0" 727 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" 728 | integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== 729 | dependencies: 730 | anymatch "~3.1.2" 731 | braces "~3.0.2" 732 | glob-parent "~5.1.2" 733 | is-binary-path "~2.1.0" 734 | is-glob "~4.0.1" 735 | normalize-path "~3.0.0" 736 | readdirp "~3.6.0" 737 | optionalDependencies: 738 | fsevents "~2.3.2" 739 | 740 | chownr@^1.1.1: 741 | version "1.1.4" 742 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 743 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 744 | 745 | cli-cursor@^4.0.0: 746 | version "4.0.0" 747 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" 748 | integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== 749 | dependencies: 750 | restore-cursor "^4.0.0" 751 | 752 | cli-spinners@^2.9.0: 753 | version "2.9.2" 754 | resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" 755 | integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== 756 | 757 | cliui@^7.0.2: 758 | version "7.0.4" 759 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 760 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 761 | dependencies: 762 | string-width "^4.2.0" 763 | strip-ansi "^6.0.0" 764 | wrap-ansi "^7.0.0" 765 | 766 | cockatiel@^3.1.2: 767 | version "3.2.1" 768 | resolved "https://registry.yarnpkg.com/cockatiel/-/cockatiel-3.2.1.tgz#575f937bc4040a20ae27352a6d07c9c5a741981f" 769 | integrity sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q== 770 | 771 | color-convert@^1.9.0: 772 | version "1.9.3" 773 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 774 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 775 | dependencies: 776 | color-name "1.1.3" 777 | 778 | color-convert@^2.0.1: 779 | version "2.0.1" 780 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 781 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 782 | dependencies: 783 | color-name "~1.1.4" 784 | 785 | color-name@1.1.3: 786 | version "1.1.3" 787 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 788 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 789 | 790 | color-name@~1.1.4: 791 | version "1.1.4" 792 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 793 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 794 | 795 | combined-stream@^1.0.8: 796 | version "1.0.8" 797 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 798 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 799 | dependencies: 800 | delayed-stream "~1.0.0" 801 | 802 | commander@^6.2.1: 803 | version "6.2.1" 804 | resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" 805 | integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== 806 | 807 | concat-map@0.0.1: 808 | version "0.0.1" 809 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 810 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 811 | 812 | core-util-is@~1.0.0: 813 | version "1.0.3" 814 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" 815 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 816 | 817 | cross-spawn@^7.0.2, cross-spawn@^7.0.6: 818 | version "7.0.6" 819 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" 820 | integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== 821 | dependencies: 822 | path-key "^3.1.0" 823 | shebang-command "^2.0.0" 824 | which "^2.0.1" 825 | 826 | css-select@^5.1.0: 827 | version "5.1.0" 828 | resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" 829 | integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== 830 | dependencies: 831 | boolbase "^1.0.0" 832 | css-what "^6.1.0" 833 | domhandler "^5.0.2" 834 | domutils "^3.0.1" 835 | nth-check "^2.0.1" 836 | 837 | css-what@^6.1.0: 838 | version "6.1.0" 839 | resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" 840 | integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== 841 | 842 | debug@4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: 843 | version "4.4.0" 844 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" 845 | integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== 846 | dependencies: 847 | ms "^2.1.3" 848 | 849 | decamelize@^4.0.0: 850 | version "4.0.0" 851 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 852 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 853 | 854 | decompress-response@^6.0.0: 855 | version "6.0.0" 856 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 857 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 858 | dependencies: 859 | mimic-response "^3.1.0" 860 | 861 | deep-extend@^0.6.0: 862 | version "0.6.0" 863 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 864 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 865 | 866 | deep-is@^0.1.3: 867 | version "0.1.4" 868 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 869 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 870 | 871 | default-browser-id@^5.0.0: 872 | version "5.0.0" 873 | resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26" 874 | integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== 875 | 876 | default-browser@^5.2.1: 877 | version "5.2.1" 878 | resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf" 879 | integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== 880 | dependencies: 881 | bundle-name "^4.1.0" 882 | default-browser-id "^5.0.0" 883 | 884 | define-lazy-prop@^3.0.0: 885 | version "3.0.0" 886 | resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" 887 | integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== 888 | 889 | delayed-stream@~1.0.0: 890 | version "1.0.0" 891 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 892 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 893 | 894 | detect-libc@^2.0.0: 895 | version "2.0.3" 896 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" 897 | integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== 898 | 899 | diff@^5.2.0: 900 | version "5.2.0" 901 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" 902 | integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== 903 | 904 | dir-glob@^3.0.1: 905 | version "3.0.1" 906 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 907 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 908 | dependencies: 909 | path-type "^4.0.0" 910 | 911 | doctrine@^3.0.0: 912 | version "3.0.0" 913 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 914 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 915 | dependencies: 916 | esutils "^2.0.2" 917 | 918 | dom-serializer@^2.0.0: 919 | version "2.0.0" 920 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" 921 | integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== 922 | dependencies: 923 | domelementtype "^2.3.0" 924 | domhandler "^5.0.2" 925 | entities "^4.2.0" 926 | 927 | domelementtype@^2.3.0: 928 | version "2.3.0" 929 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" 930 | integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== 931 | 932 | domhandler@^5.0.2, domhandler@^5.0.3: 933 | version "5.0.3" 934 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" 935 | integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== 936 | dependencies: 937 | domelementtype "^2.3.0" 938 | 939 | domutils@^3.0.1, domutils@^3.1.0: 940 | version "3.2.2" 941 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.2.2.tgz#edbfe2b668b0c1d97c24baf0f1062b132221bc78" 942 | integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw== 943 | dependencies: 944 | dom-serializer "^2.0.0" 945 | domelementtype "^2.3.0" 946 | domhandler "^5.0.3" 947 | 948 | dunder-proto@^1.0.1: 949 | version "1.0.1" 950 | resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" 951 | integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== 952 | dependencies: 953 | call-bind-apply-helpers "^1.0.1" 954 | es-errors "^1.3.0" 955 | gopd "^1.2.0" 956 | 957 | eastasianwidth@^0.2.0: 958 | version "0.2.0" 959 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" 960 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 961 | 962 | ecdsa-sig-formatter@1.0.11: 963 | version "1.0.11" 964 | resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" 965 | integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== 966 | dependencies: 967 | safe-buffer "^5.0.1" 968 | 969 | emoji-regex@^10.2.1: 970 | version "10.4.0" 971 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.4.0.tgz#03553afea80b3975749cfcb36f776ca268e413d4" 972 | integrity sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw== 973 | 974 | emoji-regex@^8.0.0: 975 | version "8.0.0" 976 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 977 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 978 | 979 | emoji-regex@^9.2.2: 980 | version "9.2.2" 981 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 982 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 983 | 984 | encoding-sniffer@^0.2.0: 985 | version "0.2.0" 986 | resolved "https://registry.yarnpkg.com/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz#799569d66d443babe82af18c9f403498365ef1d5" 987 | integrity sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg== 988 | dependencies: 989 | iconv-lite "^0.6.3" 990 | whatwg-encoding "^3.1.1" 991 | 992 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 993 | version "1.4.4" 994 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 995 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 996 | dependencies: 997 | once "^1.4.0" 998 | 999 | entities@^4.2.0, entities@^4.5.0: 1000 | version "4.5.0" 1001 | resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" 1002 | integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== 1003 | 1004 | entities@~2.1.0: 1005 | version "2.1.0" 1006 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" 1007 | integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== 1008 | 1009 | es-define-property@^1.0.1: 1010 | version "1.0.1" 1011 | resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" 1012 | integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== 1013 | 1014 | es-errors@^1.3.0: 1015 | version "1.3.0" 1016 | resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" 1017 | integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== 1018 | 1019 | es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: 1020 | version "1.1.1" 1021 | resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" 1022 | integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== 1023 | dependencies: 1024 | es-errors "^1.3.0" 1025 | 1026 | es-set-tostringtag@^2.1.0: 1027 | version "2.1.0" 1028 | resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" 1029 | integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== 1030 | dependencies: 1031 | es-errors "^1.3.0" 1032 | get-intrinsic "^1.2.6" 1033 | has-tostringtag "^1.0.2" 1034 | hasown "^2.0.2" 1035 | 1036 | escalade@^3.1.1: 1037 | version "3.2.0" 1038 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" 1039 | integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== 1040 | 1041 | escape-string-regexp@^1.0.5: 1042 | version "1.0.5" 1043 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1044 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 1045 | 1046 | escape-string-regexp@^4.0.0: 1047 | version "4.0.0" 1048 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 1049 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 1050 | 1051 | eslint-scope@^7.2.2: 1052 | version "7.2.2" 1053 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" 1054 | integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== 1055 | dependencies: 1056 | esrecurse "^4.3.0" 1057 | estraverse "^5.2.0" 1058 | 1059 | eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: 1060 | version "3.4.3" 1061 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" 1062 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== 1063 | 1064 | eslint@^8.47.0: 1065 | version "8.57.1" 1066 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" 1067 | integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== 1068 | dependencies: 1069 | "@eslint-community/eslint-utils" "^4.2.0" 1070 | "@eslint-community/regexpp" "^4.6.1" 1071 | "@eslint/eslintrc" "^2.1.4" 1072 | "@eslint/js" "8.57.1" 1073 | "@humanwhocodes/config-array" "^0.13.0" 1074 | "@humanwhocodes/module-importer" "^1.0.1" 1075 | "@nodelib/fs.walk" "^1.2.8" 1076 | "@ungap/structured-clone" "^1.2.0" 1077 | ajv "^6.12.4" 1078 | chalk "^4.0.0" 1079 | cross-spawn "^7.0.2" 1080 | debug "^4.3.2" 1081 | doctrine "^3.0.0" 1082 | escape-string-regexp "^4.0.0" 1083 | eslint-scope "^7.2.2" 1084 | eslint-visitor-keys "^3.4.3" 1085 | espree "^9.6.1" 1086 | esquery "^1.4.2" 1087 | esutils "^2.0.2" 1088 | fast-deep-equal "^3.1.3" 1089 | file-entry-cache "^6.0.1" 1090 | find-up "^5.0.0" 1091 | glob-parent "^6.0.2" 1092 | globals "^13.19.0" 1093 | graphemer "^1.4.0" 1094 | ignore "^5.2.0" 1095 | imurmurhash "^0.1.4" 1096 | is-glob "^4.0.0" 1097 | is-path-inside "^3.0.3" 1098 | js-yaml "^4.1.0" 1099 | json-stable-stringify-without-jsonify "^1.0.1" 1100 | levn "^0.4.1" 1101 | lodash.merge "^4.6.2" 1102 | minimatch "^3.1.2" 1103 | natural-compare "^1.4.0" 1104 | optionator "^0.9.3" 1105 | strip-ansi "^6.0.1" 1106 | text-table "^0.2.0" 1107 | 1108 | espree@^9.6.0, espree@^9.6.1: 1109 | version "9.6.1" 1110 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" 1111 | integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== 1112 | dependencies: 1113 | acorn "^8.9.0" 1114 | acorn-jsx "^5.3.2" 1115 | eslint-visitor-keys "^3.4.1" 1116 | 1117 | esquery@^1.4.2: 1118 | version "1.6.0" 1119 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" 1120 | integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== 1121 | dependencies: 1122 | estraverse "^5.1.0" 1123 | 1124 | esrecurse@^4.3.0: 1125 | version "4.3.0" 1126 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 1127 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 1128 | dependencies: 1129 | estraverse "^5.2.0" 1130 | 1131 | estraverse@^5.1.0, estraverse@^5.2.0: 1132 | version "5.3.0" 1133 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 1134 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 1135 | 1136 | esutils@^2.0.2: 1137 | version "2.0.3" 1138 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1139 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1140 | 1141 | event-target-shim@^5.0.0: 1142 | version "5.0.1" 1143 | resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 1144 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== 1145 | 1146 | events@^3.0.0: 1147 | version "3.3.0" 1148 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" 1149 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== 1150 | 1151 | expand-template@^2.0.3: 1152 | version "2.0.3" 1153 | resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" 1154 | integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== 1155 | 1156 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 1157 | version "3.1.3" 1158 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 1159 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 1160 | 1161 | fast-glob@^3.2.9: 1162 | version "3.3.3" 1163 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" 1164 | integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== 1165 | dependencies: 1166 | "@nodelib/fs.stat" "^2.0.2" 1167 | "@nodelib/fs.walk" "^1.2.3" 1168 | glob-parent "^5.1.2" 1169 | merge2 "^1.3.0" 1170 | micromatch "^4.0.8" 1171 | 1172 | fast-json-stable-stringify@^2.0.0: 1173 | version "2.1.0" 1174 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1175 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1176 | 1177 | fast-levenshtein@^2.0.6: 1178 | version "2.0.6" 1179 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1180 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 1181 | 1182 | fastq@^1.6.0: 1183 | version "1.19.1" 1184 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" 1185 | integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== 1186 | dependencies: 1187 | reusify "^1.0.4" 1188 | 1189 | fd-slicer@~1.1.0: 1190 | version "1.1.0" 1191 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" 1192 | integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== 1193 | dependencies: 1194 | pend "~1.2.0" 1195 | 1196 | file-entry-cache@^6.0.1: 1197 | version "6.0.1" 1198 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 1199 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 1200 | dependencies: 1201 | flat-cache "^3.0.4" 1202 | 1203 | fill-range@^7.1.1: 1204 | version "7.1.1" 1205 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 1206 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 1207 | dependencies: 1208 | to-regex-range "^5.0.1" 1209 | 1210 | find-up@^5.0.0: 1211 | version "5.0.0" 1212 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 1213 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 1214 | dependencies: 1215 | locate-path "^6.0.0" 1216 | path-exists "^4.0.0" 1217 | 1218 | flat-cache@^3.0.4: 1219 | version "3.2.0" 1220 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" 1221 | integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== 1222 | dependencies: 1223 | flatted "^3.2.9" 1224 | keyv "^4.5.3" 1225 | rimraf "^3.0.2" 1226 | 1227 | flat@^5.0.2: 1228 | version "5.0.2" 1229 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 1230 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 1231 | 1232 | flatted@^3.2.9: 1233 | version "3.3.3" 1234 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" 1235 | integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== 1236 | 1237 | foreground-child@^3.1.0: 1238 | version "3.3.1" 1239 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" 1240 | integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== 1241 | dependencies: 1242 | cross-spawn "^7.0.6" 1243 | signal-exit "^4.0.1" 1244 | 1245 | form-data-encoder@1.7.2: 1246 | version "1.7.2" 1247 | resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.2.tgz#1f1ae3dccf58ed4690b86d87e4f57c654fbab040" 1248 | integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A== 1249 | 1250 | form-data@^4.0.0: 1251 | version "4.0.2" 1252 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.2.tgz#35cabbdd30c3ce73deb2c42d3c8d3ed9ca51794c" 1253 | integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w== 1254 | dependencies: 1255 | asynckit "^0.4.0" 1256 | combined-stream "^1.0.8" 1257 | es-set-tostringtag "^2.1.0" 1258 | mime-types "^2.1.12" 1259 | 1260 | formdata-node@^4.3.2: 1261 | version "4.4.1" 1262 | resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-4.4.1.tgz#23f6a5cb9cb55315912cbec4ff7b0f59bbd191e2" 1263 | integrity sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ== 1264 | dependencies: 1265 | node-domexception "1.0.0" 1266 | web-streams-polyfill "4.0.0-beta.3" 1267 | 1268 | fs-constants@^1.0.0: 1269 | version "1.0.0" 1270 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 1271 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 1272 | 1273 | fs.realpath@^1.0.0: 1274 | version "1.0.0" 1275 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1276 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 1277 | 1278 | fsevents@~2.3.2: 1279 | version "2.3.3" 1280 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 1281 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 1282 | 1283 | function-bind@^1.1.2: 1284 | version "1.1.2" 1285 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 1286 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 1287 | 1288 | get-caller-file@^2.0.5: 1289 | version "2.0.5" 1290 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1291 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1292 | 1293 | get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: 1294 | version "1.3.0" 1295 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" 1296 | integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== 1297 | dependencies: 1298 | call-bind-apply-helpers "^1.0.2" 1299 | es-define-property "^1.0.1" 1300 | es-errors "^1.3.0" 1301 | es-object-atoms "^1.1.1" 1302 | function-bind "^1.1.2" 1303 | get-proto "^1.0.1" 1304 | gopd "^1.2.0" 1305 | has-symbols "^1.1.0" 1306 | hasown "^2.0.2" 1307 | math-intrinsics "^1.1.0" 1308 | 1309 | get-proto@^1.0.1: 1310 | version "1.0.1" 1311 | resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" 1312 | integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== 1313 | dependencies: 1314 | dunder-proto "^1.0.1" 1315 | es-object-atoms "^1.0.0" 1316 | 1317 | github-from-package@0.0.0: 1318 | version "0.0.0" 1319 | resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" 1320 | integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== 1321 | 1322 | glob-parent@^5.1.2, glob-parent@~5.1.2: 1323 | version "5.1.2" 1324 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1325 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1326 | dependencies: 1327 | is-glob "^4.0.1" 1328 | 1329 | glob-parent@^6.0.2: 1330 | version "6.0.2" 1331 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 1332 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 1333 | dependencies: 1334 | is-glob "^4.0.3" 1335 | 1336 | glob@^10.3.3: 1337 | version "10.4.5" 1338 | resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" 1339 | integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== 1340 | dependencies: 1341 | foreground-child "^3.1.0" 1342 | jackspeak "^3.1.2" 1343 | minimatch "^9.0.4" 1344 | minipass "^7.1.2" 1345 | package-json-from-dist "^1.0.0" 1346 | path-scurry "^1.11.1" 1347 | 1348 | glob@^7.0.6, glob@^7.1.3: 1349 | version "7.2.3" 1350 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 1351 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 1352 | dependencies: 1353 | fs.realpath "^1.0.0" 1354 | inflight "^1.0.4" 1355 | inherits "2" 1356 | minimatch "^3.1.1" 1357 | once "^1.3.0" 1358 | path-is-absolute "^1.0.0" 1359 | 1360 | glob@^8.1.0: 1361 | version "8.1.0" 1362 | resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" 1363 | integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== 1364 | dependencies: 1365 | fs.realpath "^1.0.0" 1366 | inflight "^1.0.4" 1367 | inherits "2" 1368 | minimatch "^5.0.1" 1369 | once "^1.3.0" 1370 | 1371 | globals@^13.19.0: 1372 | version "13.24.0" 1373 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" 1374 | integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== 1375 | dependencies: 1376 | type-fest "^0.20.2" 1377 | 1378 | globby@^11.1.0: 1379 | version "11.1.0" 1380 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 1381 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 1382 | dependencies: 1383 | array-union "^2.1.0" 1384 | dir-glob "^3.0.1" 1385 | fast-glob "^3.2.9" 1386 | ignore "^5.2.0" 1387 | merge2 "^1.4.1" 1388 | slash "^3.0.0" 1389 | 1390 | gopd@^1.2.0: 1391 | version "1.2.0" 1392 | resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" 1393 | integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== 1394 | 1395 | graphemer@^1.4.0: 1396 | version "1.4.0" 1397 | resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" 1398 | integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== 1399 | 1400 | has-flag@^3.0.0: 1401 | version "3.0.0" 1402 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1403 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 1404 | 1405 | has-flag@^4.0.0: 1406 | version "4.0.0" 1407 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1408 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1409 | 1410 | has-symbols@^1.0.3, has-symbols@^1.1.0: 1411 | version "1.1.0" 1412 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" 1413 | integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== 1414 | 1415 | has-tostringtag@^1.0.2: 1416 | version "1.0.2" 1417 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" 1418 | integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== 1419 | dependencies: 1420 | has-symbols "^1.0.3" 1421 | 1422 | hasown@^2.0.2: 1423 | version "2.0.2" 1424 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" 1425 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== 1426 | dependencies: 1427 | function-bind "^1.1.2" 1428 | 1429 | he@^1.2.0: 1430 | version "1.2.0" 1431 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 1432 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 1433 | 1434 | hosted-git-info@^4.0.2: 1435 | version "4.1.0" 1436 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" 1437 | integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== 1438 | dependencies: 1439 | lru-cache "^6.0.0" 1440 | 1441 | htmlparser2@^9.1.0: 1442 | version "9.1.0" 1443 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-9.1.0.tgz#cdb498d8a75a51f739b61d3f718136c369bc8c23" 1444 | integrity sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ== 1445 | dependencies: 1446 | domelementtype "^2.3.0" 1447 | domhandler "^5.0.3" 1448 | domutils "^3.1.0" 1449 | entities "^4.5.0" 1450 | 1451 | http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.2: 1452 | version "7.0.2" 1453 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" 1454 | integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== 1455 | dependencies: 1456 | agent-base "^7.1.0" 1457 | debug "^4.3.4" 1458 | 1459 | https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.5: 1460 | version "7.0.6" 1461 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" 1462 | integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== 1463 | dependencies: 1464 | agent-base "^7.1.2" 1465 | debug "4" 1466 | 1467 | humanize-ms@^1.2.1: 1468 | version "1.2.1" 1469 | resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" 1470 | integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== 1471 | dependencies: 1472 | ms "^2.0.0" 1473 | 1474 | iconv-lite@0.6.3, iconv-lite@^0.6.3: 1475 | version "0.6.3" 1476 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" 1477 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 1478 | dependencies: 1479 | safer-buffer ">= 2.1.2 < 3.0.0" 1480 | 1481 | ieee754@^1.1.13, ieee754@^1.2.1: 1482 | version "1.2.1" 1483 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 1484 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 1485 | 1486 | ignore@^5.2.0, ignore@^5.2.4: 1487 | version "5.3.2" 1488 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" 1489 | integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== 1490 | 1491 | immediate@~3.0.5: 1492 | version "3.0.6" 1493 | resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" 1494 | integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== 1495 | 1496 | import-fresh@^3.2.1: 1497 | version "3.3.1" 1498 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" 1499 | integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== 1500 | dependencies: 1501 | parent-module "^1.0.0" 1502 | resolve-from "^4.0.0" 1503 | 1504 | imurmurhash@^0.1.4: 1505 | version "0.1.4" 1506 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1507 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1508 | 1509 | inflight@^1.0.4: 1510 | version "1.0.6" 1511 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1512 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1513 | dependencies: 1514 | once "^1.3.0" 1515 | wrappy "1" 1516 | 1517 | inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: 1518 | version "2.0.4" 1519 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1520 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1521 | 1522 | ini@~1.3.0: 1523 | version "1.3.8" 1524 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 1525 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 1526 | 1527 | is-binary-path@~2.1.0: 1528 | version "2.1.0" 1529 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1530 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1531 | dependencies: 1532 | binary-extensions "^2.0.0" 1533 | 1534 | is-docker@^3.0.0: 1535 | version "3.0.0" 1536 | resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" 1537 | integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== 1538 | 1539 | is-extglob@^2.1.1: 1540 | version "2.1.1" 1541 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1542 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1543 | 1544 | is-fullwidth-code-point@^3.0.0: 1545 | version "3.0.0" 1546 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1547 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1548 | 1549 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: 1550 | version "4.0.3" 1551 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1552 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1553 | dependencies: 1554 | is-extglob "^2.1.1" 1555 | 1556 | is-inside-container@^1.0.0: 1557 | version "1.0.0" 1558 | resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" 1559 | integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== 1560 | dependencies: 1561 | is-docker "^3.0.0" 1562 | 1563 | is-interactive@^2.0.0: 1564 | version "2.0.0" 1565 | resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90" 1566 | integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== 1567 | 1568 | is-number@^7.0.0: 1569 | version "7.0.0" 1570 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1571 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1572 | 1573 | is-path-inside@^3.0.3: 1574 | version "3.0.3" 1575 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" 1576 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== 1577 | 1578 | is-plain-obj@^2.1.0: 1579 | version "2.1.0" 1580 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 1581 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 1582 | 1583 | is-unicode-supported@^0.1.0: 1584 | version "0.1.0" 1585 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 1586 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 1587 | 1588 | is-unicode-supported@^1.1.0, is-unicode-supported@^1.3.0: 1589 | version "1.3.0" 1590 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714" 1591 | integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== 1592 | 1593 | is-wsl@^3.1.0: 1594 | version "3.1.0" 1595 | resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" 1596 | integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== 1597 | dependencies: 1598 | is-inside-container "^1.0.0" 1599 | 1600 | isarray@~1.0.0: 1601 | version "1.0.0" 1602 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1603 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 1604 | 1605 | isexe@^2.0.0: 1606 | version "2.0.0" 1607 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1608 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1609 | 1610 | jackspeak@^3.1.2: 1611 | version "3.4.3" 1612 | resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" 1613 | integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== 1614 | dependencies: 1615 | "@isaacs/cliui" "^8.0.2" 1616 | optionalDependencies: 1617 | "@pkgjs/parseargs" "^0.11.0" 1618 | 1619 | js-yaml@^4.1.0: 1620 | version "4.1.0" 1621 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1622 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1623 | dependencies: 1624 | argparse "^2.0.1" 1625 | 1626 | json-buffer@3.0.1: 1627 | version "3.0.1" 1628 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" 1629 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 1630 | 1631 | json-schema-traverse@^0.4.1: 1632 | version "0.4.1" 1633 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1634 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1635 | 1636 | json-stable-stringify-without-jsonify@^1.0.1: 1637 | version "1.0.1" 1638 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1639 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 1640 | 1641 | jsonc-parser@^3.2.0: 1642 | version "3.3.1" 1643 | resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz#f2a524b4f7fd11e3d791e559977ad60b98b798b4" 1644 | integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== 1645 | 1646 | jsonwebtoken@^9.0.0: 1647 | version "9.0.2" 1648 | resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" 1649 | integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== 1650 | dependencies: 1651 | jws "^3.2.2" 1652 | lodash.includes "^4.3.0" 1653 | lodash.isboolean "^3.0.3" 1654 | lodash.isinteger "^4.0.4" 1655 | lodash.isnumber "^3.0.3" 1656 | lodash.isplainobject "^4.0.6" 1657 | lodash.isstring "^4.0.1" 1658 | lodash.once "^4.0.0" 1659 | ms "^2.1.1" 1660 | semver "^7.5.4" 1661 | 1662 | jszip@^3.10.1: 1663 | version "3.10.1" 1664 | resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" 1665 | integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== 1666 | dependencies: 1667 | lie "~3.3.0" 1668 | pako "~1.0.2" 1669 | readable-stream "~2.3.6" 1670 | setimmediate "^1.0.5" 1671 | 1672 | jwa@^1.4.1: 1673 | version "1.4.1" 1674 | resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" 1675 | integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== 1676 | dependencies: 1677 | buffer-equal-constant-time "1.0.1" 1678 | ecdsa-sig-formatter "1.0.11" 1679 | safe-buffer "^5.0.1" 1680 | 1681 | jwa@^2.0.0: 1682 | version "2.0.0" 1683 | resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc" 1684 | integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== 1685 | dependencies: 1686 | buffer-equal-constant-time "1.0.1" 1687 | ecdsa-sig-formatter "1.0.11" 1688 | safe-buffer "^5.0.1" 1689 | 1690 | jws@^3.2.2: 1691 | version "3.2.2" 1692 | resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" 1693 | integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== 1694 | dependencies: 1695 | jwa "^1.4.1" 1696 | safe-buffer "^5.0.1" 1697 | 1698 | jws@^4.0.0: 1699 | version "4.0.0" 1700 | resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" 1701 | integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== 1702 | dependencies: 1703 | jwa "^2.0.0" 1704 | safe-buffer "^5.0.1" 1705 | 1706 | keytar@^7.7.0: 1707 | version "7.9.0" 1708 | resolved "https://registry.yarnpkg.com/keytar/-/keytar-7.9.0.tgz#4c6225708f51b50cbf77c5aae81721964c2918cb" 1709 | integrity sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ== 1710 | dependencies: 1711 | node-addon-api "^4.3.0" 1712 | prebuild-install "^7.0.1" 1713 | 1714 | keyv@^4.5.3: 1715 | version "4.5.4" 1716 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" 1717 | integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== 1718 | dependencies: 1719 | json-buffer "3.0.1" 1720 | 1721 | leven@^3.1.0: 1722 | version "3.1.0" 1723 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 1724 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 1725 | 1726 | levn@^0.4.1: 1727 | version "0.4.1" 1728 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1729 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1730 | dependencies: 1731 | prelude-ls "^1.2.1" 1732 | type-check "~0.4.0" 1733 | 1734 | lie@~3.3.0: 1735 | version "3.3.0" 1736 | resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" 1737 | integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== 1738 | dependencies: 1739 | immediate "~3.0.5" 1740 | 1741 | linkify-it@^3.0.1: 1742 | version "3.0.3" 1743 | resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" 1744 | integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== 1745 | dependencies: 1746 | uc.micro "^1.0.1" 1747 | 1748 | locate-path@^6.0.0: 1749 | version "6.0.0" 1750 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1751 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1752 | dependencies: 1753 | p-locate "^5.0.0" 1754 | 1755 | lodash.includes@^4.3.0: 1756 | version "4.3.0" 1757 | resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" 1758 | integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== 1759 | 1760 | lodash.isboolean@^3.0.3: 1761 | version "3.0.3" 1762 | resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" 1763 | integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== 1764 | 1765 | lodash.isinteger@^4.0.4: 1766 | version "4.0.4" 1767 | resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" 1768 | integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== 1769 | 1770 | lodash.isnumber@^3.0.3: 1771 | version "3.0.3" 1772 | resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" 1773 | integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== 1774 | 1775 | lodash.isplainobject@^4.0.6: 1776 | version "4.0.6" 1777 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" 1778 | integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== 1779 | 1780 | lodash.isstring@^4.0.1: 1781 | version "4.0.1" 1782 | resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" 1783 | integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== 1784 | 1785 | lodash.merge@^4.6.2: 1786 | version "4.6.2" 1787 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1788 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1789 | 1790 | lodash.once@^4.0.0: 1791 | version "4.1.1" 1792 | resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" 1793 | integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== 1794 | 1795 | log-symbols@^4.1.0: 1796 | version "4.1.0" 1797 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 1798 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 1799 | dependencies: 1800 | chalk "^4.1.0" 1801 | is-unicode-supported "^0.1.0" 1802 | 1803 | log-symbols@^5.1.0: 1804 | version "5.1.0" 1805 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.1.0.tgz#a20e3b9a5f53fac6aeb8e2bb22c07cf2c8f16d93" 1806 | integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA== 1807 | dependencies: 1808 | chalk "^5.0.0" 1809 | is-unicode-supported "^1.1.0" 1810 | 1811 | lru-cache@^10.2.0: 1812 | version "10.4.3" 1813 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" 1814 | integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== 1815 | 1816 | lru-cache@^6.0.0: 1817 | version "6.0.0" 1818 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1819 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1820 | dependencies: 1821 | yallist "^4.0.0" 1822 | 1823 | markdown-it@^12.3.2: 1824 | version "12.3.2" 1825 | resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" 1826 | integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== 1827 | dependencies: 1828 | argparse "^2.0.1" 1829 | entities "~2.1.0" 1830 | linkify-it "^3.0.1" 1831 | mdurl "^1.0.1" 1832 | uc.micro "^1.0.5" 1833 | 1834 | math-intrinsics@^1.1.0: 1835 | version "1.1.0" 1836 | resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" 1837 | integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== 1838 | 1839 | mdurl@^1.0.1: 1840 | version "1.0.1" 1841 | resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" 1842 | integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== 1843 | 1844 | merge2@^1.3.0, merge2@^1.4.1: 1845 | version "1.4.1" 1846 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1847 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1848 | 1849 | micromatch@^4.0.8: 1850 | version "4.0.8" 1851 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" 1852 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== 1853 | dependencies: 1854 | braces "^3.0.3" 1855 | picomatch "^2.3.1" 1856 | 1857 | mime-db@1.52.0: 1858 | version "1.52.0" 1859 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 1860 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1861 | 1862 | mime-types@^2.1.12: 1863 | version "2.1.35" 1864 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 1865 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1866 | dependencies: 1867 | mime-db "1.52.0" 1868 | 1869 | mime@^1.3.4: 1870 | version "1.6.0" 1871 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 1872 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1873 | 1874 | mimic-fn@^2.1.0: 1875 | version "2.1.0" 1876 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1877 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1878 | 1879 | mimic-response@^3.1.0: 1880 | version "3.1.0" 1881 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 1882 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 1883 | 1884 | minimatch@9.0.3: 1885 | version "9.0.3" 1886 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" 1887 | integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== 1888 | dependencies: 1889 | brace-expansion "^2.0.1" 1890 | 1891 | minimatch@^3.0.3, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: 1892 | version "3.1.2" 1893 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1894 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1895 | dependencies: 1896 | brace-expansion "^1.1.7" 1897 | 1898 | minimatch@^5.0.1, minimatch@^5.1.6: 1899 | version "5.1.6" 1900 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" 1901 | integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== 1902 | dependencies: 1903 | brace-expansion "^2.0.1" 1904 | 1905 | minimatch@^9.0.4: 1906 | version "9.0.5" 1907 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" 1908 | integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== 1909 | dependencies: 1910 | brace-expansion "^2.0.1" 1911 | 1912 | minimist@^1.2.0, minimist@^1.2.3: 1913 | version "1.2.8" 1914 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 1915 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 1916 | 1917 | "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: 1918 | version "7.1.2" 1919 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" 1920 | integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== 1921 | 1922 | mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: 1923 | version "0.5.3" 1924 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 1925 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 1926 | 1927 | mocha@^10.2.0: 1928 | version "10.8.2" 1929 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.8.2.tgz#8d8342d016ed411b12a429eb731b825f961afb96" 1930 | integrity sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg== 1931 | dependencies: 1932 | ansi-colors "^4.1.3" 1933 | browser-stdout "^1.3.1" 1934 | chokidar "^3.5.3" 1935 | debug "^4.3.5" 1936 | diff "^5.2.0" 1937 | escape-string-regexp "^4.0.0" 1938 | find-up "^5.0.0" 1939 | glob "^8.1.0" 1940 | he "^1.2.0" 1941 | js-yaml "^4.1.0" 1942 | log-symbols "^4.1.0" 1943 | minimatch "^5.1.6" 1944 | ms "^2.1.3" 1945 | serialize-javascript "^6.0.2" 1946 | strip-json-comments "^3.1.1" 1947 | supports-color "^8.1.1" 1948 | workerpool "^6.5.1" 1949 | yargs "^16.2.0" 1950 | yargs-parser "^20.2.9" 1951 | yargs-unparser "^2.0.0" 1952 | 1953 | ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: 1954 | version "2.1.3" 1955 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1956 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1957 | 1958 | mute-stream@~0.0.4: 1959 | version "0.0.8" 1960 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 1961 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 1962 | 1963 | napi-build-utils@^2.0.0: 1964 | version "2.0.0" 1965 | resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-2.0.0.tgz#13c22c0187fcfccce1461844136372a47ddc027e" 1966 | integrity sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA== 1967 | 1968 | natural-compare@^1.4.0: 1969 | version "1.4.0" 1970 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1971 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 1972 | 1973 | node-abi@^3.3.0: 1974 | version "3.74.0" 1975 | resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.74.0.tgz#5bfb4424264eaeb91432d2adb9da23c63a301ed0" 1976 | integrity sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w== 1977 | dependencies: 1978 | semver "^7.3.5" 1979 | 1980 | node-addon-api@^4.3.0: 1981 | version "4.3.0" 1982 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" 1983 | integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== 1984 | 1985 | node-domexception@1.0.0: 1986 | version "1.0.0" 1987 | resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" 1988 | integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== 1989 | 1990 | node-fetch@^2.6.7: 1991 | version "2.7.0" 1992 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" 1993 | integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== 1994 | dependencies: 1995 | whatwg-url "^5.0.0" 1996 | 1997 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1998 | version "3.0.0" 1999 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 2000 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 2001 | 2002 | nth-check@^2.0.1: 2003 | version "2.1.1" 2004 | resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" 2005 | integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== 2006 | dependencies: 2007 | boolbase "^1.0.0" 2008 | 2009 | object-inspect@^1.13.3: 2010 | version "1.13.4" 2011 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" 2012 | integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== 2013 | 2014 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 2015 | version "1.4.0" 2016 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2017 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 2018 | dependencies: 2019 | wrappy "1" 2020 | 2021 | onetime@^5.1.0: 2022 | version "5.1.2" 2023 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 2024 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 2025 | dependencies: 2026 | mimic-fn "^2.1.0" 2027 | 2028 | open@^10.1.0: 2029 | version "10.1.0" 2030 | resolved "https://registry.yarnpkg.com/open/-/open-10.1.0.tgz#a7795e6e5d519abe4286d9937bb24b51122598e1" 2031 | integrity sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw== 2032 | dependencies: 2033 | default-browser "^5.2.1" 2034 | define-lazy-prop "^3.0.0" 2035 | is-inside-container "^1.0.0" 2036 | is-wsl "^3.1.0" 2037 | 2038 | openai@^4.90.0: 2039 | version "4.91.1" 2040 | resolved "https://registry.yarnpkg.com/openai/-/openai-4.91.1.tgz#52ceecaf19bfe90bcda28418b2266db81439401d" 2041 | integrity sha512-DbjrR0hIMQFbxz8+3qBsfPJnh3+I/skPgoSlT7f9eiZuhGBUissPQULNgx6gHNkLoZ3uS0uYS6eXPUdtg4nHzw== 2042 | dependencies: 2043 | "@types/node" "^18.11.18" 2044 | "@types/node-fetch" "^2.6.4" 2045 | abort-controller "^3.0.0" 2046 | agentkeepalive "^4.2.1" 2047 | form-data-encoder "1.7.2" 2048 | formdata-node "^4.3.2" 2049 | node-fetch "^2.6.7" 2050 | 2051 | optionator@^0.9.3: 2052 | version "0.9.4" 2053 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" 2054 | integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== 2055 | dependencies: 2056 | deep-is "^0.1.3" 2057 | fast-levenshtein "^2.0.6" 2058 | levn "^0.4.1" 2059 | prelude-ls "^1.2.1" 2060 | type-check "^0.4.0" 2061 | word-wrap "^1.2.5" 2062 | 2063 | ora@^7.0.1: 2064 | version "7.0.1" 2065 | resolved "https://registry.yarnpkg.com/ora/-/ora-7.0.1.tgz#cdd530ecd865fe39e451a0e7697865669cb11930" 2066 | integrity sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw== 2067 | dependencies: 2068 | chalk "^5.3.0" 2069 | cli-cursor "^4.0.0" 2070 | cli-spinners "^2.9.0" 2071 | is-interactive "^2.0.0" 2072 | is-unicode-supported "^1.3.0" 2073 | log-symbols "^5.1.0" 2074 | stdin-discarder "^0.1.0" 2075 | string-width "^6.1.0" 2076 | strip-ansi "^7.1.0" 2077 | 2078 | p-limit@^3.0.2: 2079 | version "3.1.0" 2080 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 2081 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 2082 | dependencies: 2083 | yocto-queue "^0.1.0" 2084 | 2085 | p-locate@^5.0.0: 2086 | version "5.0.0" 2087 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 2088 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 2089 | dependencies: 2090 | p-limit "^3.0.2" 2091 | 2092 | package-json-from-dist@^1.0.0: 2093 | version "1.0.1" 2094 | resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" 2095 | integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== 2096 | 2097 | pako@~1.0.2: 2098 | version "1.0.11" 2099 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" 2100 | integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== 2101 | 2102 | parent-module@^1.0.0: 2103 | version "1.0.1" 2104 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 2105 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 2106 | dependencies: 2107 | callsites "^3.0.0" 2108 | 2109 | parse-semver@^1.1.1: 2110 | version "1.1.1" 2111 | resolved "https://registry.yarnpkg.com/parse-semver/-/parse-semver-1.1.1.tgz#9a4afd6df063dc4826f93fba4a99cf223f666cb8" 2112 | integrity sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ== 2113 | dependencies: 2114 | semver "^5.1.0" 2115 | 2116 | parse5-htmlparser2-tree-adapter@^7.0.0: 2117 | version "7.1.0" 2118 | resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz#b5a806548ed893a43e24ccb42fbb78069311e81b" 2119 | integrity sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g== 2120 | dependencies: 2121 | domhandler "^5.0.3" 2122 | parse5 "^7.0.0" 2123 | 2124 | parse5-parser-stream@^7.1.2: 2125 | version "7.1.2" 2126 | resolved "https://registry.yarnpkg.com/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz#d7c20eadc37968d272e2c02660fff92dd27e60e1" 2127 | integrity sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow== 2128 | dependencies: 2129 | parse5 "^7.0.0" 2130 | 2131 | parse5@^7.0.0, parse5@^7.1.2: 2132 | version "7.2.1" 2133 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.2.1.tgz#8928f55915e6125f430cc44309765bf17556a33a" 2134 | integrity sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ== 2135 | dependencies: 2136 | entities "^4.5.0" 2137 | 2138 | path-exists@^4.0.0: 2139 | version "4.0.0" 2140 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 2141 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 2142 | 2143 | path-is-absolute@^1.0.0: 2144 | version "1.0.1" 2145 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2146 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 2147 | 2148 | path-key@^3.1.0: 2149 | version "3.1.1" 2150 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 2151 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 2152 | 2153 | path-scurry@^1.11.1: 2154 | version "1.11.1" 2155 | resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" 2156 | integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== 2157 | dependencies: 2158 | lru-cache "^10.2.0" 2159 | minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 2160 | 2161 | path-type@^4.0.0: 2162 | version "4.0.0" 2163 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 2164 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 2165 | 2166 | pend@~1.2.0: 2167 | version "1.2.0" 2168 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 2169 | integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== 2170 | 2171 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: 2172 | version "2.3.1" 2173 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 2174 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 2175 | 2176 | prebuild-install@^7.0.1: 2177 | version "7.1.3" 2178 | resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.3.tgz#d630abad2b147443f20a212917beae68b8092eec" 2179 | integrity sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug== 2180 | dependencies: 2181 | detect-libc "^2.0.0" 2182 | expand-template "^2.0.3" 2183 | github-from-package "0.0.0" 2184 | minimist "^1.2.3" 2185 | mkdirp-classic "^0.5.3" 2186 | napi-build-utils "^2.0.0" 2187 | node-abi "^3.3.0" 2188 | pump "^3.0.0" 2189 | rc "^1.2.7" 2190 | simple-get "^4.0.0" 2191 | tar-fs "^2.0.0" 2192 | tunnel-agent "^0.6.0" 2193 | 2194 | prelude-ls@^1.2.1: 2195 | version "1.2.1" 2196 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 2197 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 2198 | 2199 | process-nextick-args@~2.0.0: 2200 | version "2.0.1" 2201 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 2202 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 2203 | 2204 | pump@^3.0.0: 2205 | version "3.0.2" 2206 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" 2207 | integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw== 2208 | dependencies: 2209 | end-of-stream "^1.1.0" 2210 | once "^1.3.1" 2211 | 2212 | punycode@^2.1.0: 2213 | version "2.3.1" 2214 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" 2215 | integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== 2216 | 2217 | qs@^6.9.1: 2218 | version "6.14.0" 2219 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" 2220 | integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== 2221 | dependencies: 2222 | side-channel "^1.1.0" 2223 | 2224 | queue-microtask@^1.2.2: 2225 | version "1.2.3" 2226 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 2227 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 2228 | 2229 | randombytes@^2.1.0: 2230 | version "2.1.0" 2231 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 2232 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 2233 | dependencies: 2234 | safe-buffer "^5.1.0" 2235 | 2236 | rc@^1.2.7: 2237 | version "1.2.8" 2238 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 2239 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 2240 | dependencies: 2241 | deep-extend "^0.6.0" 2242 | ini "~1.3.0" 2243 | minimist "^1.2.0" 2244 | strip-json-comments "~2.0.1" 2245 | 2246 | read@^1.0.7: 2247 | version "1.0.7" 2248 | resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" 2249 | integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== 2250 | dependencies: 2251 | mute-stream "~0.0.4" 2252 | 2253 | readable-stream@^3.1.1, readable-stream@^3.4.0: 2254 | version "3.6.2" 2255 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" 2256 | integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== 2257 | dependencies: 2258 | inherits "^2.0.3" 2259 | string_decoder "^1.1.1" 2260 | util-deprecate "^1.0.1" 2261 | 2262 | readable-stream@~2.3.6: 2263 | version "2.3.8" 2264 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" 2265 | integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== 2266 | dependencies: 2267 | core-util-is "~1.0.0" 2268 | inherits "~2.0.3" 2269 | isarray "~1.0.0" 2270 | process-nextick-args "~2.0.0" 2271 | safe-buffer "~5.1.1" 2272 | string_decoder "~1.1.1" 2273 | util-deprecate "~1.0.1" 2274 | 2275 | readdirp@~3.6.0: 2276 | version "3.6.0" 2277 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 2278 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 2279 | dependencies: 2280 | picomatch "^2.2.1" 2281 | 2282 | require-directory@^2.1.1: 2283 | version "2.1.1" 2284 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2285 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 2286 | 2287 | resolve-from@^4.0.0: 2288 | version "4.0.0" 2289 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 2290 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 2291 | 2292 | restore-cursor@^4.0.0: 2293 | version "4.0.0" 2294 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" 2295 | integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== 2296 | dependencies: 2297 | onetime "^5.1.0" 2298 | signal-exit "^3.0.2" 2299 | 2300 | reusify@^1.0.4: 2301 | version "1.1.0" 2302 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" 2303 | integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== 2304 | 2305 | rimraf@^3.0.2: 2306 | version "3.0.2" 2307 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 2308 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 2309 | dependencies: 2310 | glob "^7.1.3" 2311 | 2312 | run-applescript@^7.0.0: 2313 | version "7.0.0" 2314 | resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" 2315 | integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== 2316 | 2317 | run-parallel@^1.1.9: 2318 | version "1.2.0" 2319 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 2320 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 2321 | dependencies: 2322 | queue-microtask "^1.2.2" 2323 | 2324 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: 2325 | version "5.2.1" 2326 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 2327 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 2328 | 2329 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2330 | version "5.1.2" 2331 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2332 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2333 | 2334 | "safer-buffer@>= 2.1.2 < 3.0.0": 2335 | version "2.1.2" 2336 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2337 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2338 | 2339 | sax@>=0.6.0: 2340 | version "1.4.1" 2341 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" 2342 | integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== 2343 | 2344 | semver@^5.1.0: 2345 | version "5.7.2" 2346 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" 2347 | integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== 2348 | 2349 | semver@^7.3.5, semver@^7.5.2, semver@^7.5.4, semver@^7.6.2: 2350 | version "7.7.1" 2351 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" 2352 | integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== 2353 | 2354 | serialize-javascript@^6.0.2: 2355 | version "6.0.2" 2356 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" 2357 | integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== 2358 | dependencies: 2359 | randombytes "^2.1.0" 2360 | 2361 | setimmediate@^1.0.5: 2362 | version "1.0.5" 2363 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 2364 | integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== 2365 | 2366 | shebang-command@^2.0.0: 2367 | version "2.0.0" 2368 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 2369 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 2370 | dependencies: 2371 | shebang-regex "^3.0.0" 2372 | 2373 | shebang-regex@^3.0.0: 2374 | version "3.0.0" 2375 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 2376 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 2377 | 2378 | side-channel-list@^1.0.0: 2379 | version "1.0.0" 2380 | resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" 2381 | integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== 2382 | dependencies: 2383 | es-errors "^1.3.0" 2384 | object-inspect "^1.13.3" 2385 | 2386 | side-channel-map@^1.0.1: 2387 | version "1.0.1" 2388 | resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" 2389 | integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== 2390 | dependencies: 2391 | call-bound "^1.0.2" 2392 | es-errors "^1.3.0" 2393 | get-intrinsic "^1.2.5" 2394 | object-inspect "^1.13.3" 2395 | 2396 | side-channel-weakmap@^1.0.2: 2397 | version "1.0.2" 2398 | resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" 2399 | integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== 2400 | dependencies: 2401 | call-bound "^1.0.2" 2402 | es-errors "^1.3.0" 2403 | get-intrinsic "^1.2.5" 2404 | object-inspect "^1.13.3" 2405 | side-channel-map "^1.0.1" 2406 | 2407 | side-channel@^1.1.0: 2408 | version "1.1.0" 2409 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" 2410 | integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== 2411 | dependencies: 2412 | es-errors "^1.3.0" 2413 | object-inspect "^1.13.3" 2414 | side-channel-list "^1.0.0" 2415 | side-channel-map "^1.0.1" 2416 | side-channel-weakmap "^1.0.2" 2417 | 2418 | signal-exit@^3.0.2: 2419 | version "3.0.7" 2420 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 2421 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 2422 | 2423 | signal-exit@^4.0.1: 2424 | version "4.1.0" 2425 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" 2426 | integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== 2427 | 2428 | simple-concat@^1.0.0: 2429 | version "1.0.1" 2430 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" 2431 | integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== 2432 | 2433 | simple-get@^4.0.0: 2434 | version "4.0.1" 2435 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" 2436 | integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== 2437 | dependencies: 2438 | decompress-response "^6.0.0" 2439 | once "^1.3.1" 2440 | simple-concat "^1.0.0" 2441 | 2442 | slash@^3.0.0: 2443 | version "3.0.0" 2444 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 2445 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 2446 | 2447 | stdin-discarder@^0.1.0: 2448 | version "0.1.0" 2449 | resolved "https://registry.yarnpkg.com/stdin-discarder/-/stdin-discarder-0.1.0.tgz#22b3e400393a8e28ebf53f9958f3880622efde21" 2450 | integrity sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ== 2451 | dependencies: 2452 | bl "^5.0.0" 2453 | 2454 | stoppable@^1.1.0: 2455 | version "1.1.0" 2456 | resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" 2457 | integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== 2458 | 2459 | "string-width-cjs@npm:string-width@^4.2.0": 2460 | version "4.2.3" 2461 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 2462 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 2463 | dependencies: 2464 | emoji-regex "^8.0.0" 2465 | is-fullwidth-code-point "^3.0.0" 2466 | strip-ansi "^6.0.1" 2467 | 2468 | string-width@^4.1.0, string-width@^4.2.0: 2469 | version "4.2.3" 2470 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 2471 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 2472 | dependencies: 2473 | emoji-regex "^8.0.0" 2474 | is-fullwidth-code-point "^3.0.0" 2475 | strip-ansi "^6.0.1" 2476 | 2477 | string-width@^5.0.1, string-width@^5.1.2: 2478 | version "5.1.2" 2479 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" 2480 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 2481 | dependencies: 2482 | eastasianwidth "^0.2.0" 2483 | emoji-regex "^9.2.2" 2484 | strip-ansi "^7.0.1" 2485 | 2486 | string-width@^6.1.0: 2487 | version "6.1.0" 2488 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-6.1.0.tgz#96488d6ed23f9ad5d82d13522af9e4c4c3fd7518" 2489 | integrity sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ== 2490 | dependencies: 2491 | eastasianwidth "^0.2.0" 2492 | emoji-regex "^10.2.1" 2493 | strip-ansi "^7.0.1" 2494 | 2495 | string_decoder@^1.1.1: 2496 | version "1.3.0" 2497 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 2498 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 2499 | dependencies: 2500 | safe-buffer "~5.2.0" 2501 | 2502 | string_decoder@~1.1.1: 2503 | version "1.1.1" 2504 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 2505 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 2506 | dependencies: 2507 | safe-buffer "~5.1.0" 2508 | 2509 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1": 2510 | version "6.0.1" 2511 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 2512 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 2513 | dependencies: 2514 | ansi-regex "^5.0.1" 2515 | 2516 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 2517 | version "6.0.1" 2518 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 2519 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 2520 | dependencies: 2521 | ansi-regex "^5.0.1" 2522 | 2523 | strip-ansi@^7.0.1, strip-ansi@^7.1.0: 2524 | version "7.1.0" 2525 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" 2526 | integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== 2527 | dependencies: 2528 | ansi-regex "^6.0.1" 2529 | 2530 | strip-json-comments@^3.1.1: 2531 | version "3.1.1" 2532 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 2533 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 2534 | 2535 | strip-json-comments@~2.0.1: 2536 | version "2.0.1" 2537 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2538 | integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== 2539 | 2540 | supports-color@^5.3.0: 2541 | version "5.5.0" 2542 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2543 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2544 | dependencies: 2545 | has-flag "^3.0.0" 2546 | 2547 | supports-color@^7.1.0: 2548 | version "7.2.0" 2549 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2550 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 2551 | dependencies: 2552 | has-flag "^4.0.0" 2553 | 2554 | supports-color@^8.1.1: 2555 | version "8.1.1" 2556 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 2557 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 2558 | dependencies: 2559 | has-flag "^4.0.0" 2560 | 2561 | tar-fs@^2.0.0: 2562 | version "2.1.2" 2563 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.2.tgz#425f154f3404cb16cb8ff6e671d45ab2ed9596c5" 2564 | integrity sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA== 2565 | dependencies: 2566 | chownr "^1.1.1" 2567 | mkdirp-classic "^0.5.2" 2568 | pump "^3.0.0" 2569 | tar-stream "^2.1.4" 2570 | 2571 | tar-stream@^2.1.4: 2572 | version "2.2.0" 2573 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" 2574 | integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== 2575 | dependencies: 2576 | bl "^4.0.3" 2577 | end-of-stream "^1.4.1" 2578 | fs-constants "^1.0.0" 2579 | inherits "^2.0.3" 2580 | readable-stream "^3.1.1" 2581 | 2582 | text-table@^0.2.0: 2583 | version "0.2.0" 2584 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2585 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== 2586 | 2587 | tmp@^0.2.1: 2588 | version "0.2.3" 2589 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" 2590 | integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== 2591 | 2592 | to-regex-range@^5.0.1: 2593 | version "5.0.1" 2594 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2595 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2596 | dependencies: 2597 | is-number "^7.0.0" 2598 | 2599 | tr46@~0.0.3: 2600 | version "0.0.3" 2601 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 2602 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 2603 | 2604 | ts-api-utils@^1.0.1: 2605 | version "1.4.3" 2606 | resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" 2607 | integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== 2608 | 2609 | tslib@^2.2.0, tslib@^2.6.2: 2610 | version "2.8.1" 2611 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" 2612 | integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== 2613 | 2614 | tunnel-agent@^0.6.0: 2615 | version "0.6.0" 2616 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2617 | integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== 2618 | dependencies: 2619 | safe-buffer "^5.0.1" 2620 | 2621 | tunnel@0.0.6: 2622 | version "0.0.6" 2623 | resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" 2624 | integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== 2625 | 2626 | type-check@^0.4.0, type-check@~0.4.0: 2627 | version "0.4.0" 2628 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 2629 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 2630 | dependencies: 2631 | prelude-ls "^1.2.1" 2632 | 2633 | type-fest@^0.20.2: 2634 | version "0.20.2" 2635 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 2636 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 2637 | 2638 | typed-rest-client@^1.8.4: 2639 | version "1.8.11" 2640 | resolved "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.8.11.tgz#6906f02e3c91e8d851579f255abf0fd60800a04d" 2641 | integrity sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA== 2642 | dependencies: 2643 | qs "^6.9.1" 2644 | tunnel "0.0.6" 2645 | underscore "^1.12.1" 2646 | 2647 | typescript@^5.1.6: 2648 | version "5.8.2" 2649 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4" 2650 | integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ== 2651 | 2652 | uc.micro@^1.0.1, uc.micro@^1.0.5: 2653 | version "1.0.6" 2654 | resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" 2655 | integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== 2656 | 2657 | underscore@^1.12.1: 2658 | version "1.13.7" 2659 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.7.tgz#970e33963af9a7dda228f17ebe8399e5fbe63a10" 2660 | integrity sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g== 2661 | 2662 | undici-types@~5.26.4: 2663 | version "5.26.5" 2664 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" 2665 | integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== 2666 | 2667 | undici-types@~6.21.0: 2668 | version "6.21.0" 2669 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" 2670 | integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== 2671 | 2672 | undici@^6.19.5: 2673 | version "6.21.2" 2674 | resolved "https://registry.yarnpkg.com/undici/-/undici-6.21.2.tgz#49c5884e8f9039c65a89ee9018ef3c8e2f1f4928" 2675 | integrity sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g== 2676 | 2677 | uri-js@^4.2.2: 2678 | version "4.4.1" 2679 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 2680 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 2681 | dependencies: 2682 | punycode "^2.1.0" 2683 | 2684 | url-join@^4.0.1: 2685 | version "4.0.1" 2686 | resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" 2687 | integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== 2688 | 2689 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 2690 | version "1.0.2" 2691 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2692 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 2693 | 2694 | uuid@^8.3.0: 2695 | version "8.3.2" 2696 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" 2697 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== 2698 | 2699 | web-streams-polyfill@4.0.0-beta.3: 2700 | version "4.0.0-beta.3" 2701 | resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz#2898486b74f5156095e473efe989dcf185047a38" 2702 | integrity sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug== 2703 | 2704 | webidl-conversions@^3.0.0: 2705 | version "3.0.1" 2706 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 2707 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 2708 | 2709 | whatwg-encoding@^3.1.1: 2710 | version "3.1.1" 2711 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" 2712 | integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== 2713 | dependencies: 2714 | iconv-lite "0.6.3" 2715 | 2716 | whatwg-mimetype@^4.0.0: 2717 | version "4.0.0" 2718 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" 2719 | integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== 2720 | 2721 | whatwg-url@^5.0.0: 2722 | version "5.0.0" 2723 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 2724 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 2725 | dependencies: 2726 | tr46 "~0.0.3" 2727 | webidl-conversions "^3.0.0" 2728 | 2729 | which@^2.0.1: 2730 | version "2.0.2" 2731 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2732 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2733 | dependencies: 2734 | isexe "^2.0.0" 2735 | 2736 | word-wrap@^1.2.5: 2737 | version "1.2.5" 2738 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" 2739 | integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== 2740 | 2741 | workerpool@^6.5.1: 2742 | version "6.5.1" 2743 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" 2744 | integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== 2745 | 2746 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": 2747 | version "7.0.0" 2748 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 2749 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 2750 | dependencies: 2751 | ansi-styles "^4.0.0" 2752 | string-width "^4.1.0" 2753 | strip-ansi "^6.0.0" 2754 | 2755 | wrap-ansi@^7.0.0: 2756 | version "7.0.0" 2757 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 2758 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 2759 | dependencies: 2760 | ansi-styles "^4.0.0" 2761 | string-width "^4.1.0" 2762 | strip-ansi "^6.0.0" 2763 | 2764 | wrap-ansi@^8.1.0: 2765 | version "8.1.0" 2766 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" 2767 | integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== 2768 | dependencies: 2769 | ansi-styles "^6.1.0" 2770 | string-width "^5.0.1" 2771 | strip-ansi "^7.0.1" 2772 | 2773 | wrappy@1: 2774 | version "1.0.2" 2775 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2776 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 2777 | 2778 | xml2js@^0.5.0: 2779 | version "0.5.0" 2780 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7" 2781 | integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== 2782 | dependencies: 2783 | sax ">=0.6.0" 2784 | xmlbuilder "~11.0.0" 2785 | 2786 | xmlbuilder@~11.0.0: 2787 | version "11.0.1" 2788 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" 2789 | integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== 2790 | 2791 | y18n@^5.0.5: 2792 | version "5.0.8" 2793 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 2794 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 2795 | 2796 | yallist@^4.0.0: 2797 | version "4.0.0" 2798 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2799 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2800 | 2801 | yargs-parser@^20.2.2, yargs-parser@^20.2.9: 2802 | version "20.2.9" 2803 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 2804 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 2805 | 2806 | yargs-unparser@^2.0.0: 2807 | version "2.0.0" 2808 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 2809 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 2810 | dependencies: 2811 | camelcase "^6.0.0" 2812 | decamelize "^4.0.0" 2813 | flat "^5.0.2" 2814 | is-plain-obj "^2.1.0" 2815 | 2816 | yargs@^16.2.0: 2817 | version "16.2.0" 2818 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 2819 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 2820 | dependencies: 2821 | cliui "^7.0.2" 2822 | escalade "^3.1.1" 2823 | get-caller-file "^2.0.5" 2824 | require-directory "^2.1.1" 2825 | string-width "^4.2.0" 2826 | y18n "^5.0.5" 2827 | yargs-parser "^20.2.2" 2828 | 2829 | yauzl@^2.3.1: 2830 | version "2.10.0" 2831 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" 2832 | integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== 2833 | dependencies: 2834 | buffer-crc32 "~0.2.3" 2835 | fd-slicer "~1.1.0" 2836 | 2837 | yazl@^2.2.2: 2838 | version "2.5.1" 2839 | resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35" 2840 | integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw== 2841 | dependencies: 2842 | buffer-crc32 "~0.2.3" 2843 | 2844 | yocto-queue@^0.1.0: 2845 | version "0.1.0" 2846 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 2847 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 2848 | --------------------------------------------------------------------------------