From d05ac6b0fdbbe6876bd5896f20a4aec9250f7ff6 Mon Sep 17 00:00:00 2001 From: Corentin Mors Date: Thu, 23 May 2024 10:38:21 +0200 Subject: [PATCH 1/2] Prepare project for launch --- .eslintrc.json | 14 +- .github/workflows/build-and-release.yml | 34 + .gitignore | 2 +- .vscode/extensions.json | 9 +- .vscode/launch.json | 26 +- .vscode/settings.json | 2 +- .vscode/tasks.json | 32 +- CHANGELOG.md | 10 +- README.md | 12 +- images/icon.png | Bin 0 -> 94218 bytes package.json | 155 +-- src/commands/getNote.ts | 29 +- src/commands/getPassword.ts | 31 +- src/commands/logout.ts | 10 +- src/commands/sync.ts | 10 +- src/extension.ts | 14 +- src/mappers/dashlane-cli-password.ts | 2 +- .../dashlane-cli.command-runner.ts | 121 +- .../dashlane-cli/dashlane-cli.commands.ts | 40 +- .../dashlane-cli/dashlane-cli.definitions.ts | 92 +- .../dashlane-cli/dashlane-cli.errors.ts | 10 +- tsconfig.json | 28 +- vsc-extension-quickstart.md | 48 +- yarn.lock | 1060 ++++++++++++++++- 24 files changed, 1434 insertions(+), 357 deletions(-) create mode 100644 .github/workflows/build-and-release.yml create mode 100644 images/icon.png diff --git a/.eslintrc.json b/.eslintrc.json index 86c86f3..10565a2 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -5,15 +5,13 @@ "ecmaVersion": 6, "sourceType": "module" }, - "plugins": [ - "@typescript-eslint" - ], + "plugins": ["@typescript-eslint"], "rules": { "@typescript-eslint/naming-convention": [ "warn", { "selector": "import", - "format": [ "camelCase", "PascalCase" ] + "format": ["camelCase", "PascalCase"] } ], "@typescript-eslint/semi": "warn", @@ -22,9 +20,5 @@ "no-throw-literal": "warn", "semi": "off" }, - "ignorePatterns": [ - "out", - "dist", - "**/*.d.ts" - ] -} \ No newline at end of file + "ignorePatterns": ["out", "dist", "**/*.d.ts"] +} diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml new file mode 100644 index 0000000..fdb6a97 --- /dev/null +++ b/.github/workflows/build-and-release.yml @@ -0,0 +1,34 @@ +on: + pull_request: + branches: + - main + push: + branches: + - main + release: + types: + - created + +jobs: + build: + strategy: + matrix: + os: [ubuntu-latest] + runs-on: ${{ matrix.os }} + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install Node.js + uses: actions/setup-node@v4 + with: + node-version: 18.x + - run: yarn + - run: xvfb-run -a yarn test + if: runner.os == 'Linux' + - run: yarn test + if: runner.os != 'Linux' + - name: Publish + if: success() && startsWith(github.ref, 'refs/tags/') && matrix.os == 'ubuntu-latest' + run: yarn deploy + env: + VSCE_PAT: ${{ secrets.VSCE_PAT }} diff --git a/.gitignore b/.gitignore index b84e592..091d61b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ dist node_modules .vscode-test/ *.vsix -**/.DS_Store \ No newline at end of file +**/.DS_Store diff --git a/.vscode/extensions.json b/.vscode/extensions.json index db70f88..3cce5f2 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,8 +1,5 @@ { - // See http://go.microsoft.com/fwlink/?LinkId=827846 - // for the documentation about the extensions.json format - "recommendations": [ - "dbaeumer.vscode-eslint", - "ms-vscode.extension-test-runner" - ] + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": ["dbaeumer.vscode-eslint", "ms-vscode.extension-test-runner"] } diff --git a/.vscode/launch.json b/.vscode/launch.json index 8880465..1d7e770 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -3,19 +3,15 @@ // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 { - "version": "0.2.0", - "configurations": [ - { - "name": "Run Extension", - "type": "extensionHost", - "request": "launch", - "args": [ - "--extensionDevelopmentPath=${workspaceFolder}" - ], - "outFiles": [ - "${workspaceFolder}/out/**/*.js" - ], - "preLaunchTask": "${defaultBuildTask}" - } - ] + "version": "0.2.0", + "configurations": [ + { + "name": "Run Extension", + "type": "extensionHost", + "request": "launch", + "args": ["--extensionDevelopmentPath=${workspaceFolder}"], + "outFiles": ["${workspaceFolder}/out/**/*.js"], + "preLaunchTask": "${defaultBuildTask}" + } + ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 30bf8c2..fa0a104 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,4 +8,4 @@ }, // Turn off tsc task auto detection since we have the necessary tasks as npm scripts "typescript.tsc.autoDetect": "off" -} \ No newline at end of file +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 3b17e53..5deb2bc 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,20 +1,20 @@ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format { - "version": "2.0.0", - "tasks": [ - { - "type": "npm", - "script": "watch", - "problemMatcher": "$tsc-watch", - "isBackground": true, - "presentation": { - "reveal": "never" - }, - "group": { - "kind": "build", - "isDefault": true - } - } - ] + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "watch", + "problemMatcher": "$tsc-watch", + "isBackground": true, + "presentation": { + "reveal": "never" + }, + "group": { + "kind": "build", + "isDefault": true + } + } + ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index d85789a..3a31a5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,9 @@ All notable changes to the "dashlane-vscode" extension will be documented in this file. -## [Unreleased] +## [v1.0.0] -- Sync command -- Logout command -- Get Password command -- Get Note command \ No newline at end of file +- Sync command +- Logout command +- Get Password command +- Get Note command diff --git a/README.md b/README.md index 1212523..611fc71 100644 --- a/README.md +++ b/README.md @@ -14,13 +14,9 @@ This extension requires that you have installed the [Dashlane CLI](https://githu This extension contributes the following settings: -* `dashlane-vscode.shell`: The shell path or a login-shell to override Dashlane CLI process default shell (see Node child_process.spawn()) for more detail. -* `dashlane-vscode.cli`: The path to the Dashlane-CLI binary (resolvable from `$PATH`). +- `dashlane-vscode.shell`: The shell path or a login-shell to override Dashlane CLI process default shell (see Node child_process.spawn()) for more detail. +- `dashlane-vscode.cli`: The path to the Dashlane-CLI binary (resolvable from `$PATH`). -## Known Issues +## Contributing -Limited feature set. - -## Release Notes - -No release yet. +Feel free to contribute to this project, fork and pull request your ideas. Don't include work that is not open source or not from you. diff --git a/images/icon.png b/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4fbe5e4bbb070322b0f4d239b92c1f00d9b3ac93 GIT binary patch literal 94218 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Č*QqWIB44xIsZ2nWxHn&j}^-y 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index a28c2a4..60c95df 100644 --- a/package.json +++ b/package.json @@ -1,72 +1,93 @@ { - "name": "dashlane-vscode", - "displayName": "dashlane-vscode", - "description": "Use Dashlane CLI from VS Code", - "version": "0.0.1", - "publisher": "Dashlane", - "repository": { - "url": "https://github.com/Dashlane/dashlane-vscode" - }, - "engines": { - "vscode": "^1.86.0" - }, - "categories": [ - "Other" - ], - "activationEvents": [], - "main": "./out/extension.js", - "contributes": { - "commands": [ - { - "command": "dashlane-vscode.sync", - "title": "Dashlane: Sync" - }, - { - "command": "dashlane-vscode.logout", - "title": "Dashlane: Logout" - }, - { - "command": "dashlane-vscode.getPassword", - "title": "Dashlane: Get Password" - }, - { - "command": "dashlane-vscode.getNote", - "title": "Dashlane: Get Note" - } + "name": "dashlane-vscode", + "displayName": "dashlane-vscode", + "description": "Use Dashlane CLI from VS Code", + "version": "1.0.0", + "publisher": "Dashlane", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/Dashlane/dashlane-vscode" + }, + "bugs": { + "url": "https://github.com/Dashlane/dashlane-vscode/issues" + }, + "homepage": "https://dashlane.github.io/dashlane-cli", + "engines": { + "vscode": "^1.86.0" + }, + "categories": [ + "Snippets", + "Other" ], - "configuration": { - "title": "Dashlane", - "properties": { - "dashlane-vscode.shell": { - "type": "string", - "default": null, - "description": "The shell path or a login-shell to override Dashlane CLI process default shell (see Node child_process.spawn()) for more detail)" - }, - "dashlane-vscode.cli": { - "type": "string", - "default": "dcli", - "description": "The path to the Dashlane-CLI binary (resolvable from $PATH)" + "keywords": [ + "dashlane", + "password", + "cli", + "vscode" + ], + "icon": "images/icon.png", + "galleryBanner": { + "color": "#0b6476", + "theme": "dark" + }, + "activationEvents": [], + "main": "./out/extension.js", + "contributes": { + "commands": [ + { + "command": "dashlane-vscode.sync", + "title": "Dashlane: Sync" + }, + { + "command": "dashlane-vscode.logout", + "title": "Dashlane: Logout" + }, + { + "command": "dashlane-vscode.getPassword", + "title": "Dashlane: Get Password" + }, + { + "command": "dashlane-vscode.getNote", + "title": "Dashlane: Get Note" + } + ], + "configuration": { + "title": "Dashlane", + "properties": { + "dashlane-vscode.shell": { + "type": "string", + "default": null, + "description": "The shell path or a login-shell to override Dashlane CLI process default shell (see Node child_process.spawn()) for more detail)" + }, + "dashlane-vscode.cli": { + "type": "string", + "default": "dcli", + "description": "The path to the Dashlane-CLI binary (resolvable from $PATH)" + } + } } - } + }, + "scripts": { + "vscode:prepublish": "yarn run compile", + "compile": "tsc -p ./", + "package": "vsce package --yarn", + "pretest": "yarn run compile && yarn run lint", + "publish": "vsce publish --yarn", + "lint": "eslint src --ext ts", + "test": "vscode-test", + "watch": "tsc -watch -p ./" + }, + "devDependencies": { + "@types/mocha": "^10.0.6", + "@types/node": "18.x", + "@types/vscode": "^1.86.0", + "@typescript-eslint/eslint-plugin": "^7.0.2", + "@typescript-eslint/parser": "^7.0.2", + "@vscode/test-cli": "^0.0.6", + "@vscode/test-electron": "^2.3.9", + "@vscode/vsce": "^2.26.1", + "eslint": "^8.56.0", + "typescript": "^5.3.3" } - }, - "scripts": { - "vscode:prepublish": "yarn run compile", - "compile": "tsc -p ./", - "watch": "tsc -watch -p ./", - "pretest": "yarn run compile && yarn run lint", - "lint": "eslint src --ext ts", - "test": "vscode-test" - }, - "devDependencies": { - "@types/vscode": "^1.86.0", - "@types/mocha": "^10.0.6", - "@types/node": "18.x", - "@typescript-eslint/eslint-plugin": "^7.0.2", - "@typescript-eslint/parser": "^7.0.2", - "eslint": "^8.56.0", - "typescript": "^5.3.3", - "@vscode/test-cli": "^0.0.6", - "@vscode/test-electron": "^2.3.9" - } } diff --git a/src/commands/getNote.ts b/src/commands/getNote.ts index 1795164..d4491e3 100644 --- a/src/commands/getNote.ts +++ b/src/commands/getNote.ts @@ -1,34 +1,35 @@ -import * as vscode from 'vscode'; -import { getNote } from '../providers/dashlane-cli/dashlane-cli.commands'; -import { noteMapper } from '../mappers/dashlane-cli-note'; +import * as vscode from "vscode"; +import { getNote } from "../providers/dashlane-cli/dashlane-cli.commands"; +import { noteMapper } from "../mappers/dashlane-cli-note"; -export const getNoteCommand = vscode.commands.registerCommand('dashlane-vscode.getNote', async () => { - const searchQuery = await vscode.window.showInputBox({ - placeHolder: "Search query", - prompt: "Search my notes on Dashlane", - }) ?? ''; +export const getNoteCommand = vscode.commands.registerCommand("dashlane-vscode.getNote", async () => { + const searchQuery = + (await vscode.window.showInputBox({ + placeHolder: "Search query", + prompt: "Search my notes on Dashlane", + })) ?? ""; try { const parsedData = await getNote(searchQuery); if (parsedData.length === 0) { - vscode.window.showWarningMessage('No note matching search query, you may need to sync your Dashlane vault'); + vscode.window.showWarningMessage("No note matching search query, you may need to sync your Dashlane vault"); return; } const quickPickItems = parsedData.map(noteMapper.toQuickPickEntry); - + const pickedNote = await vscode.window.showQuickPick(quickPickItems, { - title: 'Which note do you want to obtain?', + title: "Which note do you want to obtain?", canPickMany: false, }); - + if (pickedNote) { vscode.env.clipboard.writeText(pickedNote.note); - vscode.window.showInformationMessage('Note copied to clipboard'); + vscode.window.showInformationMessage("Note copied to clipboard"); } } catch (error) { console.error(error); - vscode.window.showErrorMessage(error instanceof Error ? error.message : 'Unkonwn error'); + vscode.window.showErrorMessage(error instanceof Error ? error.message : "Unknown error"); } }); diff --git a/src/commands/getPassword.ts b/src/commands/getPassword.ts index 4a88eea..c71bfc0 100644 --- a/src/commands/getPassword.ts +++ b/src/commands/getPassword.ts @@ -1,34 +1,37 @@ -import * as vscode from 'vscode'; -import { getPassword } from '../providers/dashlane-cli/dashlane-cli.commands'; -import { passwordMapper } from '../mappers/dashlane-cli-password'; +import * as vscode from "vscode"; +import { getPassword } from "../providers/dashlane-cli/dashlane-cli.commands"; +import { passwordMapper } from "../mappers/dashlane-cli-password"; -export const getPasswordCommand = vscode.commands.registerCommand('dashlane-vscode.getPassword', async () => { - const searchQuery = await vscode.window.showInputBox({ - placeHolder: "Search query", - prompt: "Search my passwords on Dashlane", - }) ?? ''; +export const getPasswordCommand = vscode.commands.registerCommand("dashlane-vscode.getPassword", async () => { + const searchQuery = + (await vscode.window.showInputBox({ + placeHolder: "Search query", + prompt: "Search my passwords on Dashlane", + })) ?? ""; try { const parsedData = await getPassword(searchQuery); if (parsedData.length === 0) { - vscode.window.showWarningMessage('No password matching search query, you may need to sync your Dashlane vault'); + vscode.window.showWarningMessage( + "No password matching search query, you may need to sync your Dashlane vault" + ); return; } const quickPickItems = parsedData.map(passwordMapper.toQuickPickEntry); - + const pickedPassword = await vscode.window.showQuickPick(quickPickItems, { - title: 'Which password do you want to obtain?', + title: "Which password do you want to obtain?", canPickMany: false, }); - + if (pickedPassword) { vscode.env.clipboard.writeText(pickedPassword.password); - vscode.window.showInformationMessage('Password copied to clipboard'); + vscode.window.showInformationMessage("Password copied to clipboard"); } } catch (error) { console.error(error); - vscode.window.showErrorMessage(error instanceof Error ? error.message : 'Unkonwn error'); + vscode.window.showErrorMessage(error instanceof Error ? error.message : "Unknown error"); } }); diff --git a/src/commands/logout.ts b/src/commands/logout.ts index bcfa7cf..6ef33cd 100644 --- a/src/commands/logout.ts +++ b/src/commands/logout.ts @@ -1,12 +1,12 @@ -import * as vscode from 'vscode'; -import { logout } from '../providers/dashlane-cli/dashlane-cli.commands'; +import * as vscode from "vscode"; +import { logout } from "../providers/dashlane-cli/dashlane-cli.commands"; -export const logoutCommand = vscode.commands.registerCommand('dashlane-vscode.logout', async () => { +export const logoutCommand = vscode.commands.registerCommand("dashlane-vscode.logout", async () => { try { await logout(); - vscode.window.showInformationMessage('Dashlane Vault logout task is executing'); + vscode.window.showInformationMessage("Dashlane Vault logout task is executing"); } catch (error) { console.error(error); - vscode.window.showErrorMessage(error instanceof Error ? error.message : 'Unkonwn error'); + vscode.window.showErrorMessage(error instanceof Error ? error.message : "Unknown error"); } }); diff --git a/src/commands/sync.ts b/src/commands/sync.ts index 2c760fa..6041564 100644 --- a/src/commands/sync.ts +++ b/src/commands/sync.ts @@ -1,12 +1,12 @@ -import * as vscode from 'vscode'; -import { sync } from '../providers/dashlane-cli/dashlane-cli.commands'; +import * as vscode from "vscode"; +import { sync } from "../providers/dashlane-cli/dashlane-cli.commands"; -export const syncCommand = vscode.commands.registerCommand('dashlane-vscode.sync', async () => { +export const syncCommand = vscode.commands.registerCommand("dashlane-vscode.sync", async () => { try { await sync(); - vscode.window.showInformationMessage('Dashlane Vault sync task is executing'); + vscode.window.showInformationMessage("Dashlane Vault sync task is executing"); } catch (error) { console.error(error); - vscode.window.showErrorMessage(error instanceof Error ? error.message : 'Unkonwn error'); + vscode.window.showErrorMessage(error instanceof Error ? error.message : "Unknown error"); } }); diff --git a/src/extension.ts b/src/extension.ts index 16f74fd..9c6544d 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,13 +1,13 @@ -import * as vscode from 'vscode'; -import { syncCommand } from './commands/sync'; -import { getPasswordCommand } from './commands/getPassword'; -import { logoutCommand } from './commands/logout'; -import { getNoteCommand } from './commands/getNote'; +import * as vscode from "vscode"; +import { syncCommand } from "./commands/sync"; +import { getPasswordCommand } from "./commands/getPassword"; +import { logoutCommand } from "./commands/logout"; +import { getNoteCommand } from "./commands/getNote"; export function activate(context: vscode.ExtensionContext) { - console.log('"dashlane-vscode" now active!'); + console.log('"dashlane-vscode" now active!'); - context.subscriptions.push(syncCommand, logoutCommand, getPasswordCommand, getNoteCommand); + context.subscriptions.push(syncCommand, logoutCommand, getPasswordCommand, getNoteCommand); } export function deactivate() {} diff --git a/src/mappers/dashlane-cli-password.ts b/src/mappers/dashlane-cli-password.ts index 9d583a6..2a8358b 100644 --- a/src/mappers/dashlane-cli-password.ts +++ b/src/mappers/dashlane-cli-password.ts @@ -3,7 +3,7 @@ import { CLIPasswordOutputItem } from "../providers/dashlane-cli/dashlane-cli.de export const passwordMapper = { toQuickPickEntry: (item: CLIPasswordOutputItem) => ({ label: item.title, - detail: `${item.url} (Login: ${item.login ?? 'none'})`, + detail: `${item.url} (Login: ${item.login ?? "none"})`, id: item.id, password: item.password, }), diff --git a/src/providers/dashlane-cli/dashlane-cli.command-runner.ts b/src/providers/dashlane-cli/dashlane-cli.command-runner.ts index 8930bb1..a722481 100644 --- a/src/providers/dashlane-cli/dashlane-cli.command-runner.ts +++ b/src/providers/dashlane-cli/dashlane-cli.command-runner.ts @@ -1,85 +1,82 @@ import * as vscode from "vscode"; import { spawnSync } from "child_process"; import { - DashlaneCLICommands, - DashlaneCLIExecOptions, - CommandResultType, - CommandsWithoutOutput, + DashlaneCLICommands, + DashlaneCLIExecOptions, + CommandResultType, + CommandsWithoutOutput, } from "./dashlane-cli.definitions"; import * as dashlaneCliErrors from "./dashlane-cli.errors"; import { DashlaneCLIOutputTypes } from "./dashlane-cli.definitions"; // TODO: provide context to exceptions export const execWithDashlaneCLI = async ( - command: TCommand, - options: DashlaneCLIExecOptions + command: TCommand, + options: DashlaneCLIExecOptions ): Promise> => { - const extensionSettings = - vscode.workspace.getConfiguration("dashlane-vscode"); - const configuredShell = extensionSettings.get("shell"); - const configuredCliCommand = extensionSettings.get("cli"); + const extensionSettings = vscode.workspace.getConfiguration("dashlane-vscode"); + const configuredShell = extensionSettings.get("shell"); + const configuredCliCommand = extensionSettings.get("cli"); - const dashlaneCLIArgs = [command, ...options.args]; - const expectNoOutput = CommandsWithoutOutput.includes(command); + const dashlaneCLIArgs = [command, ...options.args]; + const expectNoOutput = CommandsWithoutOutput.includes(command); - if (options.output) { - dashlaneCLIArgs.push("--output", options.output); - } + if (options.output) { + dashlaneCLIArgs.push("--output", options.output); + } - if (typeof configuredCliCommand !== "string") { - throw new dashlaneCliErrors.DashlaneCLIProviderConfigurationException( - 'Settings "dashlane-vscode.cli" must be a string' - ); - } + if (typeof configuredCliCommand !== "string") { + throw new dashlaneCliErrors.DashlaneCLIProviderConfigurationException( + 'Settings "dashlane-vscode.cli" must be a string' + ); + } - if (options.interactive) { - await vscode.tasks.executeTask( - new vscode.Task( - { type: "shell" }, - vscode.TaskScope.Global, - "Dashlane CLI", - "dashlane-vscode", - new vscode.ShellExecution( - [configuredCliCommand, ...dashlaneCLIArgs].join(" ") - ) - ) - ); + if (options.interactive) { + await vscode.tasks.executeTask( + new vscode.Task( + { type: "shell" }, + vscode.TaskScope.Global, + "Dashlane CLI", + "dashlane-vscode", + new vscode.ShellExecution([configuredCliCommand, ...dashlaneCLIArgs].join(" ")) + ) + ); - return; - } + return; + } - const childProcess = spawnSync(configuredCliCommand, dashlaneCLIArgs, { - shell: typeof configuredShell === "string" ? configuredShell : true, - encoding: "utf8", - }); + const childProcess = spawnSync(configuredCliCommand, dashlaneCLIArgs, { + shell: typeof configuredShell === "string" ? configuredShell : true, + encoding: "utf8", + }); - const errorString = childProcess.stderr?.toString(); + const errorString = childProcess.stderr?.toString(); - if (errorString && !expectNoOutput) { - throw new dashlaneCliErrors.DashlaneCLIProviderExecException(errorString); - } + if (errorString && !expectNoOutput) { + throw new dashlaneCliErrors.DashlaneCLIProviderExecException(errorString); + } - const outputString = childProcess.stdout?.toString(); + const outputString = childProcess.stdout?.toString(); - if (!outputString && !expectNoOutput) { - throw new dashlaneCliErrors.DashlaneCLIProviderEmptyOutputException(); - } + if (!outputString && !expectNoOutput) { + throw new dashlaneCliErrors.DashlaneCLIProviderEmptyOutputException(); + } - try { - if (!expectNoOutput) { - switch (options.output) { - case DashlaneCLIOutputTypes.JSON: - // TODO: validate CLI output - return JSON.parse(outputString) as CommandResultType; - default: - throw new dashlaneCliErrors.DashlaneCLIProviderParseOutputNotImplementedException( - `"${options.output}" is not implemented` - ); - } + try { + if (!expectNoOutput) { + switch (options.output) { + case DashlaneCLIOutputTypes.JSON: + // TODO: validate CLI output + return JSON.parse(outputString) as CommandResultType; + default: + throw new dashlaneCliErrors.DashlaneCLIProviderParseOutputNotImplementedException( + `"${options.output}" is not implemented` + ); + } + } + } catch (error) { + throw new dashlaneCliErrors.DashlaneCLIProviderParseOutputException("", { + cause: error, + }); } - } catch (error) { - throw new dashlaneCliErrors.DashlaneCLIProviderParseOutputException("", { - cause: error, - }); - } }; diff --git a/src/providers/dashlane-cli/dashlane-cli.commands.ts b/src/providers/dashlane-cli/dashlane-cli.commands.ts index dfef30d..26ffd79 100644 --- a/src/providers/dashlane-cli/dashlane-cli.commands.ts +++ b/src/providers/dashlane-cli/dashlane-cli.commands.ts @@ -2,29 +2,29 @@ import { execWithDashlaneCLI } from "./dashlane-cli.command-runner"; import { DashlaneCLICommands, DashlaneCLIOutputTypes } from "./dashlane-cli.definitions"; export const sync = () => - execWithDashlaneCLI(DashlaneCLICommands.SYNC, { - args: [], - output: null, - interactive: true, - }); + execWithDashlaneCLI(DashlaneCLICommands.SYNC, { + args: [], + output: null, + interactive: true, + }); export const logout = () => - execWithDashlaneCLI(DashlaneCLICommands.LOGOUT, { - args: [], - output: null, - interactive: true, - }); + execWithDashlaneCLI(DashlaneCLICommands.LOGOUT, { + args: [], + output: null, + interactive: true, + }); export const getPassword = (searchQuery: string) => - execWithDashlaneCLI(DashlaneCLICommands.PASSWORD, { - args: [searchQuery], - output: DashlaneCLIOutputTypes.JSON, - interactive: false, - }); + execWithDashlaneCLI(DashlaneCLICommands.PASSWORD, { + args: [searchQuery], + output: DashlaneCLIOutputTypes.JSON, + interactive: false, + }); export const getNote = (searchQuery: string) => - execWithDashlaneCLI(DashlaneCLICommands.NOTE, { - args: [searchQuery], - output: DashlaneCLIOutputTypes.JSON, - interactive: false, - }); \ No newline at end of file + execWithDashlaneCLI(DashlaneCLICommands.NOTE, { + args: [searchQuery], + output: DashlaneCLIOutputTypes.JSON, + interactive: false, + }); diff --git a/src/providers/dashlane-cli/dashlane-cli.definitions.ts b/src/providers/dashlane-cli/dashlane-cli.definitions.ts index 100d1ef..9e272b9 100644 --- a/src/providers/dashlane-cli/dashlane-cli.definitions.ts +++ b/src/providers/dashlane-cli/dashlane-cli.definitions.ts @@ -1,49 +1,49 @@ export enum DashlaneCLICommands { - SYNC = "sync", - READ = "read", - EXEC = "exec", - INJECT = "inject", - PASSWORD = "password", - OTP = "otp", - NOTE = "note", - SECRET = "secret", - ACCOUNTS = "accounts", - DEVICES = "deviced", - TEAM = "team", - CONFIGURE = "configure", - BACKUP = "backup", - LOGOUT = "logout", - HELP = "help", + SYNC = "sync", + READ = "read", + EXEC = "exec", + INJECT = "inject", + PASSWORD = "password", + OTP = "otp", + NOTE = "note", + SECRET = "secret", + ACCOUNTS = "accounts", + DEVICES = "deviced", + TEAM = "team", + CONFIGURE = "configure", + BACKUP = "backup", + LOGOUT = "logout", + HELP = "help", } export enum DashlaneCLIOutputTypes { - JSON = "json" + JSON = "json", } type CommandConfig = { - "inputArgs": TArgs; - "output": TOutput; - "result": TResult; + inputArgs: TArgs; + output: TOutput; + result: TResult; }; -export type UnknownCommandConfig = CommandConfig<(string)[], DashlaneCLIOutputTypes | null, unknown>; +export type UnknownCommandConfig = CommandConfig; export type CommandsTypes = { - [DashlaneCLICommands.SYNC]: CommandConfig<(never)[], null, undefined>; - [DashlaneCLICommands.READ]: UnknownCommandConfig; - [DashlaneCLICommands.EXEC]: UnknownCommandConfig; - [DashlaneCLICommands.INJECT]: UnknownCommandConfig; - [DashlaneCLICommands.PASSWORD]: CommandConfig<[string], DashlaneCLIOutputTypes.JSON, CLIPasswordOutput>; - [DashlaneCLICommands.OTP]: UnknownCommandConfig; - [DashlaneCLICommands.NOTE]: CommandConfig<[string], DashlaneCLIOutputTypes.JSON, CLINoteOutput>; - [DashlaneCLICommands.SECRET]: UnknownCommandConfig; - [DashlaneCLICommands.ACCOUNTS]: UnknownCommandConfig; - [DashlaneCLICommands.DEVICES]: UnknownCommandConfig; - [DashlaneCLICommands.TEAM]: UnknownCommandConfig; - [DashlaneCLICommands.CONFIGURE]: UnknownCommandConfig; - [DashlaneCLICommands.BACKUP]: UnknownCommandConfig; - [DashlaneCLICommands.LOGOUT]: CommandConfig<(never)[], null, undefined>; - [DashlaneCLICommands.HELP]: UnknownCommandConfig; + [DashlaneCLICommands.SYNC]: CommandConfig; + [DashlaneCLICommands.READ]: UnknownCommandConfig; + [DashlaneCLICommands.EXEC]: UnknownCommandConfig; + [DashlaneCLICommands.INJECT]: UnknownCommandConfig; + [DashlaneCLICommands.PASSWORD]: CommandConfig<[string], DashlaneCLIOutputTypes.JSON, CLIPasswordOutput>; + [DashlaneCLICommands.OTP]: UnknownCommandConfig; + [DashlaneCLICommands.NOTE]: CommandConfig<[string], DashlaneCLIOutputTypes.JSON, CLINoteOutput>; + [DashlaneCLICommands.SECRET]: UnknownCommandConfig; + [DashlaneCLICommands.ACCOUNTS]: UnknownCommandConfig; + [DashlaneCLICommands.DEVICES]: UnknownCommandConfig; + [DashlaneCLICommands.TEAM]: UnknownCommandConfig; + [DashlaneCLICommands.CONFIGURE]: UnknownCommandConfig; + [DashlaneCLICommands.BACKUP]: UnknownCommandConfig; + [DashlaneCLICommands.LOGOUT]: CommandConfig; + [DashlaneCLICommands.HELP]: UnknownCommandConfig; }; export const CommandsWithoutOutput: DashlaneCLICommands[] = [DashlaneCLICommands.SYNC, DashlaneCLICommands.LOGOUT]; @@ -53,23 +53,23 @@ export type CommandResultType = CommandsTy export type CommandArgsType = CommandsTypes[TCommand]["inputArgs"]; export type CLIPasswordOutputItem = { - id: string; - title: string; - url: string; - login: string; - password: string; + id: string; + title: string; + url: string; + login: string; + password: string; }; export type CLIPasswordOutput = CLIPasswordOutputItem[]; export type CLINoteOutputItem = { - id: string; - title: string; - content: string; + id: string; + title: string; + content: string; }; export type CLINoteOutput = CLINoteOutputItem[]; export type DashlaneCLIExecOptions = { - args: CommandArgsType; - output: CommandOutputType; - interactive: CommandOutputType extends null ? boolean : false; + args: CommandArgsType; + output: CommandOutputType; + interactive: CommandOutputType extends null ? boolean : false; }; diff --git a/src/providers/dashlane-cli/dashlane-cli.errors.ts b/src/providers/dashlane-cli/dashlane-cli.errors.ts index a8f8a2a..398db2e 100644 --- a/src/providers/dashlane-cli/dashlane-cli.errors.ts +++ b/src/providers/dashlane-cli/dashlane-cli.errors.ts @@ -1,19 +1,19 @@ export class DashlaneCLIProviderConfigurationException extends Error { - public readonly name = "DashlaneCLIProviderConfigurationException"; + public readonly name = "DashlaneCLIProviderConfigurationException"; } export class DashlaneCLIProviderExecException extends Error { - public readonly name = "DashlaneCLIProviderExecException"; + public readonly name = "DashlaneCLIProviderExecException"; } export class DashlaneCLIProviderEmptyOutputException extends Error { - public readonly name = "DashlaneCLIProviderEmptyOutputException"; + public readonly name = "DashlaneCLIProviderEmptyOutputException"; } export class DashlaneCLIProviderParseOutputException extends Error { - public readonly name = "DashlaneCLIProviderParseOutputException"; + public readonly name = "DashlaneCLIProviderParseOutputException"; } export class DashlaneCLIProviderParseOutputNotImplementedException extends Error { - public readonly name = "DashlaneCLIProviderParseOutputNotImplementedException"; + public readonly name = "DashlaneCLIProviderParseOutputNotImplementedException"; } diff --git a/tsconfig.json b/tsconfig.json index 6954702..227d172 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,17 +1,15 @@ { - "compilerOptions": { - "module": "Node16", - "target": "ES2022", - "outDir": "out", - "lib": [ - "ES2022" - ], - "sourceMap": true, - "rootDir": "src", - "strict": true /* enable all strict type-checking options */ - /* Additional Checks */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - } + "compilerOptions": { + "module": "Node16", + "target": "ES2022", + "outDir": "out", + "lib": ["ES2022"], + "sourceMap": true, + "rootDir": "src", + "strict": true /* enable all strict type-checking options */ + /* Additional Checks */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + } } diff --git a/vsc-extension-quickstart.md b/vsc-extension-quickstart.md index 3d8ce06..b83ff27 100644 --- a/vsc-extension-quickstart.md +++ b/vsc-extension-quickstart.md @@ -2,42 +2,42 @@ ## What's in the folder -* This folder contains all of the files necessary for your extension. -* `package.json` - this is the manifest file in which you declare your extension and command. - * The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin. -* `src/extension.ts` - this is the main file where you will provide the implementation of your command. - * The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`. - * We pass the function containing the implementation of the command as the second parameter to `registerCommand`. +- This folder contains all of the files necessary for your extension. +- `package.json` - this is the manifest file in which you declare your extension and command. + - The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin. +- `src/extension.ts` - this is the main file where you will provide the implementation of your command. + - The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`. + - We pass the function containing the implementation of the command as the second parameter to `registerCommand`. ## Get up and running straight away -* Press `F5` to open a new window with your extension loaded. -* Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`. -* Set breakpoints in your code inside `src/extension.ts` to debug your extension. -* Find output from your extension in the debug console. +- Press `F5` to open a new window with your extension loaded. +- Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`. +- Set breakpoints in your code inside `src/extension.ts` to debug your extension. +- Find output from your extension in the debug console. ## Make changes -* You can relaunch the extension from the debug toolbar after changing code in `src/extension.ts`. -* You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes. +- You can relaunch the extension from the debug toolbar after changing code in `src/extension.ts`. +- You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes. ## Explore the API -* You can open the full set of our API when you open the file `node_modules/@types/vscode/index.d.ts`. +- You can open the full set of our API when you open the file `node_modules/@types/vscode/index.d.ts`. ## Run tests -* Install the [Extension Test Runner](https://marketplace.visualstudio.com/items?itemName=ms-vscode.extension-test-runner) -* Run the "watch" task via the **Tasks: Run Task** command. Make sure this is running, or tests might not be discovered. -* Open the Testing view from the activity bar and click the Run Test" button, or use the hotkey `Ctrl/Cmd + ; A` -* See the output of the test result in the Test Results view. -* Make changes to `src/test/extension.test.ts` or create new test files inside the `test` folder. - * The provided test runner will only consider files matching the name pattern `**.test.ts`. - * You can create folders inside the `test` folder to structure your tests any way you want. +- Install the [Extension Test Runner](https://marketplace.visualstudio.com/items?itemName=ms-vscode.extension-test-runner) +- Run the "watch" task via the **Tasks: Run Task** command. Make sure this is running, or tests might not be discovered. +- Open the Testing view from the activity bar and click the Run Test" button, or use the hotkey `Ctrl/Cmd + ; A` +- See the output of the test result in the Test Results view. +- Make changes to `src/test/extension.test.ts` or create new test files inside the `test` folder. + - The provided test runner will only consider files matching the name pattern `**.test.ts`. + - You can create folders inside the `test` folder to structure your tests any way you want. ## Go further -* [Follow UX guidelines](https://code.visualstudio.com/api/ux-guidelines/overview) to create extensions that seamlessly integrate with VS Code's native interface and patterns. - * Reduce the extension size and improve the startup time by [bundling your extension](https://code.visualstudio.com/api/working-with-extensions/bundling-extension). - * [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code extension marketplace. - * Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration). +- [Follow UX guidelines](https://code.visualstudio.com/api/ux-guidelines/overview) to create extensions that seamlessly integrate with VS Code's native interface and patterns. +- Reduce the extension size and improve the startup time by [bundling your extension](https://code.visualstudio.com/api/working-with-extensions/bundling-extension). +- [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code extension marketplace. +- Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration). diff --git a/yarn.lock b/yarn.lock index e32cc8a..b77dcf3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,119 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== +"@azure/abort-controller@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.1.0.tgz#788ee78457a55af8a1ad342acb182383d2119249" + integrity sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw== + dependencies: + tslib "^2.2.0" + +"@azure/abort-controller@^2.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-2.1.2.tgz#42fe0ccab23841d9905812c58f1082d27784566d" + integrity sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA== + dependencies: + tslib "^2.6.2" + +"@azure/core-auth@^1.4.0", "@azure/core-auth@^1.5.0": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.7.2.tgz#558b7cb7dd12b00beec07ae5df5907d74df1ebd9" + integrity sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g== + dependencies: + "@azure/abort-controller" "^2.0.0" + "@azure/core-util" "^1.1.0" + tslib "^2.6.2" + +"@azure/core-client@^1.4.0": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@azure/core-client/-/core-client-1.9.2.tgz#6fc69cee2816883ab6c5cdd653ee4f2ff9774f74" + integrity sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w== + dependencies: + "@azure/abort-controller" "^2.0.0" + "@azure/core-auth" "^1.4.0" + "@azure/core-rest-pipeline" "^1.9.1" + "@azure/core-tracing" "^1.0.0" + "@azure/core-util" "^1.6.1" + "@azure/logger" "^1.0.0" + tslib "^2.6.2" + +"@azure/core-rest-pipeline@^1.1.0", "@azure/core-rest-pipeline@^1.9.1": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.0.tgz#631172e2fe0346cf4410d1c8e01ad98d849738e2" + integrity sha512-CeuTvsXxCUmEuxH5g/aceuSl6w2EugvNHKAtKKVdiX915EjJJxAwfzNNWZreNnbxHZ2fi0zaM6wwS23x2JVqSQ== + dependencies: + "@azure/abort-controller" "^2.0.0" + "@azure/core-auth" "^1.4.0" + "@azure/core-tracing" "^1.0.1" + "@azure/core-util" "^1.9.0" + "@azure/logger" "^1.0.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.0" + tslib "^2.6.2" + +"@azure/core-tracing@^1.0.0", "@azure/core-tracing@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.1.2.tgz#065dab4e093fb61899988a1cdbc827d9ad90b4ee" + integrity sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA== + dependencies: + tslib "^2.6.2" + +"@azure/core-util@^1.1.0", "@azure/core-util@^1.3.0", "@azure/core-util@^1.6.1", "@azure/core-util@^1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.9.0.tgz#469afd7e6452d5388b189f90d33f7756b0b210d1" + integrity sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw== + dependencies: + "@azure/abort-controller" "^2.0.0" + tslib "^2.6.2" + +"@azure/identity@^4.1.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@azure/identity/-/identity-4.2.0.tgz#acaee2f50785cc87778ec7eedcc20d6e72c1da23" + integrity sha512-ve3aYv79qXOJ8wRxQ5jO0eIz2DZ4o0TyME4m4vlGV5YyePddVZ+pFMzusAMODNAflYAAv1cBIhKnd4xytmXyig== + dependencies: + "@azure/abort-controller" "^1.0.0" + "@azure/core-auth" "^1.5.0" + "@azure/core-client" "^1.4.0" + "@azure/core-rest-pipeline" "^1.1.0" + "@azure/core-tracing" "^1.0.0" + "@azure/core-util" "^1.3.0" + "@azure/logger" "^1.0.0" + "@azure/msal-browser" "^3.11.1" + "@azure/msal-node" "^2.6.6" + events "^3.0.0" + jws "^4.0.0" + open "^8.0.0" + stoppable "^1.1.0" + tslib "^2.2.0" + +"@azure/logger@^1.0.0": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.1.2.tgz#3f4b876cefad328dc14aff8b850d63b611e249dc" + integrity sha512-l170uE7bsKpIU6B/giRc9i4NI0Mj+tANMMMxf7Zi/5cKzEqPayP7+X1WPrG7e+91JgY8N+7K7nF2WOi7iVhXvg== + dependencies: + tslib "^2.6.2" + +"@azure/msal-browser@^3.11.1": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@azure/msal-browser/-/msal-browser-3.14.0.tgz#1cb5cab438a9943212aa50c403d11f775c787b21" + integrity sha512-Un85LhOoecJ3HDTS3Uv3UWnXC9/43ZSO+Kc+anSqpZvcEt58SiO/3DuVCAe1A3I5UIBYJNMgTmZPGXQ0MVYrwA== + dependencies: + "@azure/msal-common" "14.10.0" + +"@azure/msal-common@14.10.0": + version "14.10.0" + resolved "https://registry.yarnpkg.com/@azure/msal-common/-/msal-common-14.10.0.tgz#215449726717b53d549953db77562cad6cb8421c" + integrity sha512-Zk6DPDz7e1wPgLoLgAp0349Yay9RvcjPM5We/ehuenDNsz/t9QEFI7tRoHpp/e47I4p20XE3FiDlhKwAo3utDA== + +"@azure/msal-node@^2.6.6": + version "2.8.1" + resolved "https://registry.yarnpkg.com/@azure/msal-node/-/msal-node-2.8.1.tgz#aded28d37eea2e7278c9bd44f2016647390f239c" + integrity sha512-VcZZM+5VvCWRBTOF7SxMKaxrz+EXjntx2u5AQe7QE06e6FuPJElGBrImgNgCh5QmFaNCfVFO+3qNR7UoFD/Gfw== + dependencies: + "@azure/msal-common" "14.10.0" + jsonwebtoken "^9.0.0" + uuid "^8.3.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -277,6 +390,37 @@ jszip "^3.10.1" semver "^7.5.2" +"@vscode/vsce@^2.26.1": + version "2.26.1" + resolved "https://registry.yarnpkg.com/@vscode/vsce/-/vsce-2.26.1.tgz#c4f13b04225e5cd16d0a80eb5bb98b96451ce431" + integrity sha512-QOG6Ht7V93nhwcBxPWcG33UK0qDGEoJdg0xtVeaTN27W6PGdMJUJGTPhB/sNHUIFKwvwzv/zMAHvDgMNXbcwlA== + dependencies: + "@azure/identity" "^4.1.0" + azure-devops-node-api "^12.5.0" + chalk "^2.4.2" + cheerio "^1.0.0-rc.9" + cockatiel "^3.1.2" + commander "^6.2.1" + form-data "^4.0.0" + glob "^7.0.6" + hosted-git-info "^4.0.2" + jsonc-parser "^3.2.0" + leven "^3.1.0" + markdown-it "^12.3.2" + mime "^1.3.4" + minimatch "^3.0.3" + parse-semver "^1.1.1" + read "^1.0.7" + semver "^7.5.2" + tmp "^0.2.1" + typed-rest-client "^1.8.4" + url-join "^4.0.1" + xml2js "^0.5.0" + yauzl "^2.3.1" + yazl "^2.2.2" + optionalDependencies: + keytar "^7.7.0" + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -294,6 +438,13 @@ agent-base@6: dependencies: debug "4" +agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" + integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== + dependencies: + debug "^4.3.4" + ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -319,6 +470,13 @@ ansi-regex@^6.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -349,16 +507,48 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +azure-devops-node-api@^12.5.0: + version "12.5.0" + resolved "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz#38b9efd7c5ac74354fe4e8dbe42697db0b8e85a5" + integrity sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og== + dependencies: + tunnel "0.0.6" + typed-rest-client "^1.8.4" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -386,6 +576,24 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + c8@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/c8/-/c8-9.1.0.tgz#0e57ba3ab9e5960ab1d650b4a86f71e53cb68112" @@ -403,6 +611,17 @@ c8@^9.1.0: yargs "^17.7.2" yargs-parser "^21.1.1" +call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -413,6 +632,15 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chalk@^4.0.0, chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -421,6 +649,31 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== + dependencies: + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + +cheerio@^1.0.0-rc.9: + version "1.0.0-rc.12" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== + dependencies: + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" + chokidar@3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -451,6 +704,11 @@ chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -469,6 +727,18 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +cockatiel@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/cockatiel/-/cockatiel-3.1.3.tgz#bb1774a498a17e739dd994d56610dc6538b02858" + integrity sha512-xC759TpZ69d7HhfDp8m2WkRwEUiCkxY8Ee2OQH/3H6zmy2D/5Sm+zSTbPRa+V2QyjDtpMvjOIAOVjA2gp6N1kQ== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -476,11 +746,28 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -505,6 +792,22 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + debug@4, debug@4.3.4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -517,11 +820,47 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +detect-libc@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + diff@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" @@ -541,11 +880,48 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -556,6 +932,13 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + enhanced-resolve@^5.15.0: version "5.15.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz#384391e025f099e67b4b00bfd7f0906a408214e1" @@ -564,6 +947,28 @@ enhanced-resolve@^5.15.0: graceful-fs "^4.2.4" tapable "^2.2.0" +entities@^4.2.0, entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + escalade@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" @@ -574,6 +979,11 @@ escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + eslint-scope@^7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" @@ -664,6 +1074,16 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +events@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -697,6 +1117,13 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -746,6 +1173,20 @@ foreground-child@^3.1.0, foreground-child@^3.1.1: cross-spawn "^7.0.0" signal-exit "^4.0.1" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -756,11 +1197,32 @@ fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -797,7 +1259,7 @@ glob@^10.3.10: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" -glob@^7.1.3, glob@^7.1.4: +glob@^7.0.6, glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -828,6 +1290,13 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + graceful-fs@^4.2.4: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" @@ -838,21 +1307,67 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +hosted-git-info@^4.0.2: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +htmlparser2@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" + integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + entities "^4.4.0" + http-proxy-agent@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" @@ -862,6 +1377,14 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" +http-proxy-agent@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -870,6 +1393,19 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" +https-proxy-agent@^7.0.0: + version "7.0.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" + integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== + dependencies: + agent-base "^7.0.2" + debug "4" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore@^5.2.0, ignore@^5.2.4: version "5.3.1" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" @@ -901,11 +1437,16 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@~2.0.3: +inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -913,6 +1454,11 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -950,6 +1496,13 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -1013,6 +1566,27 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +jsonc-parser@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a" + integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== + +jsonwebtoken@^9.0.0: + version "9.0.2" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" + integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== + dependencies: + jws "^3.2.2" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + semver "^7.5.4" + jszip@^3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" @@ -1023,6 +1597,48 @@ jszip@^3.10.1: readable-stream "~2.3.6" setimmediate "^1.0.5" +jwa@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" + integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jwa@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc" + integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" + integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== + dependencies: + jwa "^1.4.1" + safe-buffer "^5.0.1" + +jws@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" + integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== + dependencies: + jwa "^2.0.0" + safe-buffer "^5.0.1" + +keytar@^7.7.0: + version "7.9.0" + resolved "https://registry.yarnpkg.com/keytar/-/keytar-7.9.0.tgz#4c6225708f51b50cbf77c5aae81721964c2918cb" + integrity sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ== + dependencies: + node-addon-api "^4.3.0" + prebuild-install "^7.0.1" + keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -1030,6 +1646,11 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -1045,6 +1666,13 @@ lie@~3.3.0: dependencies: immediate "~3.0.5" +linkify-it@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" + integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== + dependencies: + uc.micro "^1.0.1" + locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -1052,11 +1680,46 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== + +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== + log-symbols@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" @@ -1084,6 +1747,22 @@ make-dir@^4.0.0: dependencies: semver "^7.5.3" +markdown-it@^12.3.2: + version "12.3.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" + integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== + dependencies: + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -1097,6 +1776,28 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^1.3.4: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + minimatch@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" @@ -1111,7 +1812,7 @@ minimatch@9.0.3, minimatch@^9.0.1, minimatch@^9.0.3: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -1125,11 +1826,21 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimist@^1.2.0, minimist@^1.2.3: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + "minipass@^5.0.0 || ^6.0.2 || ^7.0.0": version "7.0.4" resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + mocha@^10.2.0: version "10.3.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.3.0.tgz#0e185c49e6dccf582035c05fa91084a4ff6e3fe9" @@ -1161,28 +1872,71 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3: +ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== +node-abi@^3.3.0: + version "3.62.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.62.0.tgz#017958ed120f89a3a14a7253da810f5d724e3f36" + integrity sha512-CPMcGa+y33xuL1E0TcNIu4YyaZCxnnvkVaEXrsosR3FxN+fV8xvb7Mzpb7IgKler10qeMkE6+Dp8qJhpzdq35g== + dependencies: + semver "^7.3.5" + +node-addon-api@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" + integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -once@^1.3.0: +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" +open@^8.0.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + optionator@^0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" @@ -1221,6 +1975,28 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-semver@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/parse-semver/-/parse-semver-1.1.1.tgz#9a4afd6df063dc4826f93fba4a99cf223f666cb8" + integrity sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ== + dependencies: + semver "^5.1.0" + +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== + dependencies: + domhandler "^5.0.2" + parse5 "^7.0.0" + +parse5@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -1249,11 +2025,34 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +prebuild-install@^7.0.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056" + integrity sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -1264,11 +2063,26 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== +qs@^6.9.1: + version "6.12.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.1.tgz#39422111ca7cbdb70425541cba20c7d7b216599a" + integrity sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ== + dependencies: + side-channel "^1.0.6" + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -1281,6 +2095,32 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== + dependencies: + mute-stream "~0.0.4" + +readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" @@ -1330,7 +2170,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@^5.1.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -1340,6 +2180,21 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +sax@>=0.6.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + +semver@^5.1.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^7.3.5: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: version "7.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" @@ -1354,6 +2209,18 @@ serialize-javascript@6.0.0: dependencies: randombytes "^2.1.0" +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -1371,17 +2238,55 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + signal-exit@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +stoppable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" + integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -1399,6 +2304,13 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -1406,7 +2318,14 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -1425,6 +2344,11 @@ strip-json-comments@3.1.1, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + supports-color@8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" @@ -1432,6 +2356,13 @@ supports-color@8.1.1: dependencies: has-flag "^4.0.0" +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -1449,6 +2380,27 @@ tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -1463,6 +2415,11 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +tmp@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -1475,6 +2432,23 @@ ts-api-utils@^1.0.1: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.2.1.tgz#f716c7e027494629485b21c0df6180f4d08f5e8b" integrity sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA== +tslib@^2.2.0, tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tunnel@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" + integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -1487,11 +2461,30 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +typed-rest-client@^1.8.4: + version "1.8.11" + resolved "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.8.11.tgz#6906f02e3c91e8d851579f255abf0fd60800a04d" + integrity sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA== + dependencies: + qs "^6.9.1" + tunnel "0.0.6" + underscore "^1.12.1" + typescript@^5.3.3: version "5.3.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +underscore@^1.12.1: + version "1.13.6" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" + integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== + undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" @@ -1504,11 +2497,21 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -util-deprecate@~1.0.1: +url-join@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" + integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + v8-to-istanbul@^9.0.0: version "9.2.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" @@ -1530,7 +2533,16 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -1553,6 +2565,19 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +xml2js@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7" + integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -1614,6 +2639,21 @@ yargs@^17.7.2: y18n "^5.0.5" yargs-parser "^21.1.1" +yauzl@^2.3.1: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yazl@^2.2.2: + version "2.5.1" + resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35" + integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw== + dependencies: + buffer-crc32 "~0.2.3" + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" From c3e4567ad896d583181645a3ad4edaeb9c7635c4 Mon Sep 17 00:00:00 2001 From: Corentin Mors Date: Thu, 23 May 2024 11:23:12 +0200 Subject: [PATCH 2/2] Update vsc-extension-quickstart.md Co-authored-by: Julien --- vsc-extension-quickstart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vsc-extension-quickstart.md b/vsc-extension-quickstart.md index b83ff27..274bc11 100644 --- a/vsc-extension-quickstart.md +++ b/vsc-extension-quickstart.md @@ -2,7 +2,7 @@ ## What's in the folder -- This folder contains all of the files necessary for your extension. +- This folder contains all of the necessary files for your extension. - `package.json` - this is the manifest file in which you declare your extension and command. - The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin. - `src/extension.ts` - this is the main file where you will provide the implementation of your command.