├── .devcontainer ├── Dockerfile └── devcontainer.json ├── .eslintrc.json ├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── .yarnrc ├── LICENSE ├── README.md ├── assets └── logo.png ├── package.json ├── src ├── documentParser.ts ├── extension.ts ├── powerShellVariableInlineValuesProvider.ts ├── test │ ├── runTest.ts │ ├── suite │ │ ├── documentParser.test.ts │ │ ├── index.ts │ │ ├── powerShellVariableInlineValuesProvider.test.ts │ │ └── utils.test.ts │ └── testUtils.ts └── utils.ts ├── tsconfig.json └── yarn.lock /.devcontainer/Dockerfile: -------------------------------------------------------------------------------- 1 | # See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.167.0/containers/typescript-node/.devcontainer/base.Dockerfile 2 | 3 | # [Choice] Node.js version: 14, 12, 10 4 | ARG VARIANT="14-buster" 5 | FROM mcr.microsoft.com/vscode/devcontainers/typescript-node:0-${VARIANT} 6 | 7 | # Install PowerShell 7 8 | RUN wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb && sudo dpkg -i packages-microsoft-prod.deb \ 9 | && apt-get update && apt-get install -y powershell \ 10 | # Clean up 11 | && rm packages-microsoft-prod.deb && rm -rf /var/lib/apt/lists/* 12 | 13 | # [Optional] Uncomment this section to install additional OS packages. 14 | # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ 15 | # && apt-get -y install --no-install-recommends 16 | 17 | # [Optional] Uncomment if you want to install an additional version of node using nvm 18 | # ARG EXTRA_NODE_VERSION=10 19 | # RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}" 20 | 21 | # [Optional] Uncomment if you want to install more global node packages 22 | # RUN su node -c "npm install -g " 23 | -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: 2 | // https://github.com/microsoft/vscode-dev-containers/tree/v0.167.0/containers/typescript-node 3 | { 4 | "name": "Node.js & TypeScript", 5 | "build": { 6 | "dockerfile": "Dockerfile", 7 | // Update 'VARIANT' to pick a Node version: 10, 12, 14 8 | "args": { 9 | "VARIANT": "14" 10 | } 11 | }, 12 | 13 | // Set *default* container specific settings.json values on container create. 14 | "settings": { 15 | "terminal.integrated.shell.linux": "/bin/bash" 16 | }, 17 | 18 | // Add the IDs of extensions you want installed when the container is created. 19 | "extensions": [ 20 | "dbaeumer.vscode-eslint", 21 | "ms-vscode.powershell" 22 | ], 23 | 24 | // Use 'forwardPorts' to make a list of ports inside the container available locally. 25 | // "forwardPorts": [], 26 | 27 | // Use 'postCreateCommand' to run commands after the container is created. 28 | "postCreateCommand": "yarn", 29 | 30 | // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. 31 | "remoteUser": "node" 32 | } 33 | -------------------------------------------------------------------------------- /.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 | } 20 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 3 | 4 | name: Node.js CI 5 | 6 | on: 7 | push: 8 | branches: [ "master" ] 9 | pull_request: 10 | branches: [ "master" ] 11 | workflow_dispatch: 12 | 13 | jobs: 14 | build: 15 | strategy: 16 | matrix: 17 | os: [macos-latest, windows-latest] 18 | runs-on: ${{ matrix.os }} 19 | steps: 20 | - uses: actions/checkout@v3 21 | - name: Setup Node.js 22 | uses: actions/setup-node@v3 23 | with: 24 | node-version: 16 25 | cache: 'yarn' 26 | - run: yarn 27 | - run: yarn test 28 | - run: npx vsce package 29 | - uses: actions/upload-artifact@v3 30 | with: 31 | name: vsix 32 | path: ./vscode-inline-values-powershell-*.vsix 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | dist 3 | node_modules 4 | .vscode-test/ 5 | *.vsix 6 | vscode.proposed.d.ts 7 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "dbaeumer.vscode-eslint" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | { 6 | "version": "0.2.0", 7 | "configurations": [ 8 | { 9 | "name": "Run Extension", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "args": [ 13 | "--extensionDevelopmentPath=${workspaceFolder}" 14 | ], 15 | "outFiles": [ 16 | "${workspaceFolder}/out/**/*.js" 17 | ], 18 | "preLaunchTask": "${defaultBuildTask}" 19 | }, 20 | { 21 | "name": "Extension Tests", 22 | "type": "extensionHost", 23 | "request": "launch", 24 | "args": [ 25 | "--extensionDevelopmentPath=${workspaceFolder}", 26 | "--extensionTestsPath=${workspaceFolder}/out/test/suite/index" 27 | ], 28 | "outFiles": [ 29 | "${workspaceFolder}/out/test/**/*.js" 30 | ], 31 | "preLaunchTask": "${defaultBuildTask}" 32 | } 33 | ] 34 | } 35 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "files.exclude": { 4 | "out": false // set this to true to hide the "out" folder with the compiled JS files 5 | }, 6 | "search.exclude": { 7 | "out": true // set this to false to include "out" folder in search results 8 | }, 9 | // Turn off tsc task auto detection since we have the necessary tasks as npm scripts 10 | "typescript.tsc.autoDetect": "off", 11 | "files.trimTrailingWhitespace": true, 12 | "files.insertFinalNewline": true 13 | } 14 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | // See https://go.microsoft.com/fwlink/?LinkId=733558 2 | // for the documentation about the tasks.json format 3 | { 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "type": "npm", 8 | "script": "watch", 9 | "problemMatcher": "$tsc-watch", 10 | "isBackground": true, 11 | "presentation": { 12 | "reveal": "never" 13 | }, 14 | "group": { 15 | "kind": "build", 16 | "isDefault": true 17 | } 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | out/test/** 4 | src/** 5 | .gitignore 6 | .yarnrc 7 | vsc-extension-quickstart.md 8 | **/tsconfig.json 9 | **/.eslintrc.json 10 | **/*.map 11 | **/*.ts 12 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | --ignore-engines true 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Tyler James Leonhardt 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Inline values for PowerShell variables 2 | 3 | ![image](https://user-images.githubusercontent.com/2644648/109373505-0cb23380-7864-11eb-8bf2-a991873b6d02.png) 4 | 5 | This extension enables inline values for variables _when debugging_ a PowerShell script. 6 | 7 | ## Features 8 | 9 | ![image](https://user-images.githubusercontent.com/2644648/109373154-19358c80-7862-11eb-8a7c-a5a7b34f0561.png) 10 | 11 | When you apply the `"debug.inlineValues": true` setting, you can see the values for the variables in your script inline. 12 | 13 | ## Requirements 14 | 15 | The PowerShell extension or the PowerShell Preview extension for VS Code 16 | 17 | ## Development 18 | 19 | Wanna contribute? It's easy! 20 | 21 | ### Prereqs 22 | 23 | * [Node.js LTS](https://nodejs.org/en/download/) 24 | * [Yarn](https://yarnpkg.com/) 25 | 26 | ### Steps 27 | 28 | 1. Clone this repo and `cd` into it 29 | 2. Run `yarn` to install the dependencies 30 | 3. Open it in VS Code (ideally insiders) 31 | 4. `Ctrl/Cmd+Shift+B` to run the build task (look in the terminal drop down to see if the build is running) 32 | 5. `F5` to launch the local build of the extension 33 | 34 | That's it! Then all you have to do is: 35 | 36 | 1. Make code changes 37 | 2. Save the files 38 | 3. Restart your local build to see the changes :) 39 | -------------------------------------------------------------------------------- /assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TylerLeonhardt/vscode-inline-values-powershell/49c62613375883ef30fc8fdf7b87f0b270f5b414/assets/logo.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-inline-values-powershell", 3 | "displayName": "Inline Values support for PowerShell", 4 | "description": "Enables inline values for variables when debugging PowerShell scripts", 5 | "version": "0.0.7", 6 | "publisher": "TylerLeonhardt", 7 | "repository": { 8 | "url": "https://github.com/TylerLeonhardt/vscode-inline-values-powershell" 9 | }, 10 | "license": "MIT", 11 | "engines": { 12 | "vscode": "^1.60.0" 13 | }, 14 | "icon": "assets/logo.png", 15 | "categories": [ 16 | "Programming Languages", 17 | "Debuggers" 18 | ], 19 | "activationEvents": [ 20 | "onDebugResolve:PowerShell" 21 | ], 22 | "main": "./out/extension.js", 23 | "contributes": { 24 | "configuration": { 25 | "title": "Inline Values support for PowerShell", 26 | "properties": { 27 | "powershellInlineValues.startLocation": { 28 | "type": "string", 29 | "default": "currentFunction", 30 | "enum": [ 31 | "currentFunction", 32 | "document" 33 | ], 34 | "enumDescriptions": [ 35 | "Start of current function. Defaults to top of document if not stopped inside function.", 36 | "Always from top of document. Default before 0.0.7." 37 | ], 38 | "description": "Specifies the start position for inline values while debugging. Inline values will be shown from selected start positiion until stopped location." 39 | } 40 | } 41 | } 42 | }, 43 | "scripts": { 44 | "vscode:prepublish": "yarn run compile", 45 | "compile": "tsc -p ./", 46 | "watch": "tsc -watch -p ./", 47 | "pretest": "yarn run compile && yarn run lint", 48 | "lint": "eslint src --ext ts", 49 | "test": "node ./out/test/runTest.js" 50 | }, 51 | "devDependencies": { 52 | "@types/vscode": "^1.60.0", 53 | "@types/glob": "^7.2.0", 54 | "@types/mocha": "^9.1.1", 55 | "@types/node": "^16.0.0", 56 | "eslint": "^8.17.0", 57 | "@typescript-eslint/eslint-plugin": "^5.27.1", 58 | "@typescript-eslint/parser": "^5.27.1", 59 | "glob": "^8.0.3", 60 | "mocha": "^10.0.0", 61 | "typescript": "^4.7.3", 62 | "vscode-test": "^1.6.1", 63 | "vsce": "^2.9.1" 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/documentParser.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | import * as utils from './utils'; 3 | 4 | export class DocumentParser { 5 | // Used to avoid calling symbol provider for the same document on every stopped location 6 | private readonly functionCache: Map = new Map(); 7 | 8 | // Clear cache between debugsessions to get updated symbols 9 | clearFunctionCache(): void { 10 | this.functionCache.clear(); 11 | } 12 | 13 | async getFunctionsInScope(document: vscode.TextDocument, stoppedLocation: vscode.Range): Promise { 14 | const functions = await this.getFunctionsInDocument(document); 15 | const stoppedStart = stoppedLocation.start.line; 16 | const stoppedEnd = stoppedLocation.end.line; 17 | const res: vscode.DocumentSymbol[] = []; 18 | 19 | for (var i = 0, length = functions.length; i < length; ++i) { 20 | const func = functions[i]; 21 | // Only return functions with stopped location inside range 22 | if (func.range.start.line <= stoppedStart && func.range.end.line >= stoppedEnd && func.range.contains(stoppedLocation)) { 23 | res.push(func); 24 | } 25 | } 26 | 27 | return res; 28 | } 29 | 30 | async getFunctionsInDocument(document: vscode.TextDocument): Promise { 31 | const cacheKey = document.uri.toString(); 32 | if (this.functionCache.has(cacheKey)) { 33 | return this.functionCache.get(cacheKey)!; 34 | } 35 | 36 | const documentSymbols = await vscode.commands.executeCommand('vscode.executeDocumentSymbolProvider', document.uri); 37 | let functions: vscode.DocumentSymbol[] = []; 38 | 39 | if (documentSymbols) { 40 | // Get all functions in a flat array from the symbol-tree 41 | functions = utils.flattenSymbols(documentSymbols).filter(s => s.kind === vscode.SymbolKind.Function); 42 | } 43 | 44 | this.functionCache.set(cacheKey, functions); 45 | return functions; 46 | } 47 | 48 | async getStartLine(document: vscode.TextDocument, startLocationSetting: string, stoppedLocation: vscode.Range): Promise { 49 | if (startLocationSetting === 'document') { 50 | return 0; 51 | } 52 | 53 | // Lookup closest matching function start line or default to document start (0) 54 | const functions = await this.getFunctionsInScope(document, stoppedLocation); 55 | return Math.max(0, ...functions.map(fn => fn.range.start.line)); 56 | } 57 | 58 | async getExcludedLines(document: vscode.TextDocument, stoppedLocation: vscode.Range, startLine: number): Promise> { 59 | const functions = await this.getFunctionsInDocument(document); 60 | const stoppedEnd = stoppedLocation.end.line; 61 | const excludedLines = []; 62 | 63 | for (var i = 0, length = functions.length; i < length; ++i) { 64 | const func = functions[i]; 65 | // StartLine (either document start or closest function start) are provided, so functions necessary to exclude 66 | // will always start >= documentStart or same as currentFunction start if nested function. 67 | // Don't bother checking functions before startLine or after stoppedLocation 68 | if (func.range.start.line >= startLine && func.range.start.line <= stoppedEnd && !func.range.contains(stoppedLocation)) { 69 | const functionRange = utils.range(func.range.start.line, func.range.end.line); 70 | excludedLines.push(...functionRange); 71 | } 72 | } 73 | 74 | // Ensure we don't exclude our stopped location and make lookup blazing fast 75 | return new Set(excludedLines.filter(line => line < stoppedLocation.start.line || line > stoppedEnd)); 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | import { PowerShellVariableInlineValuesProvider } from './powerShellVariableInlineValuesProvider'; 3 | import { DocumentParser } from './documentParser'; 4 | 5 | export function activate(context: vscode.ExtensionContext) { 6 | const parser = new DocumentParser(); 7 | 8 | context.subscriptions.push(vscode.languages.registerInlineValuesProvider('powershell', new PowerShellVariableInlineValuesProvider(parser))); 9 | 10 | // Clear function symbol cache to ensure we get symbols from any updated files 11 | context.subscriptions.push( 12 | vscode.debug.onDidTerminateDebugSession((e) => { 13 | if (e.type.toLowerCase() === 'powershell') { 14 | parser.clearFunctionCache(); 15 | } 16 | }) 17 | ); 18 | } 19 | 20 | export function deactivate() { } 21 | -------------------------------------------------------------------------------- /src/powerShellVariableInlineValuesProvider.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | import { DocumentParser } from './documentParser'; 3 | 4 | export class PowerShellVariableInlineValuesProvider implements vscode.InlineValuesProvider { 5 | 6 | // Known constants 7 | private readonly knownConstants = ['$true', '$false', '$null']; 8 | 9 | // https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_scopes?view=powershell-5.1#scope-modifiers 10 | private readonly supportedScopes = ['global', 'local', 'script', 'private', 'using', 'variable']; 11 | 12 | // Variable patterns 13 | // https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_variables?view=powershell-5.1#variable-names-that-include-special-characters 14 | private readonly alphanumChars = /(?:\p{Ll}|\p{Lu}|\p{Nd}|[_?]|\p{Lt}|\p{Lm}|\p{Lo})/.source; 15 | private readonly variableRegex = new RegExp([ 16 | '(?:\\$\\{(?.*?)(? { 27 | const allValues: vscode.InlineValue[] = []; 28 | 29 | const extensionSettings = vscode.workspace.getConfiguration('powershellInlineValues'); 30 | const startLocationSetting = extensionSettings.get('startLocation') ?? 'currentFunction'; 31 | const startLine = await this.documentParser.getStartLine(document, startLocationSetting, context.stoppedLocation); 32 | const endLine = context.stoppedLocation.end.line; 33 | const excludedLines = await this.documentParser.getExcludedLines(document, context.stoppedLocation, startLine); 34 | 35 | for (let l = startLine; l <= endLine; l++) { 36 | // Exclude lines out of scope (other functions) 37 | if (excludedLines.has(l)) { 38 | continue; 39 | } 40 | 41 | const line = document.lineAt(l); 42 | 43 | // Skip over comments 44 | if (line.text.trimStart().startsWith('#')) { 45 | continue; 46 | } 47 | 48 | for (let match = this.variableRegex.exec(line.text); match; match = this.variableRegex.exec(line.text)) { 49 | // If we're looking at special characters variable, use the extracted variable name in capture group 50 | let varName = match[0][1] === '{' 51 | ? '$' + match.groups?.specialName?.replace(/`(.)/g, '$1') // Remove backticks used as escape char for curly braces, unicode etc. 52 | : match[0]; 53 | 54 | // If there's a scope, we need to remove it 55 | const colon = varName.indexOf(':'); 56 | if (colon !== -1) { 57 | // If invalid scope, ignore 58 | const scope = varName.substring(1, colon); 59 | if (!this.supportedScopes.includes(scope.toLowerCase())) { 60 | continue; 61 | } 62 | 63 | varName = '$' + varName.substring(colon + 1); 64 | } 65 | 66 | // If known PowerShell constant, ignore 67 | if (this.knownConstants.includes(varName.toLowerCase())) { 68 | continue; 69 | } 70 | 71 | const rng = new vscode.Range(l, match.index, l, match.index + varName.length); 72 | allValues.push(new vscode.InlineValueVariableLookup(rng, varName, false)); 73 | } 74 | } 75 | return allValues; 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/test/runTest.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | import * as cp from 'child_process'; 3 | import { runTests, downloadAndUnzipVSCode, resolveCliPathFromVSCodeExecutablePath } from 'vscode-test'; 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 and unzip it 16 | const vscodeExecutablePath = await downloadAndUnzipVSCode('stable'); 17 | const cliPath = resolveCliPathFromVSCodeExecutablePath(vscodeExecutablePath); 18 | 19 | // Use cp.spawn / cp.exec for custom setup. 20 | // Need powershell extension for document symbol provider 21 | cp.spawnSync(cliPath, ['--install-extension', 'ms-vscode.powershell'], { 22 | encoding: 'utf-8', 23 | stdio: 'inherit' 24 | }); 25 | 26 | // Run tests using custom vscode setup 27 | await runTests({ vscodeExecutablePath, extensionDevelopmentPath, extensionTestsPath }); 28 | } catch (err) { 29 | console.error(err); 30 | console.error('Failed to run tests'); 31 | process.exit(1); 32 | } 33 | } 34 | 35 | main(); 36 | -------------------------------------------------------------------------------- /src/test/suite/documentParser.test.ts: -------------------------------------------------------------------------------- 1 | import * as assert from 'assert'; 2 | import * as vscode from 'vscode'; 3 | import { DocumentParser } from '../../documentParser'; 4 | 5 | suite('DocumentParser tests', async () => { 6 | const parser: DocumentParser = new DocumentParser(); 7 | let docSample1: vscode.TextDocument; 8 | 9 | suiteSetup(async () => { 10 | docSample1 = await vscode.workspace.openTextDocument({ 11 | language: 'powershell', 12 | content: ` 13 | $a; 14 | function test1 { 15 | function test2 { 16 | $b # Stopped location 17 | } 18 | $a 19 | } 20 | $b 21 | $notfound 22 | `, 23 | }); 24 | }); 25 | 26 | suite('getFunctionsInScope() function', async () => { 27 | test('returns only functions with stoppedLocation in range', async () => { 28 | const result = await parser.getFunctionsInScope(docSample1, new vscode.Range(4, 8, 4, 10)); 29 | assert.strictEqual(result.length, 2); 30 | assert.strictEqual(result[0].name, 'test1 { }'); 31 | assert.strictEqual(result[0].kind, vscode.SymbolKind.Function); 32 | assert.strictEqual(result[1].name, 'test2 { }'); 33 | assert.strictEqual(result[1].kind, vscode.SymbolKind.Function); 34 | }); 35 | }); 36 | 37 | suite('getFunctionsInDocument() function', async () => { 38 | test('returns all functions in document', async () => { 39 | const doc = await vscode.workspace.openTextDocument({ 40 | language: 'powershell', 41 | content: ` 42 | $a; 43 | function test1 { 44 | function test2 { 45 | $b 46 | } 47 | $a 48 | } 49 | $b # Stopped location 50 | function test3 { } 51 | $notfound 52 | `, 53 | }); 54 | 55 | const result = await parser.getFunctionsInDocument(doc); 56 | assert.strictEqual(result.length, 3); 57 | assert.strictEqual(result[0].name, 'test1 { }'); 58 | assert.strictEqual(result[0].kind, vscode.SymbolKind.Function); 59 | assert.strictEqual(result[1].name, 'test2 { }'); 60 | assert.strictEqual(result[1].kind, vscode.SymbolKind.Function); 61 | assert.strictEqual(result[2].name, 'test3 { }'); 62 | assert.strictEqual(result[2].kind, vscode.SymbolKind.Function); 63 | }); 64 | 65 | test('returns empty array when no functions exist', async () => { 66 | const doc = await vscode.workspace.openTextDocument({ 67 | language: 'powershell', 68 | content: ` 69 | $a; 70 | $b # Stopped location 71 | $notfound 72 | `, 73 | }); 74 | 75 | const result = await parser.getFunctionsInDocument(doc); 76 | assert.strictEqual(result.length, 0); 77 | }); 78 | }); 79 | 80 | suite('getStartLine() function', async () => { 81 | test('returns linenumber for closest function start when stopped inside function', async () => { 82 | const result = await parser.getStartLine(docSample1, 'currentFunction', new vscode.Range(4, 8, 4, 10)); 83 | assert.strictEqual(result, 3); 84 | }); 85 | 86 | test('returns document start when startLocationSetting is set to document when stopped inside function', async () => { 87 | const result = await parser.getStartLine(docSample1, 'document', new vscode.Range(4, 8, 4, 10)); 88 | assert.strictEqual(result, 0); 89 | }); 90 | 91 | test('returns document start when not stopped inside function', async () => { 92 | const doc = await vscode.workspace.openTextDocument({ 93 | language: 'powershell', 94 | content: ` 95 | $a; 96 | function test1 { 97 | function test2 { 98 | $b 99 | } 100 | $a 101 | } 102 | $b # Stopped location 103 | $notfound 104 | `, 105 | }); 106 | 107 | const result = await parser.getStartLine(doc, 'currentFunction', new vscode.Range(8, 0, 8, 3)); 108 | assert.strictEqual(result, 0); 109 | }); 110 | }); 111 | 112 | suite('getExcludedLines() function', async () => { 113 | test('returns array of lines for all functions outside scope of stopped location', async () => { 114 | const doc = await vscode.workspace.openTextDocument({ 115 | language: 'powershell', 116 | content: ` 117 | $a 118 | function test1 { 119 | $b 120 | $notfound 121 | } 122 | 123 | function test2 { 124 | $helloWorld 125 | } 126 | 127 | $a # Stopped location 128 | 129 | test1 130 | `, 131 | }); 132 | 133 | const result = await parser.getExcludedLines(doc, new vscode.Range(11, 0, 11, 3), 0); 134 | assert.strictEqual(result.size, 7); 135 | assert.strictEqual(result.has(2), true); 136 | assert.strictEqual(result.has(3), true); 137 | assert.strictEqual(result.has(4), true); 138 | assert.strictEqual(result.has(5), true); 139 | assert.strictEqual(result.has(7), true); 140 | assert.strictEqual(result.has(8), true); 141 | assert.strictEqual(result.has(9), true); 142 | }); 143 | 144 | test('returns empty array when no functions out of scope are present in range', async () => { 145 | // range = startline (test2 function start) -> stopped location 146 | const doc = await vscode.workspace.openTextDocument({ 147 | language: 'powershell', 148 | content: ` 149 | $a 150 | function test1 { 151 | $b 152 | $notfound 153 | } 154 | 155 | function test2 { 156 | $b # Stopped location 157 | } 158 | $a 159 | 160 | test2 161 | `, 162 | }); 163 | 164 | const result = await parser.getExcludedLines(doc, new vscode.Range(8, 4, 8, 7), 7); 165 | assert.strictEqual(result.size, 0); 166 | }); 167 | 168 | test('does not exclude stoppedLocation multi-range', async () => { 169 | const doc = await vscode.workspace.openTextDocument({ 170 | language: 'powershell', 171 | content: ` 172 | function test2 { 173 | $b 174 | }; $param = @{ # Stopped location 175 | Abc = 123 # Stopped location 176 | } # Stopped location 177 | `, 178 | }); 179 | 180 | const result = await parser.getExcludedLines(doc, new vscode.Range(3, 3, 5, 1), 0); 181 | assert.strictEqual(result.size, 2); 182 | assert.strictEqual(result.has(1), true); 183 | assert.strictEqual(result.has(2), true); 184 | }); 185 | 186 | test('does not exclude stoppedLocation line when same as out of scope function', async () => { 187 | const doc = await vscode.workspace.openTextDocument({ 188 | language: 'powershell', 189 | content: ` 190 | function test1 { }; $b; function test2 { }; #$b is stoppedLocation 191 | `, 192 | }); 193 | 194 | const result = await parser.getExcludedLines(doc, new vscode.Range(1, 20, 1, 25), 0); 195 | assert.strictEqual(result.size, 0); 196 | }); 197 | }); 198 | }); 199 | -------------------------------------------------------------------------------- /src/test/suite/index.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | import * as Mocha from 'mocha'; 3 | import * as glob from 'glob'; 4 | import { ensureEditorServicesIsConnected } from '../testUtils'; 5 | 6 | export async function run(): Promise { 7 | // Create the mocha test 8 | const mocha = new Mocha({ 9 | ui: 'tdd', 10 | color: true 11 | }); 12 | 13 | const testsRoot = path.resolve(__dirname, '..'); 14 | 15 | // Ensure PowerShell extension is finished starting because we need it's symbol provider 16 | await ensureEditorServicesIsConnected(); 17 | 18 | return new Promise((c, e) => { 19 | glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { 20 | if (err) { 21 | return e(err); 22 | } 23 | 24 | // Add files to the test suite 25 | files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); 26 | 27 | try { 28 | // Run the mocha test 29 | mocha.run(failures => { 30 | if (failures > 0) { 31 | e(new Error(`${failures} tests failed.`)); 32 | } else { 33 | c(); 34 | } 35 | }); 36 | } catch (err) { 37 | console.error(err); 38 | e(err); 39 | } 40 | }); 41 | }); 42 | } 43 | -------------------------------------------------------------------------------- /src/test/suite/powerShellVariableInlineValuesProvider.test.ts: -------------------------------------------------------------------------------- 1 | import * as assert from 'assert'; 2 | import * as vscode from 'vscode'; 3 | import { PowerShellVariableInlineValuesProvider } from '../../powerShellVariableInlineValuesProvider'; 4 | import { DocumentParser } from '../../documentParser'; 5 | 6 | suite('PowerShellVariableInlineValuesProvider tests', async () => { 7 | suite('Variable detection', async () => { 8 | const provider: PowerShellVariableInlineValuesProvider = new PowerShellVariableInlineValuesProvider(new DocumentParser()); 9 | 10 | test('Misc variable tests', async () => { 11 | const doc = await vscode.workspace.openTextDocument({ 12 | language: 'powershell', 13 | content: ` 14 | $normal = Get-Process 15 | $script:scoped = 5 16 | $numb3rInside = 'asdf' 17 | $33333 = 'numbers' 18 | $normal, \${braces}, $script:scoped 19 | 4 20 | `, 21 | }); 22 | 23 | const result = await provider.provideInlineValues(doc, new vscode.Range(0, 0, 0, 0), { 24 | stoppedLocation: new vscode.Range(doc.lineCount - 1, 0, doc.lineCount - 1, 0), 25 | frameId: 0 26 | }); 27 | 28 | assert.strictEqual(result?.length, 7); 29 | for (let i = 0; i < result.length; i++) { 30 | const variable = result![i] as vscode.InlineValueVariableLookup; 31 | 32 | let name: string = ''; 33 | let startChar: number = 0; 34 | let line: number = i + 1; 35 | switch (i) { 36 | case 0: 37 | name = '$normal'; 38 | break; 39 | case 1: 40 | name = '$scoped'; 41 | break; 42 | case 2: 43 | name = '$numb3rInside'; 44 | break; 45 | case 3: 46 | name = '$33333'; 47 | break; 48 | case 4: 49 | name = '$normal'; 50 | break; 51 | case 5: 52 | name = '$braces'; 53 | startChar = 9; 54 | line = 5; 55 | break; 56 | case 6: 57 | name = '$scoped'; 58 | startChar = 20; 59 | line = 5; 60 | break; 61 | } 62 | 63 | assert.strictEqual(variable.caseSensitiveLookup, false); 64 | assert.strictEqual(variable.range.start.line, line); 65 | assert.strictEqual(variable.range.end.line, line); 66 | assert.strictEqual(variable.range.start.character, startChar); 67 | assert.strictEqual(variable.variableName, name); 68 | assert.strictEqual(variable.range.end.character, name.length + startChar); 69 | } 70 | }); 71 | 72 | test('Known constants ignored', async () => { 73 | const doc = await vscode.workspace.openTextDocument({ 74 | language: 'powershell', 75 | content: '$false $true $null $123', 76 | }); 77 | 78 | const result = await provider.provideInlineValues(doc, new vscode.Range(0, 0, 0, 0), { 79 | stoppedLocation: new vscode.Range(doc.lineCount - 1, 0, doc.lineCount - 1, 0), 80 | frameId: 0 81 | }); 82 | 83 | assert.strictEqual(result?.length, 1); 84 | 85 | // Making sure the test actually ran by including a real variable 86 | const variable = result![0] as vscode.InlineValueVariableLookup; 87 | assert.strictEqual(variable.caseSensitiveLookup, false); 88 | assert.strictEqual(variable.range.start.line, 0); 89 | assert.strictEqual(variable.range.end.line, 0); 90 | assert.strictEqual(variable.range.start.character, 19); 91 | assert.strictEqual(variable.variableName, '$123'); 92 | assert.strictEqual(variable.range.end.character, (19 + 4)); 93 | }); 94 | 95 | test('Alphanumerical variables', async () => { 96 | const doc = await vscode.workspace.openTextDocument({ 97 | language: 'powershell', 98 | content: ` 99 | $normal = Get-Process 100 | $numb3rInside = 'asdf' 101 | $33333 = 'numbers' 102 | $something_wrong? = 123 103 | 4 104 | `, 105 | }); 106 | 107 | const result = await provider.provideInlineValues(doc, new vscode.Range(0, 0, 0, 0), { 108 | stoppedLocation: new vscode.Range(doc.lineCount - 1, 0, doc.lineCount - 1, 0), 109 | frameId: 0 110 | }); 111 | 112 | assert.strictEqual(result?.length, 4); 113 | for (let i = 0; i < result.length; i++) { 114 | const variable = result![i] as vscode.InlineValueVariableLookup; 115 | 116 | let name: string = ''; 117 | let startChar: number = 0; 118 | let line: number = i + 1; 119 | switch (i) { 120 | case 0: 121 | name = '$normal'; 122 | break; 123 | case 1: 124 | name = '$numb3rInside'; 125 | break; 126 | case 2: 127 | name = '$33333'; 128 | break; 129 | case 3: 130 | name = '$something_wrong?'; 131 | break; 132 | } 133 | 134 | assert.strictEqual(variable.caseSensitiveLookup, false); 135 | assert.strictEqual(variable.range.start.line, line); 136 | assert.strictEqual(variable.range.end.line, line); 137 | assert.strictEqual(variable.range.start.character, startChar); 138 | assert.strictEqual(variable.variableName, name); 139 | assert.strictEqual(variable.range.end.character, name.length + startChar); 140 | } 141 | }); 142 | 143 | test('Scoped variables', async () => { 144 | const doc = await vscode.workspace.openTextDocument({ 145 | language: 'powershell', 146 | content: ` 147 | $script:scoped = 5 148 | $global:scoped = 5 149 | $local:scoped = 5 150 | $using:scoped = 5 151 | $private:scoped = 5 152 | $variable:scoped = 5 153 | \${Script:special scoped} 154 | $invalidscope:notdetected = 123 155 | 4 156 | `, 157 | }); 158 | 159 | const result = await provider.provideInlineValues(doc, new vscode.Range(0, 0, 0, 0), { 160 | stoppedLocation: new vscode.Range(doc.lineCount - 1, 0, doc.lineCount - 1, 0), 161 | frameId: 0 162 | }); 163 | 164 | assert.strictEqual(result?.length, 7); 165 | for (let i = 0; i < result.length; i++) { 166 | const variable = result![i] as vscode.InlineValueVariableLookup; 167 | 168 | let name: string = ''; 169 | let startChar: number = 0; 170 | let line: number = i + 1; 171 | switch (i) { 172 | case 0: 173 | name = '$scoped'; 174 | break; 175 | case 1: 176 | name = '$scoped'; 177 | break; 178 | case 2: 179 | name = '$scoped'; 180 | break; 181 | case 3: 182 | name = '$scoped'; 183 | break; 184 | case 4: 185 | name = '$scoped'; 186 | break; 187 | case 5: 188 | name = '$scoped'; 189 | break; 190 | case 6: 191 | name = '$special scoped'; 192 | break; 193 | } 194 | 195 | assert.strictEqual(variable.caseSensitiveLookup, false); 196 | assert.strictEqual(variable.range.start.line, line); 197 | assert.strictEqual(variable.range.end.line, line); 198 | assert.strictEqual(variable.range.start.character, startChar); 199 | assert.strictEqual(variable.variableName, name); 200 | assert.strictEqual(variable.range.end.character, name.length + startChar); 201 | } 202 | }); 203 | 204 | test('Special character variables', async () => { 205 | const doc = await vscode.workspace.openTextDocument({ 206 | language: 'powershell', 207 | content: ` 208 | \${hello\`\`b} 209 | \${braces} = "asdf" 210 | \${ } = 'spaces' 211 | \${Script:omg\`b} 212 | \${bra%!c\\e\`} { 256 | const doc = await vscode.workspace.openTextDocument({ 257 | language: 'powershell', 258 | content: `$sb = {\${hello \`{ \`} world}}`, 259 | }); 260 | 261 | const result = await provider.provideInlineValues(doc, new vscode.Range(0, 0, 0, 0), { 262 | stoppedLocation: new vscode.Range(doc.lineCount - 1, 0, doc.lineCount - 1, 0), 263 | frameId: 0 264 | }); 265 | 266 | assert.strictEqual(result?.length, 2); 267 | for (let i = 0; i < result.length; i++) { 268 | const variable = result![i] as vscode.InlineValueVariableLookup; 269 | 270 | let name: string = ''; 271 | let startChar: number = 0; 272 | let line: number = i; 273 | switch (i) { 274 | case 0: 275 | name = '$sb'; 276 | break; 277 | case 1: 278 | name = '$hello { } world'; 279 | startChar = 7; 280 | line = 0; 281 | break; 282 | } 283 | 284 | assert.strictEqual(variable.caseSensitiveLookup, false); 285 | assert.strictEqual(variable.range.start.line, line); 286 | assert.strictEqual(variable.range.end.line, line); 287 | assert.strictEqual(variable.range.start.character, startChar); 288 | assert.strictEqual(variable.variableName, name); 289 | assert.strictEqual(variable.range.end.character, name.length + startChar); 290 | } 291 | }); 292 | 293 | test('Variables used with collections', async () => { 294 | const doc = await vscode.workspace.openTextDocument({ 295 | language: 'powershell', 296 | content: ` 297 | $dict[$key] 298 | @($element,$element2, $element3) 299 | $normal, \${braces}, $script:scoped 300 | @{key = $var} 301 | @{key = \${special var}} 302 | `, 303 | }); 304 | 305 | const result = await provider.provideInlineValues(doc, new vscode.Range(0, 0, 0, 0), { 306 | stoppedLocation: new vscode.Range(doc.lineCount - 1, 0, doc.lineCount - 1, 0), 307 | frameId: 0 308 | }); 309 | 310 | assert.strictEqual(result?.length, 10); 311 | for (let i = 0; i < result.length; i++) { 312 | const variable = result![i] as vscode.InlineValueVariableLookup; 313 | 314 | let name: string = ''; 315 | let startChar: number = 0; 316 | let line: number = i + 1; 317 | switch (i) { 318 | case 0: 319 | name = '$dict'; 320 | break; 321 | case 1: 322 | name = '$key'; 323 | startChar = 6; 324 | line = 1; 325 | break; 326 | case 2: 327 | name = '$element'; 328 | startChar = 2; 329 | line = 2; 330 | break; 331 | case 3: 332 | name = '$element2'; 333 | startChar = 11; 334 | line = 2; 335 | break; 336 | case 4: 337 | name = '$element3'; 338 | startChar = 22; 339 | line = 2; 340 | break; 341 | case 5: 342 | name = '$normal'; 343 | line = 3; 344 | break; 345 | case 6: 346 | name = '$braces'; 347 | startChar = 9; 348 | line = 3; 349 | break; 350 | case 7: 351 | name = '$scoped'; 352 | startChar = 20; 353 | line = 3; 354 | break; 355 | case 8: 356 | name = '$var'; 357 | startChar = 8; 358 | line = 4; 359 | break; 360 | case 9: 361 | name = '$special var'; 362 | startChar = 8; 363 | line = 5; 364 | break; 365 | } 366 | 367 | assert.strictEqual(variable.caseSensitiveLookup, false); 368 | assert.strictEqual(variable.range.start.line, line); 369 | assert.strictEqual(variable.range.end.line, line); 370 | assert.strictEqual(variable.range.start.character, startChar); 371 | assert.strictEqual(variable.variableName, name); 372 | assert.strictEqual(variable.range.end.character, name.length + startChar); 373 | } 374 | }); 375 | 376 | test('Variables with modifiers', async () => { 377 | const doc = await vscode.workspace.openTextDocument({ 378 | language: 'powershell', 379 | content: ` 380 | $a; 381 | $a,$b 382 | $a-$b 383 | $a+$b 384 | $a/$b 385 | $a*$b 386 | `, 387 | }); 388 | 389 | const result = await provider.provideInlineValues(doc, new vscode.Range(0, 0, 0, 0), { 390 | stoppedLocation: new vscode.Range(doc.lineCount - 1, 0, doc.lineCount - 1, 0), 391 | frameId: 0 392 | }); 393 | 394 | assert.strictEqual(result?.length, 11); 395 | for (let i = 0; i < result.length; i++) { 396 | const variable = result![i] as vscode.InlineValueVariableLookup; 397 | 398 | let name: string = ''; 399 | let startChar: number = 0; 400 | let line: number = i + 1; 401 | switch (i) { 402 | case 0: 403 | name = '$a'; 404 | break; 405 | case 1: 406 | name = '$a'; 407 | break; 408 | case 2: 409 | name = '$b'; 410 | startChar = 3; 411 | line = 2; 412 | break; 413 | case 3: 414 | name = '$a'; 415 | line = 3; 416 | break; 417 | case 4: 418 | name = '$b'; 419 | startChar = 3; 420 | line = 3; 421 | break; 422 | case 5: 423 | name = '$a'; 424 | line = 4; 425 | break; 426 | case 6: 427 | name = '$b'; 428 | startChar = 3; 429 | line = 4; 430 | break; 431 | case 7: 432 | name = '$a'; 433 | line = 5; 434 | break; 435 | case 8: 436 | name = '$b'; 437 | startChar = 3; 438 | line = 5; 439 | break; 440 | case 9: 441 | name = '$a'; 442 | line = 6; 443 | break; 444 | case 10: 445 | name = '$b'; 446 | startChar = 3; 447 | line = 6; 448 | break; 449 | } 450 | 451 | assert.strictEqual(variable.caseSensitiveLookup, false); 452 | assert.strictEqual(variable.range.start.line, line); 453 | assert.strictEqual(variable.range.end.line, line); 454 | assert.strictEqual(variable.range.start.character, startChar); 455 | assert.strictEqual(variable.variableName, name); 456 | assert.strictEqual(variable.range.end.character, name.length + startChar); 457 | } 458 | }); 459 | }); 460 | 461 | suite('Common search range tests', async () => { 462 | const provider: PowerShellVariableInlineValuesProvider = new PowerShellVariableInlineValuesProvider(new DocumentParser()); 463 | 464 | test('variables below stopped location are ignored', async () => { 465 | const doc = await vscode.workspace.openTextDocument({ 466 | language: 'powershell', 467 | content: ` 468 | $a; 469 | $b 470 | $a,$b # Stopped location 471 | $a+$b 472 | $a/$b 473 | $a*$b 474 | `, 475 | }); 476 | 477 | const result = await provider.provideInlineValues(doc, new vscode.Range(0, 0, 0, 0), { 478 | stoppedLocation: new vscode.Range(3, 0, 3, 6), 479 | frameId: 0 480 | }); 481 | 482 | assert.strictEqual(result?.length, 4); 483 | for (let i = 0; i < result.length; i++) { 484 | const variable = result![i] as vscode.InlineValueVariableLookup; 485 | 486 | let name: string = ''; 487 | let startChar: number = 0; 488 | let line: number = i + 1; 489 | switch (i) { 490 | case 0: 491 | name = '$a'; 492 | break; 493 | case 1: 494 | name = '$b'; 495 | break; 496 | case 2: 497 | name = '$a'; 498 | line = 3; 499 | break; 500 | case 3: 501 | name = '$b'; 502 | startChar = 3; 503 | line = 3; 504 | break; 505 | } 506 | 507 | assert.strictEqual(variable.caseSensitiveLookup, false); 508 | assert.strictEqual(variable.range.start.line, line); 509 | assert.strictEqual(variable.range.end.line, line); 510 | assert.strictEqual(variable.range.start.character, startChar); 511 | assert.strictEqual(variable.variableName, name); 512 | assert.strictEqual(variable.range.end.character, name.length + startChar); 513 | } 514 | }); 515 | 516 | test('variables in functions outside range are ignored', async () => { 517 | const doc = await vscode.workspace.openTextDocument({ 518 | language: 'powershell', 519 | content: ` 520 | $a; 521 | function test1 { $b } 522 | $c 523 | function test2 { 524 | $d 525 | } 526 | $e # Stopped location 527 | $notfound 528 | `, 529 | }); 530 | 531 | const result = await provider.provideInlineValues(doc, new vscode.Range(0, 0, 0, 0), { 532 | stoppedLocation: new vscode.Range(7, 0, 7, 3), 533 | frameId: 0 534 | }); 535 | 536 | assert.strictEqual(result?.length, 3); 537 | for (let i = 0; i < result.length; i++) { 538 | const variable = result![i] as vscode.InlineValueVariableLookup; 539 | 540 | let name: string = ''; 541 | let startChar: number = 0; 542 | let line: number = i + 1; 543 | switch (i) { 544 | case 0: 545 | name = '$a'; 546 | break; 547 | case 1: 548 | name = '$c'; 549 | line = 3; 550 | break; 551 | case 2: 552 | name = '$e'; 553 | line = 7; 554 | break; 555 | } 556 | 557 | assert.strictEqual(variable.caseSensitiveLookup, false); 558 | assert.strictEqual(variable.range.start.line, line); 559 | assert.strictEqual(variable.range.end.line, line); 560 | assert.strictEqual(variable.range.start.character, startChar); 561 | assert.strictEqual(variable.variableName, name); 562 | assert.strictEqual(variable.range.end.character, name.length + startChar); 563 | } 564 | }); 565 | }); 566 | 567 | suite('startLocation tests', async () => { 568 | const provider: PowerShellVariableInlineValuesProvider = new PowerShellVariableInlineValuesProvider(new DocumentParser()); 569 | let currentSetting: string; 570 | 571 | suiteSetup(() => { 572 | currentSetting = vscode.workspace.getConfiguration('powershellInlineValues').get('startLocation')!; 573 | }); 574 | 575 | suiteTeardown(async () => { 576 | await vscode.workspace.getConfiguration('powershellInlineValues').update('startLocation', currentSetting, true); 577 | }); 578 | 579 | suite('startLocation is document', async () => { 580 | suiteSetup(async () => { 581 | await vscode.workspace.getConfiguration('powershellInlineValues').update('startLocation', 'document', true); 582 | }); 583 | 584 | test('all variables from document start detected', async () => { 585 | const doc = await vscode.workspace.openTextDocument({ 586 | language: 'powershell', 587 | content: ` 588 | $a; 589 | function test1 { 590 | function test2 { 591 | $b 592 | } 593 | $a # Stopped location 594 | } 595 | $notfound 596 | `, 597 | }); 598 | 599 | const result = await provider.provideInlineValues(doc, new vscode.Range(0, 0, 0, 0), { 600 | stoppedLocation: new vscode.Range(6, 4, 6, 7), 601 | frameId: 0 602 | }); 603 | 604 | assert.strictEqual(result?.length, 2); 605 | for (let i = 0; i < result.length; i++) { 606 | const variable = result![i] as vscode.InlineValueVariableLookup; 607 | let name: string = ''; 608 | let startChar: number = 0; 609 | let line: number = i + 1; 610 | switch (i) { 611 | case 0: 612 | name = '$a'; 613 | break; 614 | case 1: 615 | name = '$a'; 616 | startChar = 4; 617 | line = 6; 618 | break; 619 | } 620 | 621 | assert.strictEqual(variable.caseSensitiveLookup, false); 622 | assert.strictEqual(variable.range.start.line, line); 623 | assert.strictEqual(variable.range.end.line, line); 624 | assert.strictEqual(variable.range.start.character, startChar); 625 | assert.strictEqual(variable.variableName, name); 626 | assert.strictEqual(variable.range.end.character, name.length + startChar); 627 | } 628 | }); 629 | 630 | }); 631 | 632 | suite('startLocation is currentFunction', async () => { 633 | suiteSetup(async () => { 634 | await vscode.workspace.getConfiguration('powershellInlineValues').update('startLocation', 'currentFunction', true); 635 | }); 636 | 637 | test('only variables inside current function detected', async () => { 638 | const doc = await vscode.workspace.openTextDocument({ 639 | language: 'powershell', 640 | content: ` 641 | $a; 642 | function test1 { 643 | function test2 { 644 | $b 645 | } 646 | $a # Stopped location 647 | } 648 | $notfound 649 | `, 650 | }); 651 | 652 | const result = await provider.provideInlineValues(doc, new vscode.Range(0, 0, 0, 0), { 653 | stoppedLocation: new vscode.Range(6, 4, 6, 7), 654 | frameId: 0 655 | }); 656 | 657 | assert.strictEqual(result?.length, 1); 658 | const variable = result![0] as vscode.InlineValueVariableLookup; 659 | 660 | let name: string = '$a'; 661 | let startChar: number = 4; 662 | let line: number = 6; 663 | 664 | assert.strictEqual(variable.caseSensitiveLookup, false); 665 | assert.strictEqual(variable.range.start.line, line); 666 | assert.strictEqual(variable.range.end.line, line); 667 | assert.strictEqual(variable.range.start.character, startChar); 668 | assert.strictEqual(variable.variableName, name); 669 | assert.strictEqual(variable.range.end.character, name.length + startChar); 670 | }); 671 | 672 | test('only variables inside nested function detected', async () => { 673 | const doc = await vscode.workspace.openTextDocument({ 674 | language: 'powershell', 675 | content: ` 676 | $a; 677 | function test1 { 678 | $a 679 | function test2 { 680 | $b # Stopped location 681 | } 682 | } 683 | $notfound 684 | `, 685 | }); 686 | 687 | const result = await provider.provideInlineValues(doc, new vscode.Range(0, 0, 0, 0), { 688 | stoppedLocation: new vscode.Range(5, 8, 5, 11), 689 | frameId: 0 690 | }); 691 | 692 | assert.strictEqual(result?.length, 1); 693 | const variable = result![0] as vscode.InlineValueVariableLookup; 694 | 695 | let name: string = '$b'; 696 | let startChar: number = 8; 697 | let line: number = 5; 698 | 699 | assert.strictEqual(variable.caseSensitiveLookup, false); 700 | assert.strictEqual(variable.range.start.line, line); 701 | assert.strictEqual(variable.range.end.line, line); 702 | assert.strictEqual(variable.range.start.character, startChar); 703 | assert.strictEqual(variable.variableName, name); 704 | assert.strictEqual(variable.range.end.character, name.length + startChar); 705 | }); 706 | 707 | test('all variables in scope from document start detected when not in function', async () => { 708 | const doc = await vscode.workspace.openTextDocument({ 709 | language: 'powershell', 710 | content: ` 711 | $a; 712 | function test1 { 713 | function test2 { 714 | $b 715 | } 716 | $a 717 | } 718 | $b # Stopped location 719 | $notfound 720 | `, 721 | }); 722 | 723 | const result = await provider.provideInlineValues(doc, new vscode.Range(0, 0, 0, 0), { 724 | stoppedLocation: new vscode.Range(8, 0, 8, 3), 725 | frameId: 0 726 | }); 727 | 728 | assert.strictEqual(result?.length, 2); 729 | for (let i = 0; i < result.length; i++) { 730 | const variable = result![i] as vscode.InlineValueVariableLookup; 731 | let name: string = ''; 732 | let startChar: number = 0; 733 | let line: number = i + 1; 734 | switch (i) { 735 | case 0: 736 | name = '$a'; 737 | break; 738 | case 1: 739 | name = '$b'; 740 | startChar = 0; 741 | line = 8; 742 | break; 743 | } 744 | 745 | assert.strictEqual(variable.caseSensitiveLookup, false); 746 | assert.strictEqual(variable.range.start.line, line); 747 | assert.strictEqual(variable.range.end.line, line); 748 | assert.strictEqual(variable.range.start.character, startChar); 749 | assert.strictEqual(variable.variableName, name); 750 | assert.strictEqual(variable.range.end.character, name.length + startChar); 751 | } 752 | }); 753 | }); 754 | }); 755 | }); 756 | -------------------------------------------------------------------------------- /src/test/suite/utils.test.ts: -------------------------------------------------------------------------------- 1 | import * as assert from 'assert'; 2 | import * as utils from "../../utils"; 3 | import { DocumentSymbol, Range, SymbolKind } from 'vscode'; 4 | 5 | suite('Util tests', async () => { 6 | suite('range() function', async () => { 7 | test('returns array of 1,2,3 when called with 1,3', async () => { 8 | const result = utils.range(1, 3); 9 | assert.strictEqual(result.length, 3); 10 | assert.strictEqual(result[0], 1); 11 | assert.strictEqual(result[1], 2); 12 | assert.strictEqual(result[2], 3); 13 | }); 14 | }); 15 | 16 | suite('flattenSymbols() function', async () => { 17 | test('returns flat array of symbols with child-symbols', async () => { 18 | const root = new DocumentSymbol('f1', '', SymbolKind.Function, new Range(0, 0, 0, 0), new Range(0, 0, 0, 0)); 19 | const child1 = new DocumentSymbol('f1-child1', '', SymbolKind.Function, new Range(0, 0, 0, 0), new Range(0, 0, 0, 0)); 20 | const child2 = new DocumentSymbol('f1-child2', '', SymbolKind.Function, new Range(0, 0, 0, 0), new Range(0, 0, 0, 0)); 21 | root.children = [child1, child2]; 22 | child1.children = [new DocumentSymbol('f1-child1-inner1', '', SymbolKind.Function, new Range(0, 0, 0, 0), new Range(0, 0, 0, 0))]; 23 | const root2 = new DocumentSymbol('f2', '', SymbolKind.Function, new Range(0, 0, 0, 0), new Range(0, 0, 0, 0)); 24 | 25 | const res = utils.flattenSymbols([root, root2]); 26 | assert.strictEqual(res.length, 5); 27 | assert.strictEqual(res[0].name, 'f1'); 28 | assert.strictEqual(res[1].name, 'f1-child1'); 29 | assert.strictEqual(res[2].name, 'f1-child1-inner1'); 30 | assert.strictEqual(res[3].name, 'f1-child2'); 31 | assert.strictEqual(res[4].name, 'f2'); 32 | }); 33 | }); 34 | }); 35 | -------------------------------------------------------------------------------- /src/test/testUtils.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from "vscode"; 2 | 3 | const extensionId = 'TylerLeonhardt.vscode-inline-values-powershell'; 4 | 5 | /** 6 | * IExternalPowerShellDetails and IPowerShellExtensionClient 7 | * https://github.com/PowerShell/vscode-powershell/blob/c323846803f0d43f75562a7fd1e8c225099cc528/src/features/ExternalApi.ts#L10-L22 8 | */ 9 | export interface IExternalPowerShellDetails { 10 | exePath: string; 11 | version: string; 12 | displayName: string; 13 | architecture: string; 14 | } 15 | 16 | export interface IPowerShellExtensionClient { 17 | registerExternalExtension(id: string, apiVersion?: string): string; 18 | unregisterExternalExtension(uuid: string): boolean; 19 | getPowerShellVersionDetails(uuid: string): Promise; 20 | waitUntilStarted(uuid: string): Promise; 21 | } 22 | 23 | /** 24 | * Modified version of ensureEditorServicesIsConnected() 25 | * https://github.com/PowerShell/vscode-powershell/blob/c323846803f0d43f75562a7fd1e8c225099cc528/test/utils.ts#L17-L21 26 | */ 27 | export async function ensureExtensionIsActivated(): Promise> { 28 | const powershellExtension = vscode.extensions.getExtension("ms-vscode.PowerShell") || vscode.extensions.getExtension("ms-vscode.PowerShell-Preview"); 29 | if (!powershellExtension!.isActive) { await powershellExtension!.activate(); } 30 | return powershellExtension!; 31 | } 32 | 33 | /** 34 | * ensureEditorServicesIsConnected() 35 | * https://github.com/PowerShell/vscode-powershell/blob/c323846803f0d43f75562a7fd1e8c225099cc528/test/utils.ts#L23-L29 36 | */ 37 | export async function ensureEditorServicesIsConnected(): Promise { 38 | const powershellExtension = await ensureExtensionIsActivated(); 39 | const client = powershellExtension!.exports as IPowerShellExtensionClient; 40 | const sessionId = client.registerExternalExtension(extensionId); 41 | await client.waitUntilStarted(sessionId); 42 | client.unregisterExternalExtension(sessionId); 43 | }; 44 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import { DocumentSymbol } from 'vscode'; 2 | 3 | // Because 1..10 isn't supported here... 4 | export function range(start: number, end: number) { 5 | return Array(end - start + 1).fill(undefined).map((_, i) => start + i); 6 | } 7 | 8 | // Convert the symbol-tree to a flat array 9 | export function flattenSymbols(symbols: DocumentSymbol[]): DocumentSymbol[] { 10 | let result: DocumentSymbol[] = []; 11 | symbols.map(symbol => { 12 | result.push(symbol); 13 | if (symbol.children && symbol.children.length > 0) { 14 | result = result.concat(flattenSymbols(symbol.children)); 15 | } 16 | }); 17 | return result; 18 | } 19 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "lib": [ 7 | "es6" 8 | ], 9 | "sourceMap": true, 10 | "rootDir": "src", 11 | "strict": true /* enable all strict type-checking options */ 12 | /* Additional Checks */ 13 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 14 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 15 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 16 | }, 17 | "exclude": [ 18 | "node_modules", 19 | ".vscode-test" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@eslint/eslintrc@^1.3.0": 6 | version "1.3.0" 7 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" 8 | integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== 9 | dependencies: 10 | ajv "^6.12.4" 11 | debug "^4.3.2" 12 | espree "^9.3.2" 13 | globals "^13.15.0" 14 | ignore "^5.2.0" 15 | import-fresh "^3.2.1" 16 | js-yaml "^4.1.0" 17 | minimatch "^3.1.2" 18 | strip-json-comments "^3.1.1" 19 | 20 | "@humanwhocodes/config-array@^0.9.2": 21 | version "0.9.5" 22 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" 23 | integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== 24 | dependencies: 25 | "@humanwhocodes/object-schema" "^1.2.1" 26 | debug "^4.1.1" 27 | minimatch "^3.0.4" 28 | 29 | "@humanwhocodes/object-schema@^1.2.1": 30 | version "1.2.1" 31 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 32 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 33 | 34 | "@nodelib/fs.scandir@2.1.4": 35 | version "2.1.4" 36 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" 37 | integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== 38 | dependencies: 39 | "@nodelib/fs.stat" "2.0.4" 40 | run-parallel "^1.1.9" 41 | 42 | "@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": 43 | version "2.0.4" 44 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" 45 | integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== 46 | 47 | "@nodelib/fs.walk@^1.2.3": 48 | version "1.2.6" 49 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" 50 | integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== 51 | dependencies: 52 | "@nodelib/fs.scandir" "2.1.4" 53 | fastq "^1.6.0" 54 | 55 | "@tootallnate/once@1": 56 | version "1.1.2" 57 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" 58 | integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== 59 | 60 | "@types/glob@^7.2.0": 61 | version "7.2.0" 62 | resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" 63 | integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== 64 | dependencies: 65 | "@types/minimatch" "*" 66 | "@types/node" "*" 67 | 68 | "@types/json-schema@^7.0.9": 69 | version "7.0.11" 70 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" 71 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== 72 | 73 | "@types/minimatch@*": 74 | version "3.0.3" 75 | resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" 76 | integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== 77 | 78 | "@types/mocha@^9.1.1": 79 | version "9.1.1" 80 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" 81 | integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== 82 | 83 | "@types/node@*": 84 | version "14.14.31" 85 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" 86 | integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g== 87 | 88 | "@types/node@^16.0.0": 89 | version "16.11.39" 90 | resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.39.tgz#07223cd2bc332ad9d92135e3a522eebdee3b060e" 91 | integrity sha512-K0MsdV42vPwm9L6UwhIxMAOmcvH/1OoVkZyCgEtVu4Wx7sElGloy/W7kMBNe/oJ7V/jW9BVt1F6RahH6e7tPXw== 92 | 93 | "@types/vscode@^1.60.0": 94 | version "1.67.0" 95 | resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.67.0.tgz#8eaba41d1591aa02f5d960b7dfae3b16e066f08c" 96 | integrity sha512-GH8BDf8cw9AC9080uneJfulhSa7KHSMI2s/CyKePXoGNos9J486w2V4YKoeNUqIEkW4hKoEAWp6/cXTwyGj47g== 97 | 98 | "@typescript-eslint/eslint-plugin@^5.27.1": 99 | version "5.27.1" 100 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.1.tgz#fdf59c905354139046b41b3ed95d1609913d0758" 101 | integrity sha512-6dM5NKT57ZduNnJfpY81Phe9nc9wolnMCnknb1im6brWi1RYv84nbMS3olJa27B6+irUVV1X/Wb+Am0FjJdGFw== 102 | dependencies: 103 | "@typescript-eslint/scope-manager" "5.27.1" 104 | "@typescript-eslint/type-utils" "5.27.1" 105 | "@typescript-eslint/utils" "5.27.1" 106 | debug "^4.3.4" 107 | functional-red-black-tree "^1.0.1" 108 | ignore "^5.2.0" 109 | regexpp "^3.2.0" 110 | semver "^7.3.7" 111 | tsutils "^3.21.0" 112 | 113 | "@typescript-eslint/parser@^5.27.1": 114 | version "5.27.1" 115 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.27.1.tgz#3a4dcaa67e45e0427b6ca7bb7165122c8b569639" 116 | integrity sha512-7Va2ZOkHi5NP+AZwb5ReLgNF6nWLGTeUJfxdkVUAPPSaAdbWNnFZzLZ4EGGmmiCTg+AwlbE1KyUYTBglosSLHQ== 117 | dependencies: 118 | "@typescript-eslint/scope-manager" "5.27.1" 119 | "@typescript-eslint/types" "5.27.1" 120 | "@typescript-eslint/typescript-estree" "5.27.1" 121 | debug "^4.3.4" 122 | 123 | "@typescript-eslint/scope-manager@5.27.1": 124 | version "5.27.1" 125 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.27.1.tgz#4d1504392d01fe5f76f4a5825991ec78b7b7894d" 126 | integrity sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg== 127 | dependencies: 128 | "@typescript-eslint/types" "5.27.1" 129 | "@typescript-eslint/visitor-keys" "5.27.1" 130 | 131 | "@typescript-eslint/type-utils@5.27.1": 132 | version "5.27.1" 133 | resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.27.1.tgz#369f695199f74c1876e395ebea202582eb1d4166" 134 | integrity sha512-+UC1vVUWaDHRnC2cQrCJ4QtVjpjjCgjNFpg8b03nERmkHv9JV9X5M19D7UFMd+/G7T/sgFwX2pGmWK38rqyvXw== 135 | dependencies: 136 | "@typescript-eslint/utils" "5.27.1" 137 | debug "^4.3.4" 138 | tsutils "^3.21.0" 139 | 140 | "@typescript-eslint/types@5.27.1": 141 | version "5.27.1" 142 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.27.1.tgz#34e3e629501349d38be6ae97841298c03a6ffbf1" 143 | integrity sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg== 144 | 145 | "@typescript-eslint/typescript-estree@5.27.1": 146 | version "5.27.1" 147 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.1.tgz#7621ee78607331821c16fffc21fc7a452d7bc808" 148 | integrity sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw== 149 | dependencies: 150 | "@typescript-eslint/types" "5.27.1" 151 | "@typescript-eslint/visitor-keys" "5.27.1" 152 | debug "^4.3.4" 153 | globby "^11.1.0" 154 | is-glob "^4.0.3" 155 | semver "^7.3.7" 156 | tsutils "^3.21.0" 157 | 158 | "@typescript-eslint/utils@5.27.1": 159 | version "5.27.1" 160 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.27.1.tgz#b4678b68a94bc3b85bf08f243812a6868ac5128f" 161 | integrity sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w== 162 | dependencies: 163 | "@types/json-schema" "^7.0.9" 164 | "@typescript-eslint/scope-manager" "5.27.1" 165 | "@typescript-eslint/types" "5.27.1" 166 | "@typescript-eslint/typescript-estree" "5.27.1" 167 | eslint-scope "^5.1.1" 168 | eslint-utils "^3.0.0" 169 | 170 | "@typescript-eslint/visitor-keys@5.27.1": 171 | version "5.27.1" 172 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.1.tgz#05a62666f2a89769dac2e6baa48f74e8472983af" 173 | integrity sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ== 174 | dependencies: 175 | "@typescript-eslint/types" "5.27.1" 176 | eslint-visitor-keys "^3.3.0" 177 | 178 | "@ungap/promise-all-settled@1.1.2": 179 | version "1.1.2" 180 | resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" 181 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== 182 | 183 | acorn-jsx@^5.3.2: 184 | version "5.3.2" 185 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 186 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 187 | 188 | acorn@^8.7.1: 189 | version "8.7.1" 190 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" 191 | integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== 192 | 193 | agent-base@6: 194 | version "6.0.2" 195 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 196 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 197 | dependencies: 198 | debug "4" 199 | 200 | ajv@^6.10.0, ajv@^6.12.4: 201 | version "6.12.6" 202 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 203 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 204 | dependencies: 205 | fast-deep-equal "^3.1.1" 206 | fast-json-stable-stringify "^2.0.0" 207 | json-schema-traverse "^0.4.1" 208 | uri-js "^4.2.2" 209 | 210 | ansi-colors@4.1.1: 211 | version "4.1.1" 212 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 213 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 214 | 215 | ansi-regex@^5.0.0: 216 | version "5.0.0" 217 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 218 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 219 | 220 | ansi-regex@^5.0.1: 221 | version "5.0.1" 222 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 223 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 224 | 225 | ansi-styles@^3.2.1: 226 | version "3.2.1" 227 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 228 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 229 | dependencies: 230 | color-convert "^1.9.0" 231 | 232 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 233 | version "4.3.0" 234 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 235 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 236 | dependencies: 237 | color-convert "^2.0.1" 238 | 239 | anymatch@~3.1.2: 240 | version "3.1.2" 241 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 242 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 243 | dependencies: 244 | normalize-path "^3.0.0" 245 | picomatch "^2.0.4" 246 | 247 | argparse@^2.0.1: 248 | version "2.0.1" 249 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 250 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 251 | 252 | array-union@^2.1.0: 253 | version "2.1.0" 254 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 255 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 256 | 257 | azure-devops-node-api@^11.0.1: 258 | version "11.1.1" 259 | resolved "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-11.1.1.tgz#dd1356031fa4e334e016732594e8fee0f68268c4" 260 | integrity sha512-XDG91XzLZ15reP12s3jFkKS8oiagSICjnLwxEYieme4+4h3ZveFOFRA4iYIG40RyHXsiI0mefFYYMFIJbMpWcg== 261 | dependencies: 262 | tunnel "0.0.6" 263 | typed-rest-client "^1.8.4" 264 | 265 | balanced-match@^1.0.0: 266 | version "1.0.0" 267 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 268 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 269 | 270 | base64-js@^1.3.1: 271 | version "1.5.1" 272 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 273 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 274 | 275 | big-integer@^1.6.17: 276 | version "1.6.48" 277 | resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" 278 | integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== 279 | 280 | binary-extensions@^2.0.0: 281 | version "2.2.0" 282 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 283 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 284 | 285 | binary@~0.3.0: 286 | version "0.3.0" 287 | resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" 288 | integrity sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk= 289 | dependencies: 290 | buffers "~0.1.1" 291 | chainsaw "~0.1.0" 292 | 293 | bl@^4.0.3: 294 | version "4.1.0" 295 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" 296 | integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== 297 | dependencies: 298 | buffer "^5.5.0" 299 | inherits "^2.0.4" 300 | readable-stream "^3.4.0" 301 | 302 | bluebird@~3.4.1: 303 | version "3.4.7" 304 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" 305 | integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= 306 | 307 | boolbase@^1.0.0: 308 | version "1.0.0" 309 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" 310 | integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= 311 | 312 | brace-expansion@^1.1.7: 313 | version "1.1.11" 314 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 315 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 316 | dependencies: 317 | balanced-match "^1.0.0" 318 | concat-map "0.0.1" 319 | 320 | brace-expansion@^2.0.1: 321 | version "2.0.1" 322 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 323 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 324 | dependencies: 325 | balanced-match "^1.0.0" 326 | 327 | braces@^3.0.2, braces@~3.0.2: 328 | version "3.0.2" 329 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 330 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 331 | dependencies: 332 | fill-range "^7.0.1" 333 | 334 | browser-stdout@1.3.1: 335 | version "1.3.1" 336 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 337 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 338 | 339 | buffer-crc32@~0.2.3: 340 | version "0.2.13" 341 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 342 | integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= 343 | 344 | buffer-indexof-polyfill@~1.0.0: 345 | version "1.0.2" 346 | resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" 347 | integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== 348 | 349 | buffer@^5.5.0: 350 | version "5.7.1" 351 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 352 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 353 | dependencies: 354 | base64-js "^1.3.1" 355 | ieee754 "^1.1.13" 356 | 357 | buffers@~0.1.1: 358 | version "0.1.1" 359 | resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" 360 | integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= 361 | 362 | call-bind@^1.0.0: 363 | version "1.0.2" 364 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 365 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 366 | dependencies: 367 | function-bind "^1.1.1" 368 | get-intrinsic "^1.0.2" 369 | 370 | callsites@^3.0.0: 371 | version "3.1.0" 372 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 373 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 374 | 375 | camelcase@^6.0.0: 376 | version "6.2.0" 377 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" 378 | integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== 379 | 380 | chainsaw@~0.1.0: 381 | version "0.1.0" 382 | resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" 383 | integrity sha1-XqtQsor+WAdNDVgpE4iCi15fvJg= 384 | dependencies: 385 | traverse ">=0.3.0 <0.4" 386 | 387 | chalk@^2.4.2: 388 | version "2.4.2" 389 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 390 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 391 | dependencies: 392 | ansi-styles "^3.2.1" 393 | escape-string-regexp "^1.0.5" 394 | supports-color "^5.3.0" 395 | 396 | chalk@^4.0.0: 397 | version "4.1.0" 398 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 399 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 400 | dependencies: 401 | ansi-styles "^4.1.0" 402 | supports-color "^7.1.0" 403 | 404 | chalk@^4.1.0: 405 | version "4.1.2" 406 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 407 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 408 | dependencies: 409 | ansi-styles "^4.1.0" 410 | supports-color "^7.1.0" 411 | 412 | cheerio-select@^2.1.0: 413 | version "2.1.0" 414 | resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" 415 | integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== 416 | dependencies: 417 | boolbase "^1.0.0" 418 | css-select "^5.1.0" 419 | css-what "^6.1.0" 420 | domelementtype "^2.3.0" 421 | domhandler "^5.0.3" 422 | domutils "^3.0.1" 423 | 424 | cheerio@^1.0.0-rc.9: 425 | version "1.0.0-rc.11" 426 | resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.11.tgz#1be84be1a126958366bcc57a11648cd9b30a60c2" 427 | integrity sha512-bQwNaDIBKID5ts/DsdhxrjqFXYfLw4ste+wMKqWA8DyKcS4qwsPP4Bk8ZNaTJjvpiX/qW3BT4sU7d6Bh5i+dag== 428 | dependencies: 429 | cheerio-select "^2.1.0" 430 | dom-serializer "^2.0.0" 431 | domhandler "^5.0.3" 432 | domutils "^3.0.1" 433 | htmlparser2 "^8.0.1" 434 | parse5 "^7.0.0" 435 | parse5-htmlparser2-tree-adapter "^7.0.0" 436 | tslib "^2.4.0" 437 | 438 | chokidar@3.5.3: 439 | version "3.5.3" 440 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 441 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 442 | dependencies: 443 | anymatch "~3.1.2" 444 | braces "~3.0.2" 445 | glob-parent "~5.1.2" 446 | is-binary-path "~2.1.0" 447 | is-glob "~4.0.1" 448 | normalize-path "~3.0.0" 449 | readdirp "~3.6.0" 450 | optionalDependencies: 451 | fsevents "~2.3.2" 452 | 453 | chownr@^1.1.1: 454 | version "1.1.4" 455 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 456 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 457 | 458 | cliui@^7.0.2: 459 | version "7.0.4" 460 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 461 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 462 | dependencies: 463 | string-width "^4.2.0" 464 | strip-ansi "^6.0.0" 465 | wrap-ansi "^7.0.0" 466 | 467 | color-convert@^1.9.0: 468 | version "1.9.3" 469 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 470 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 471 | dependencies: 472 | color-name "1.1.3" 473 | 474 | color-convert@^2.0.1: 475 | version "2.0.1" 476 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 477 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 478 | dependencies: 479 | color-name "~1.1.4" 480 | 481 | color-name@1.1.3: 482 | version "1.1.3" 483 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 484 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 485 | 486 | color-name@~1.1.4: 487 | version "1.1.4" 488 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 489 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 490 | 491 | commander@^6.1.0: 492 | version "6.2.1" 493 | resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" 494 | integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== 495 | 496 | concat-map@0.0.1: 497 | version "0.0.1" 498 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 499 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 500 | 501 | core-util-is@~1.0.0: 502 | version "1.0.2" 503 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 504 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 505 | 506 | cross-spawn@^7.0.2: 507 | version "7.0.3" 508 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 509 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 510 | dependencies: 511 | path-key "^3.1.0" 512 | shebang-command "^2.0.0" 513 | which "^2.0.1" 514 | 515 | css-select@^5.1.0: 516 | version "5.1.0" 517 | resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" 518 | integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== 519 | dependencies: 520 | boolbase "^1.0.0" 521 | css-what "^6.1.0" 522 | domhandler "^5.0.2" 523 | domutils "^3.0.1" 524 | nth-check "^2.0.1" 525 | 526 | css-what@^6.1.0: 527 | version "6.1.0" 528 | resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" 529 | integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== 530 | 531 | debug@4, debug@^4.1.1: 532 | version "4.3.1" 533 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 534 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 535 | dependencies: 536 | ms "2.1.2" 537 | 538 | debug@4.3.4, debug@^4.3.2, debug@^4.3.4: 539 | version "4.3.4" 540 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 541 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 542 | dependencies: 543 | ms "2.1.2" 544 | 545 | decamelize@^4.0.0: 546 | version "4.0.0" 547 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 548 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 549 | 550 | decompress-response@^6.0.0: 551 | version "6.0.0" 552 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 553 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 554 | dependencies: 555 | mimic-response "^3.1.0" 556 | 557 | deep-extend@^0.6.0: 558 | version "0.6.0" 559 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 560 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 561 | 562 | deep-is@^0.1.3: 563 | version "0.1.3" 564 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 565 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 566 | 567 | detect-libc@^2.0.0: 568 | version "2.0.1" 569 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" 570 | integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== 571 | 572 | diff@5.0.0: 573 | version "5.0.0" 574 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 575 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 576 | 577 | dir-glob@^3.0.1: 578 | version "3.0.1" 579 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 580 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 581 | dependencies: 582 | path-type "^4.0.0" 583 | 584 | doctrine@^3.0.0: 585 | version "3.0.0" 586 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 587 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 588 | dependencies: 589 | esutils "^2.0.2" 590 | 591 | dom-serializer@^2.0.0: 592 | version "2.0.0" 593 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" 594 | integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== 595 | dependencies: 596 | domelementtype "^2.3.0" 597 | domhandler "^5.0.2" 598 | entities "^4.2.0" 599 | 600 | domelementtype@^2.3.0: 601 | version "2.3.0" 602 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" 603 | integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== 604 | 605 | domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: 606 | version "5.0.3" 607 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" 608 | integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== 609 | dependencies: 610 | domelementtype "^2.3.0" 611 | 612 | domutils@^3.0.1: 613 | version "3.0.1" 614 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" 615 | integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== 616 | dependencies: 617 | dom-serializer "^2.0.0" 618 | domelementtype "^2.3.0" 619 | domhandler "^5.0.1" 620 | 621 | duplexer2@~0.1.4: 622 | version "0.1.4" 623 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" 624 | integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= 625 | dependencies: 626 | readable-stream "^2.0.2" 627 | 628 | emoji-regex@^8.0.0: 629 | version "8.0.0" 630 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 631 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 632 | 633 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 634 | version "1.4.4" 635 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 636 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 637 | dependencies: 638 | once "^1.4.0" 639 | 640 | entities@^4.2.0, entities@^4.3.0: 641 | version "4.3.0" 642 | resolved "https://registry.yarnpkg.com/entities/-/entities-4.3.0.tgz#62915f08d67353bb4eb67e3d62641a4059aec656" 643 | integrity sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg== 644 | 645 | entities@~2.1.0: 646 | version "2.1.0" 647 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" 648 | integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== 649 | 650 | escalade@^3.1.1: 651 | version "3.1.1" 652 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 653 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 654 | 655 | escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: 656 | version "4.0.0" 657 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 658 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 659 | 660 | escape-string-regexp@^1.0.5: 661 | version "1.0.5" 662 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 663 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 664 | 665 | eslint-scope@^5.1.1: 666 | version "5.1.1" 667 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 668 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 669 | dependencies: 670 | esrecurse "^4.3.0" 671 | estraverse "^4.1.1" 672 | 673 | eslint-scope@^7.1.1: 674 | version "7.1.1" 675 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" 676 | integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== 677 | dependencies: 678 | esrecurse "^4.3.0" 679 | estraverse "^5.2.0" 680 | 681 | eslint-utils@^3.0.0: 682 | version "3.0.0" 683 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 684 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 685 | dependencies: 686 | eslint-visitor-keys "^2.0.0" 687 | 688 | eslint-visitor-keys@^2.0.0: 689 | version "2.0.0" 690 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" 691 | integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== 692 | 693 | eslint-visitor-keys@^3.3.0: 694 | version "3.3.0" 695 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" 696 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== 697 | 698 | eslint@^8.17.0: 699 | version "8.17.0" 700 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.17.0.tgz#1cfc4b6b6912f77d24b874ca1506b0fe09328c21" 701 | integrity sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw== 702 | dependencies: 703 | "@eslint/eslintrc" "^1.3.0" 704 | "@humanwhocodes/config-array" "^0.9.2" 705 | ajv "^6.10.0" 706 | chalk "^4.0.0" 707 | cross-spawn "^7.0.2" 708 | debug "^4.3.2" 709 | doctrine "^3.0.0" 710 | escape-string-regexp "^4.0.0" 711 | eslint-scope "^7.1.1" 712 | eslint-utils "^3.0.0" 713 | eslint-visitor-keys "^3.3.0" 714 | espree "^9.3.2" 715 | esquery "^1.4.0" 716 | esutils "^2.0.2" 717 | fast-deep-equal "^3.1.3" 718 | file-entry-cache "^6.0.1" 719 | functional-red-black-tree "^1.0.1" 720 | glob-parent "^6.0.1" 721 | globals "^13.15.0" 722 | ignore "^5.2.0" 723 | import-fresh "^3.0.0" 724 | imurmurhash "^0.1.4" 725 | is-glob "^4.0.0" 726 | js-yaml "^4.1.0" 727 | json-stable-stringify-without-jsonify "^1.0.1" 728 | levn "^0.4.1" 729 | lodash.merge "^4.6.2" 730 | minimatch "^3.1.2" 731 | natural-compare "^1.4.0" 732 | optionator "^0.9.1" 733 | regexpp "^3.2.0" 734 | strip-ansi "^6.0.1" 735 | strip-json-comments "^3.1.0" 736 | text-table "^0.2.0" 737 | v8-compile-cache "^2.0.3" 738 | 739 | espree@^9.3.2: 740 | version "9.3.2" 741 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" 742 | integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== 743 | dependencies: 744 | acorn "^8.7.1" 745 | acorn-jsx "^5.3.2" 746 | eslint-visitor-keys "^3.3.0" 747 | 748 | esquery@^1.4.0: 749 | version "1.4.0" 750 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 751 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 752 | dependencies: 753 | estraverse "^5.1.0" 754 | 755 | esrecurse@^4.3.0: 756 | version "4.3.0" 757 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 758 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 759 | dependencies: 760 | estraverse "^5.2.0" 761 | 762 | estraverse@^4.1.1: 763 | version "4.3.0" 764 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 765 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 766 | 767 | estraverse@^5.1.0, estraverse@^5.2.0: 768 | version "5.2.0" 769 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 770 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 771 | 772 | esutils@^2.0.2: 773 | version "2.0.3" 774 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 775 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 776 | 777 | expand-template@^2.0.3: 778 | version "2.0.3" 779 | resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" 780 | integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== 781 | 782 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 783 | version "3.1.3" 784 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 785 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 786 | 787 | fast-glob@^3.2.9: 788 | version "3.2.11" 789 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" 790 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== 791 | dependencies: 792 | "@nodelib/fs.stat" "^2.0.2" 793 | "@nodelib/fs.walk" "^1.2.3" 794 | glob-parent "^5.1.2" 795 | merge2 "^1.3.0" 796 | micromatch "^4.0.4" 797 | 798 | fast-json-stable-stringify@^2.0.0: 799 | version "2.1.0" 800 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 801 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 802 | 803 | fast-levenshtein@^2.0.6: 804 | version "2.0.6" 805 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 806 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 807 | 808 | fastq@^1.6.0: 809 | version "1.11.0" 810 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" 811 | integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== 812 | dependencies: 813 | reusify "^1.0.4" 814 | 815 | fd-slicer@~1.1.0: 816 | version "1.1.0" 817 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" 818 | integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= 819 | dependencies: 820 | pend "~1.2.0" 821 | 822 | file-entry-cache@^6.0.1: 823 | version "6.0.1" 824 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 825 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 826 | dependencies: 827 | flat-cache "^3.0.4" 828 | 829 | fill-range@^7.0.1: 830 | version "7.0.1" 831 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 832 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 833 | dependencies: 834 | to-regex-range "^5.0.1" 835 | 836 | find-up@5.0.0: 837 | version "5.0.0" 838 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 839 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 840 | dependencies: 841 | locate-path "^6.0.0" 842 | path-exists "^4.0.0" 843 | 844 | flat-cache@^3.0.4: 845 | version "3.0.4" 846 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 847 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 848 | dependencies: 849 | flatted "^3.1.0" 850 | rimraf "^3.0.2" 851 | 852 | flat@^5.0.2: 853 | version "5.0.2" 854 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 855 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 856 | 857 | flatted@^3.1.0: 858 | version "3.1.1" 859 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" 860 | integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== 861 | 862 | fs-constants@^1.0.0: 863 | version "1.0.0" 864 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 865 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 866 | 867 | fs.realpath@^1.0.0: 868 | version "1.0.0" 869 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 870 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 871 | 872 | fsevents@~2.3.2: 873 | version "2.3.2" 874 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 875 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 876 | 877 | fstream@^1.0.12: 878 | version "1.0.12" 879 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" 880 | integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== 881 | dependencies: 882 | graceful-fs "^4.1.2" 883 | inherits "~2.0.0" 884 | mkdirp ">=0.5 0" 885 | rimraf "2" 886 | 887 | function-bind@^1.1.1: 888 | version "1.1.1" 889 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 890 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 891 | 892 | functional-red-black-tree@^1.0.1: 893 | version "1.0.1" 894 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 895 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 896 | 897 | get-caller-file@^2.0.5: 898 | version "2.0.5" 899 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 900 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 901 | 902 | get-intrinsic@^1.0.2: 903 | version "1.1.2" 904 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" 905 | integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== 906 | dependencies: 907 | function-bind "^1.1.1" 908 | has "^1.0.3" 909 | has-symbols "^1.0.3" 910 | 911 | github-from-package@0.0.0: 912 | version "0.0.0" 913 | resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" 914 | integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== 915 | 916 | glob-parent@^5.1.2, glob-parent@~5.1.2: 917 | version "5.1.2" 918 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 919 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 920 | dependencies: 921 | is-glob "^4.0.1" 922 | 923 | glob-parent@^6.0.1: 924 | version "6.0.2" 925 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 926 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 927 | dependencies: 928 | is-glob "^4.0.3" 929 | 930 | glob@7.2.0: 931 | version "7.2.0" 932 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 933 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 934 | dependencies: 935 | fs.realpath "^1.0.0" 936 | inflight "^1.0.4" 937 | inherits "2" 938 | minimatch "^3.0.4" 939 | once "^1.3.0" 940 | path-is-absolute "^1.0.0" 941 | 942 | glob@^7.0.6, glob@^7.1.3: 943 | version "7.1.6" 944 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 945 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 946 | dependencies: 947 | fs.realpath "^1.0.0" 948 | inflight "^1.0.4" 949 | inherits "2" 950 | minimatch "^3.0.4" 951 | once "^1.3.0" 952 | path-is-absolute "^1.0.0" 953 | 954 | glob@^8.0.3: 955 | version "8.0.3" 956 | resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" 957 | integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== 958 | dependencies: 959 | fs.realpath "^1.0.0" 960 | inflight "^1.0.4" 961 | inherits "2" 962 | minimatch "^5.0.1" 963 | once "^1.3.0" 964 | 965 | globals@^13.15.0: 966 | version "13.15.0" 967 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" 968 | integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== 969 | dependencies: 970 | type-fest "^0.20.2" 971 | 972 | globby@^11.1.0: 973 | version "11.1.0" 974 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 975 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 976 | dependencies: 977 | array-union "^2.1.0" 978 | dir-glob "^3.0.1" 979 | fast-glob "^3.2.9" 980 | ignore "^5.2.0" 981 | merge2 "^1.4.1" 982 | slash "^3.0.0" 983 | 984 | graceful-fs@^4.1.2, graceful-fs@^4.2.2: 985 | version "4.2.6" 986 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" 987 | integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== 988 | 989 | has-flag@^3.0.0: 990 | version "3.0.0" 991 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 992 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 993 | 994 | has-flag@^4.0.0: 995 | version "4.0.0" 996 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 997 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 998 | 999 | has-symbols@^1.0.3: 1000 | version "1.0.3" 1001 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 1002 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 1003 | 1004 | has@^1.0.3: 1005 | version "1.0.3" 1006 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1007 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1008 | dependencies: 1009 | function-bind "^1.1.1" 1010 | 1011 | he@1.2.0: 1012 | version "1.2.0" 1013 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 1014 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 1015 | 1016 | hosted-git-info@^4.0.2: 1017 | version "4.1.0" 1018 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" 1019 | integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== 1020 | dependencies: 1021 | lru-cache "^6.0.0" 1022 | 1023 | htmlparser2@^8.0.1: 1024 | version "8.0.1" 1025 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010" 1026 | integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== 1027 | dependencies: 1028 | domelementtype "^2.3.0" 1029 | domhandler "^5.0.2" 1030 | domutils "^3.0.1" 1031 | entities "^4.3.0" 1032 | 1033 | http-proxy-agent@^4.0.1: 1034 | version "4.0.1" 1035 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" 1036 | integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== 1037 | dependencies: 1038 | "@tootallnate/once" "1" 1039 | agent-base "6" 1040 | debug "4" 1041 | 1042 | https-proxy-agent@^5.0.0: 1043 | version "5.0.0" 1044 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" 1045 | integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== 1046 | dependencies: 1047 | agent-base "6" 1048 | debug "4" 1049 | 1050 | ieee754@^1.1.13: 1051 | version "1.2.1" 1052 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 1053 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 1054 | 1055 | ignore@^5.2.0: 1056 | version "5.2.0" 1057 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" 1058 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 1059 | 1060 | import-fresh@^3.0.0, import-fresh@^3.2.1: 1061 | version "3.3.0" 1062 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1063 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1064 | dependencies: 1065 | parent-module "^1.0.0" 1066 | resolve-from "^4.0.0" 1067 | 1068 | imurmurhash@^0.1.4: 1069 | version "0.1.4" 1070 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1071 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1072 | 1073 | inflight@^1.0.4: 1074 | version "1.0.6" 1075 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1076 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1077 | dependencies: 1078 | once "^1.3.0" 1079 | wrappy "1" 1080 | 1081 | inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3: 1082 | version "2.0.4" 1083 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1084 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1085 | 1086 | ini@~1.3.0: 1087 | version "1.3.8" 1088 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 1089 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 1090 | 1091 | is-binary-path@~2.1.0: 1092 | version "2.1.0" 1093 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1094 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1095 | dependencies: 1096 | binary-extensions "^2.0.0" 1097 | 1098 | is-extglob@^2.1.1: 1099 | version "2.1.1" 1100 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1101 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1102 | 1103 | is-fullwidth-code-point@^3.0.0: 1104 | version "3.0.0" 1105 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1106 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1107 | 1108 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: 1109 | version "4.0.1" 1110 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1111 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1112 | dependencies: 1113 | is-extglob "^2.1.1" 1114 | 1115 | is-glob@^4.0.3: 1116 | version "4.0.3" 1117 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1118 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1119 | dependencies: 1120 | is-extglob "^2.1.1" 1121 | 1122 | is-number@^7.0.0: 1123 | version "7.0.0" 1124 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1125 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1126 | 1127 | is-plain-obj@^2.1.0: 1128 | version "2.1.0" 1129 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 1130 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 1131 | 1132 | is-unicode-supported@^0.1.0: 1133 | version "0.1.0" 1134 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 1135 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 1136 | 1137 | isarray@~1.0.0: 1138 | version "1.0.0" 1139 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1140 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1141 | 1142 | isexe@^2.0.0: 1143 | version "2.0.0" 1144 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1145 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1146 | 1147 | js-yaml@4.1.0, js-yaml@^4.1.0: 1148 | version "4.1.0" 1149 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1150 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1151 | dependencies: 1152 | argparse "^2.0.1" 1153 | 1154 | json-schema-traverse@^0.4.1: 1155 | version "0.4.1" 1156 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1157 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1158 | 1159 | json-stable-stringify-without-jsonify@^1.0.1: 1160 | version "1.0.1" 1161 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1162 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1163 | 1164 | keytar@^7.7.0: 1165 | version "7.9.0" 1166 | resolved "https://registry.yarnpkg.com/keytar/-/keytar-7.9.0.tgz#4c6225708f51b50cbf77c5aae81721964c2918cb" 1167 | integrity sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ== 1168 | dependencies: 1169 | node-addon-api "^4.3.0" 1170 | prebuild-install "^7.0.1" 1171 | 1172 | leven@^3.1.0: 1173 | version "3.1.0" 1174 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 1175 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 1176 | 1177 | levn@^0.4.1: 1178 | version "0.4.1" 1179 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1180 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1181 | dependencies: 1182 | prelude-ls "^1.2.1" 1183 | type-check "~0.4.0" 1184 | 1185 | linkify-it@^3.0.1: 1186 | version "3.0.3" 1187 | resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" 1188 | integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== 1189 | dependencies: 1190 | uc.micro "^1.0.1" 1191 | 1192 | listenercount@~1.0.1: 1193 | version "1.0.1" 1194 | resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" 1195 | integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc= 1196 | 1197 | locate-path@^6.0.0: 1198 | version "6.0.0" 1199 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1200 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1201 | dependencies: 1202 | p-locate "^5.0.0" 1203 | 1204 | lodash.merge@^4.6.2: 1205 | version "4.6.2" 1206 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1207 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1208 | 1209 | log-symbols@4.1.0: 1210 | version "4.1.0" 1211 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 1212 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 1213 | dependencies: 1214 | chalk "^4.1.0" 1215 | is-unicode-supported "^0.1.0" 1216 | 1217 | lru-cache@^6.0.0: 1218 | version "6.0.0" 1219 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1220 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1221 | dependencies: 1222 | yallist "^4.0.0" 1223 | 1224 | markdown-it@^12.3.2: 1225 | version "12.3.2" 1226 | resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" 1227 | integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== 1228 | dependencies: 1229 | argparse "^2.0.1" 1230 | entities "~2.1.0" 1231 | linkify-it "^3.0.1" 1232 | mdurl "^1.0.1" 1233 | uc.micro "^1.0.5" 1234 | 1235 | mdurl@^1.0.1: 1236 | version "1.0.1" 1237 | resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" 1238 | integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= 1239 | 1240 | merge2@^1.3.0, merge2@^1.4.1: 1241 | version "1.4.1" 1242 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1243 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1244 | 1245 | micromatch@^4.0.4: 1246 | version "4.0.5" 1247 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 1248 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 1249 | dependencies: 1250 | braces "^3.0.2" 1251 | picomatch "^2.3.1" 1252 | 1253 | mime@^1.3.4: 1254 | version "1.6.0" 1255 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 1256 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1257 | 1258 | mimic-response@^3.1.0: 1259 | version "3.1.0" 1260 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 1261 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 1262 | 1263 | minimatch@5.0.1: 1264 | version "5.0.1" 1265 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" 1266 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== 1267 | dependencies: 1268 | brace-expansion "^2.0.1" 1269 | 1270 | minimatch@^3.0.3, minimatch@^3.0.4: 1271 | version "3.0.4" 1272 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1273 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1274 | dependencies: 1275 | brace-expansion "^1.1.7" 1276 | 1277 | minimatch@^3.1.2: 1278 | version "3.1.2" 1279 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1280 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1281 | dependencies: 1282 | brace-expansion "^1.1.7" 1283 | 1284 | minimatch@^5.0.1: 1285 | version "5.1.0" 1286 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" 1287 | integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== 1288 | dependencies: 1289 | brace-expansion "^2.0.1" 1290 | 1291 | minimist@^1.2.0, minimist@^1.2.3: 1292 | version "1.2.6" 1293 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" 1294 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 1295 | 1296 | minimist@^1.2.5: 1297 | version "1.2.5" 1298 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1299 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1300 | 1301 | mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: 1302 | version "0.5.3" 1303 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 1304 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 1305 | 1306 | "mkdirp@>=0.5 0": 1307 | version "0.5.5" 1308 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 1309 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 1310 | dependencies: 1311 | minimist "^1.2.5" 1312 | 1313 | mocha@^10.0.0: 1314 | version "10.0.0" 1315 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.0.0.tgz#205447d8993ec755335c4b13deba3d3a13c4def9" 1316 | integrity sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA== 1317 | dependencies: 1318 | "@ungap/promise-all-settled" "1.1.2" 1319 | ansi-colors "4.1.1" 1320 | browser-stdout "1.3.1" 1321 | chokidar "3.5.3" 1322 | debug "4.3.4" 1323 | diff "5.0.0" 1324 | escape-string-regexp "4.0.0" 1325 | find-up "5.0.0" 1326 | glob "7.2.0" 1327 | he "1.2.0" 1328 | js-yaml "4.1.0" 1329 | log-symbols "4.1.0" 1330 | minimatch "5.0.1" 1331 | ms "2.1.3" 1332 | nanoid "3.3.3" 1333 | serialize-javascript "6.0.0" 1334 | strip-json-comments "3.1.1" 1335 | supports-color "8.1.1" 1336 | workerpool "6.2.1" 1337 | yargs "16.2.0" 1338 | yargs-parser "20.2.4" 1339 | yargs-unparser "2.0.0" 1340 | 1341 | ms@2.1.2: 1342 | version "2.1.2" 1343 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1344 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1345 | 1346 | ms@2.1.3: 1347 | version "2.1.3" 1348 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1349 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1350 | 1351 | mute-stream@~0.0.4: 1352 | version "0.0.8" 1353 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 1354 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 1355 | 1356 | nanoid@3.3.3: 1357 | version "3.3.3" 1358 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" 1359 | integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== 1360 | 1361 | napi-build-utils@^1.0.1: 1362 | version "1.0.2" 1363 | resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" 1364 | integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== 1365 | 1366 | natural-compare@^1.4.0: 1367 | version "1.4.0" 1368 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1369 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1370 | 1371 | node-abi@^3.3.0: 1372 | version "3.22.0" 1373 | resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.22.0.tgz#00b8250e86a0816576258227edbce7bbe0039362" 1374 | integrity sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w== 1375 | dependencies: 1376 | semver "^7.3.5" 1377 | 1378 | node-addon-api@^4.3.0: 1379 | version "4.3.0" 1380 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" 1381 | integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== 1382 | 1383 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1384 | version "3.0.0" 1385 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1386 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1387 | 1388 | nth-check@^2.0.1: 1389 | version "2.1.1" 1390 | resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" 1391 | integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== 1392 | dependencies: 1393 | boolbase "^1.0.0" 1394 | 1395 | object-inspect@^1.9.0: 1396 | version "1.12.2" 1397 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" 1398 | integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== 1399 | 1400 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1401 | version "1.4.0" 1402 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1403 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1404 | dependencies: 1405 | wrappy "1" 1406 | 1407 | optionator@^0.9.1: 1408 | version "0.9.1" 1409 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1410 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1411 | dependencies: 1412 | deep-is "^0.1.3" 1413 | fast-levenshtein "^2.0.6" 1414 | levn "^0.4.1" 1415 | prelude-ls "^1.2.1" 1416 | type-check "^0.4.0" 1417 | word-wrap "^1.2.3" 1418 | 1419 | p-limit@^3.0.2: 1420 | version "3.1.0" 1421 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1422 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1423 | dependencies: 1424 | yocto-queue "^0.1.0" 1425 | 1426 | p-locate@^5.0.0: 1427 | version "5.0.0" 1428 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1429 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1430 | dependencies: 1431 | p-limit "^3.0.2" 1432 | 1433 | parent-module@^1.0.0: 1434 | version "1.0.1" 1435 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1436 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1437 | dependencies: 1438 | callsites "^3.0.0" 1439 | 1440 | parse-semver@^1.1.1: 1441 | version "1.1.1" 1442 | resolved "https://registry.yarnpkg.com/parse-semver/-/parse-semver-1.1.1.tgz#9a4afd6df063dc4826f93fba4a99cf223f666cb8" 1443 | integrity sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg= 1444 | dependencies: 1445 | semver "^5.1.0" 1446 | 1447 | parse5-htmlparser2-tree-adapter@^7.0.0: 1448 | version "7.0.0" 1449 | resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" 1450 | integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== 1451 | dependencies: 1452 | domhandler "^5.0.2" 1453 | parse5 "^7.0.0" 1454 | 1455 | parse5@^7.0.0: 1456 | version "7.0.0" 1457 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.0.0.tgz#51f74a5257f5fcc536389e8c2d0b3802e1bfa91a" 1458 | integrity sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g== 1459 | dependencies: 1460 | entities "^4.3.0" 1461 | 1462 | path-exists@^4.0.0: 1463 | version "4.0.0" 1464 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1465 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1466 | 1467 | path-is-absolute@^1.0.0: 1468 | version "1.0.1" 1469 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1470 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1471 | 1472 | path-key@^3.1.0: 1473 | version "3.1.1" 1474 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1475 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1476 | 1477 | path-type@^4.0.0: 1478 | version "4.0.0" 1479 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1480 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1481 | 1482 | pend@~1.2.0: 1483 | version "1.2.0" 1484 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 1485 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= 1486 | 1487 | picomatch@^2.0.4, picomatch@^2.2.1: 1488 | version "2.2.2" 1489 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 1490 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 1491 | 1492 | picomatch@^2.3.1: 1493 | version "2.3.1" 1494 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1495 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1496 | 1497 | prebuild-install@^7.0.1: 1498 | version "7.1.1" 1499 | resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" 1500 | integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== 1501 | dependencies: 1502 | detect-libc "^2.0.0" 1503 | expand-template "^2.0.3" 1504 | github-from-package "0.0.0" 1505 | minimist "^1.2.3" 1506 | mkdirp-classic "^0.5.3" 1507 | napi-build-utils "^1.0.1" 1508 | node-abi "^3.3.0" 1509 | pump "^3.0.0" 1510 | rc "^1.2.7" 1511 | simple-get "^4.0.0" 1512 | tar-fs "^2.0.0" 1513 | tunnel-agent "^0.6.0" 1514 | 1515 | prelude-ls@^1.2.1: 1516 | version "1.2.1" 1517 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1518 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1519 | 1520 | process-nextick-args@~2.0.0: 1521 | version "2.0.1" 1522 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1523 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1524 | 1525 | pump@^3.0.0: 1526 | version "3.0.0" 1527 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1528 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1529 | dependencies: 1530 | end-of-stream "^1.1.0" 1531 | once "^1.3.1" 1532 | 1533 | punycode@^2.1.0: 1534 | version "2.1.1" 1535 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1536 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1537 | 1538 | qs@^6.9.1: 1539 | version "6.10.5" 1540 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" 1541 | integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== 1542 | dependencies: 1543 | side-channel "^1.0.4" 1544 | 1545 | queue-microtask@^1.2.2: 1546 | version "1.2.2" 1547 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3" 1548 | integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== 1549 | 1550 | randombytes@^2.1.0: 1551 | version "2.1.0" 1552 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1553 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1554 | dependencies: 1555 | safe-buffer "^5.1.0" 1556 | 1557 | rc@^1.2.7: 1558 | version "1.2.8" 1559 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1560 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 1561 | dependencies: 1562 | deep-extend "^0.6.0" 1563 | ini "~1.3.0" 1564 | minimist "^1.2.0" 1565 | strip-json-comments "~2.0.1" 1566 | 1567 | read@^1.0.7: 1568 | version "1.0.7" 1569 | resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" 1570 | integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= 1571 | dependencies: 1572 | mute-stream "~0.0.4" 1573 | 1574 | readable-stream@^2.0.2, readable-stream@~2.3.6: 1575 | version "2.3.7" 1576 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1577 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1578 | dependencies: 1579 | core-util-is "~1.0.0" 1580 | inherits "~2.0.3" 1581 | isarray "~1.0.0" 1582 | process-nextick-args "~2.0.0" 1583 | safe-buffer "~5.1.1" 1584 | string_decoder "~1.1.1" 1585 | util-deprecate "~1.0.1" 1586 | 1587 | readable-stream@^3.1.1, readable-stream@^3.4.0: 1588 | version "3.6.0" 1589 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 1590 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 1591 | dependencies: 1592 | inherits "^2.0.3" 1593 | string_decoder "^1.1.1" 1594 | util-deprecate "^1.0.1" 1595 | 1596 | readdirp@~3.6.0: 1597 | version "3.6.0" 1598 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1599 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1600 | dependencies: 1601 | picomatch "^2.2.1" 1602 | 1603 | regexpp@^3.2.0: 1604 | version "3.2.0" 1605 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 1606 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 1607 | 1608 | require-directory@^2.1.1: 1609 | version "2.1.1" 1610 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1611 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1612 | 1613 | resolve-from@^4.0.0: 1614 | version "4.0.0" 1615 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1616 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1617 | 1618 | reusify@^1.0.4: 1619 | version "1.0.4" 1620 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1621 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1622 | 1623 | rimraf@2: 1624 | version "2.7.1" 1625 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 1626 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 1627 | dependencies: 1628 | glob "^7.1.3" 1629 | 1630 | rimraf@^3.0.0, rimraf@^3.0.2: 1631 | version "3.0.2" 1632 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1633 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1634 | dependencies: 1635 | glob "^7.1.3" 1636 | 1637 | run-parallel@^1.1.9: 1638 | version "1.2.0" 1639 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1640 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1641 | dependencies: 1642 | queue-microtask "^1.2.2" 1643 | 1644 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: 1645 | version "5.2.1" 1646 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1647 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1648 | 1649 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1650 | version "5.1.2" 1651 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1652 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1653 | 1654 | sax@>=0.6.0: 1655 | version "1.2.4" 1656 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 1657 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 1658 | 1659 | semver@^5.1.0: 1660 | version "5.7.1" 1661 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1662 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1663 | 1664 | semver@^7.3.5, semver@^7.3.7: 1665 | version "7.3.7" 1666 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" 1667 | integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== 1668 | dependencies: 1669 | lru-cache "^6.0.0" 1670 | 1671 | serialize-javascript@6.0.0: 1672 | version "6.0.0" 1673 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 1674 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 1675 | dependencies: 1676 | randombytes "^2.1.0" 1677 | 1678 | setimmediate@~1.0.4: 1679 | version "1.0.5" 1680 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 1681 | integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= 1682 | 1683 | shebang-command@^2.0.0: 1684 | version "2.0.0" 1685 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1686 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1687 | dependencies: 1688 | shebang-regex "^3.0.0" 1689 | 1690 | shebang-regex@^3.0.0: 1691 | version "3.0.0" 1692 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1693 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1694 | 1695 | side-channel@^1.0.4: 1696 | version "1.0.4" 1697 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1698 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1699 | dependencies: 1700 | call-bind "^1.0.0" 1701 | get-intrinsic "^1.0.2" 1702 | object-inspect "^1.9.0" 1703 | 1704 | simple-concat@^1.0.0: 1705 | version "1.0.1" 1706 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" 1707 | integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== 1708 | 1709 | simple-get@^4.0.0: 1710 | version "4.0.1" 1711 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" 1712 | integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== 1713 | dependencies: 1714 | decompress-response "^6.0.0" 1715 | once "^1.3.1" 1716 | simple-concat "^1.0.0" 1717 | 1718 | slash@^3.0.0: 1719 | version "3.0.0" 1720 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1721 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1722 | 1723 | string-width@^4.1.0, string-width@^4.2.0: 1724 | version "4.2.1" 1725 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.1.tgz#1933ce1f470973d224368009bd1316cad81d5f4f" 1726 | integrity sha512-LL0OLyN6AnfV9xqGQpDBwedT2Rt63737LxvsRxbcwpa2aIeynBApG2Sm//F3TaLHIR1aJBN52DWklc06b94o5Q== 1727 | dependencies: 1728 | emoji-regex "^8.0.0" 1729 | is-fullwidth-code-point "^3.0.0" 1730 | strip-ansi "^6.0.0" 1731 | 1732 | string_decoder@^1.1.1: 1733 | version "1.3.0" 1734 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1735 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1736 | dependencies: 1737 | safe-buffer "~5.2.0" 1738 | 1739 | string_decoder@~1.1.1: 1740 | version "1.1.1" 1741 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1742 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1743 | dependencies: 1744 | safe-buffer "~5.1.0" 1745 | 1746 | strip-ansi@^6.0.0: 1747 | version "6.0.0" 1748 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1749 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1750 | dependencies: 1751 | ansi-regex "^5.0.0" 1752 | 1753 | strip-ansi@^6.0.1: 1754 | version "6.0.1" 1755 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1756 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1757 | dependencies: 1758 | ansi-regex "^5.0.1" 1759 | 1760 | strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1761 | version "3.1.1" 1762 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1763 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1764 | 1765 | strip-json-comments@~2.0.1: 1766 | version "2.0.1" 1767 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1768 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1769 | 1770 | supports-color@8.1.1: 1771 | version "8.1.1" 1772 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1773 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1774 | dependencies: 1775 | has-flag "^4.0.0" 1776 | 1777 | supports-color@^5.3.0: 1778 | version "5.5.0" 1779 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1780 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1781 | dependencies: 1782 | has-flag "^3.0.0" 1783 | 1784 | supports-color@^7.1.0: 1785 | version "7.2.0" 1786 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1787 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1788 | dependencies: 1789 | has-flag "^4.0.0" 1790 | 1791 | tar-fs@^2.0.0: 1792 | version "2.1.1" 1793 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" 1794 | integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== 1795 | dependencies: 1796 | chownr "^1.1.1" 1797 | mkdirp-classic "^0.5.2" 1798 | pump "^3.0.0" 1799 | tar-stream "^2.1.4" 1800 | 1801 | tar-stream@^2.1.4: 1802 | version "2.2.0" 1803 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" 1804 | integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== 1805 | dependencies: 1806 | bl "^4.0.3" 1807 | end-of-stream "^1.4.1" 1808 | fs-constants "^1.0.0" 1809 | inherits "^2.0.3" 1810 | readable-stream "^3.1.1" 1811 | 1812 | text-table@^0.2.0: 1813 | version "0.2.0" 1814 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1815 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1816 | 1817 | tmp@^0.2.1: 1818 | version "0.2.1" 1819 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" 1820 | integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== 1821 | dependencies: 1822 | rimraf "^3.0.0" 1823 | 1824 | to-regex-range@^5.0.1: 1825 | version "5.0.1" 1826 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1827 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1828 | dependencies: 1829 | is-number "^7.0.0" 1830 | 1831 | "traverse@>=0.3.0 <0.4": 1832 | version "0.3.9" 1833 | resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" 1834 | integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= 1835 | 1836 | tslib@^1.8.1: 1837 | version "1.14.1" 1838 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 1839 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1840 | 1841 | tslib@^2.4.0: 1842 | version "2.4.0" 1843 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" 1844 | integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== 1845 | 1846 | tsutils@^3.21.0: 1847 | version "3.21.0" 1848 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 1849 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 1850 | dependencies: 1851 | tslib "^1.8.1" 1852 | 1853 | tunnel-agent@^0.6.0: 1854 | version "0.6.0" 1855 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1856 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 1857 | dependencies: 1858 | safe-buffer "^5.0.1" 1859 | 1860 | tunnel@0.0.6: 1861 | version "0.0.6" 1862 | resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" 1863 | integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== 1864 | 1865 | type-check@^0.4.0, type-check@~0.4.0: 1866 | version "0.4.0" 1867 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1868 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1869 | dependencies: 1870 | prelude-ls "^1.2.1" 1871 | 1872 | type-fest@^0.20.2: 1873 | version "0.20.2" 1874 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1875 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1876 | 1877 | typed-rest-client@^1.8.4: 1878 | version "1.8.9" 1879 | resolved "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.8.9.tgz#e560226bcadfe71b0fb5c416b587f8da3b8f92d8" 1880 | integrity sha512-uSmjE38B80wjL85UFX3sTYEUlvZ1JgCRhsWj/fJ4rZ0FqDUFoIuodtiVeE+cUqiVTOKPdKrp/sdftD15MDek6g== 1881 | dependencies: 1882 | qs "^6.9.1" 1883 | tunnel "0.0.6" 1884 | underscore "^1.12.1" 1885 | 1886 | typescript@^4.7.3: 1887 | version "4.7.3" 1888 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.3.tgz#8364b502d5257b540f9de4c40be84c98e23a129d" 1889 | integrity sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA== 1890 | 1891 | uc.micro@^1.0.1, uc.micro@^1.0.5: 1892 | version "1.0.6" 1893 | resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" 1894 | integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== 1895 | 1896 | underscore@^1.12.1: 1897 | version "1.13.4" 1898 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.4.tgz#7886b46bbdf07f768e0052f1828e1dcab40c0dee" 1899 | integrity sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ== 1900 | 1901 | unzipper@^0.10.11: 1902 | version "0.10.11" 1903 | resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e" 1904 | integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== 1905 | dependencies: 1906 | big-integer "^1.6.17" 1907 | binary "~0.3.0" 1908 | bluebird "~3.4.1" 1909 | buffer-indexof-polyfill "~1.0.0" 1910 | duplexer2 "~0.1.4" 1911 | fstream "^1.0.12" 1912 | graceful-fs "^4.2.2" 1913 | listenercount "~1.0.1" 1914 | readable-stream "~2.3.6" 1915 | setimmediate "~1.0.4" 1916 | 1917 | uri-js@^4.2.2: 1918 | version "4.4.1" 1919 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1920 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1921 | dependencies: 1922 | punycode "^2.1.0" 1923 | 1924 | url-join@^4.0.1: 1925 | version "4.0.1" 1926 | resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" 1927 | integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== 1928 | 1929 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 1930 | version "1.0.2" 1931 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1932 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1933 | 1934 | v8-compile-cache@^2.0.3: 1935 | version "2.2.0" 1936 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" 1937 | integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== 1938 | 1939 | vsce@^2.9.1: 1940 | version "2.9.1" 1941 | resolved "https://registry.yarnpkg.com/vsce/-/vsce-2.9.1.tgz#227a456e857175a6293b6e3e66289c6648b94f9d" 1942 | integrity sha512-l/X4hkoYgOoZhRYQpJXqexBJU2z4mzNywx+artzWnOV3v45YMM6IoDDtIcB9SWluobem476KmMPLkCdAdnvoOg== 1943 | dependencies: 1944 | azure-devops-node-api "^11.0.1" 1945 | chalk "^2.4.2" 1946 | cheerio "^1.0.0-rc.9" 1947 | commander "^6.1.0" 1948 | glob "^7.0.6" 1949 | hosted-git-info "^4.0.2" 1950 | keytar "^7.7.0" 1951 | leven "^3.1.0" 1952 | markdown-it "^12.3.2" 1953 | mime "^1.3.4" 1954 | minimatch "^3.0.3" 1955 | parse-semver "^1.1.1" 1956 | read "^1.0.7" 1957 | semver "^5.1.0" 1958 | tmp "^0.2.1" 1959 | typed-rest-client "^1.8.4" 1960 | url-join "^4.0.1" 1961 | xml2js "^0.4.23" 1962 | yauzl "^2.3.1" 1963 | yazl "^2.2.2" 1964 | 1965 | vscode-test@^1.6.1: 1966 | version "1.6.1" 1967 | resolved "https://registry.yarnpkg.com/vscode-test/-/vscode-test-1.6.1.tgz#44254c67036de92b00fdd72f6ace5f1854e1a563" 1968 | integrity sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA== 1969 | dependencies: 1970 | http-proxy-agent "^4.0.1" 1971 | https-proxy-agent "^5.0.0" 1972 | rimraf "^3.0.2" 1973 | unzipper "^0.10.11" 1974 | 1975 | which@^2.0.1: 1976 | version "2.0.2" 1977 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1978 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1979 | dependencies: 1980 | isexe "^2.0.0" 1981 | 1982 | word-wrap@^1.2.3: 1983 | version "1.2.3" 1984 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1985 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1986 | 1987 | workerpool@6.2.1: 1988 | version "6.2.1" 1989 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" 1990 | integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== 1991 | 1992 | wrap-ansi@^7.0.0: 1993 | version "7.0.0" 1994 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1995 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1996 | dependencies: 1997 | ansi-styles "^4.0.0" 1998 | string-width "^4.1.0" 1999 | strip-ansi "^6.0.0" 2000 | 2001 | wrappy@1: 2002 | version "1.0.2" 2003 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2004 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2005 | 2006 | xml2js@^0.4.23: 2007 | version "0.4.23" 2008 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" 2009 | integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== 2010 | dependencies: 2011 | sax ">=0.6.0" 2012 | xmlbuilder "~11.0.0" 2013 | 2014 | xmlbuilder@~11.0.0: 2015 | version "11.0.1" 2016 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" 2017 | integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== 2018 | 2019 | y18n@^5.0.5: 2020 | version "5.0.5" 2021 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" 2022 | integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== 2023 | 2024 | yallist@^4.0.0: 2025 | version "4.0.0" 2026 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2027 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2028 | 2029 | yargs-parser@20.2.4: 2030 | version "20.2.4" 2031 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 2032 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 2033 | 2034 | yargs-parser@^20.2.2: 2035 | version "20.2.6" 2036 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.6.tgz#69f920addf61aafc0b8b89002f5d66e28f2d8b20" 2037 | integrity sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA== 2038 | 2039 | yargs-unparser@2.0.0: 2040 | version "2.0.0" 2041 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 2042 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 2043 | dependencies: 2044 | camelcase "^6.0.0" 2045 | decamelize "^4.0.0" 2046 | flat "^5.0.2" 2047 | is-plain-obj "^2.1.0" 2048 | 2049 | yargs@16.2.0: 2050 | version "16.2.0" 2051 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 2052 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 2053 | dependencies: 2054 | cliui "^7.0.2" 2055 | escalade "^3.1.1" 2056 | get-caller-file "^2.0.5" 2057 | require-directory "^2.1.1" 2058 | string-width "^4.2.0" 2059 | y18n "^5.0.5" 2060 | yargs-parser "^20.2.2" 2061 | 2062 | yauzl@^2.3.1: 2063 | version "2.10.0" 2064 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" 2065 | integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= 2066 | dependencies: 2067 | buffer-crc32 "~0.2.3" 2068 | fd-slicer "~1.1.0" 2069 | 2070 | yazl@^2.2.2: 2071 | version "2.5.1" 2072 | resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35" 2073 | integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw== 2074 | dependencies: 2075 | buffer-crc32 "~0.2.3" 2076 | 2077 | yocto-queue@^0.1.0: 2078 | version "0.1.0" 2079 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 2080 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 2081 | --------------------------------------------------------------------------------