From 797a402ae788ef5a3e9ecc134f0d8ab1a4c9773a Mon Sep 17 00:00:00 2001 From: svc-cli-bot Date: Tue, 25 Jun 2024 12:02:51 -0500 Subject: [PATCH 01/13] Updating SHA256.md after 0.7.0 release --- SHA256.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SHA256.md b/SHA256.md index 5548302..d620c82 100644 --- a/SHA256.md +++ b/SHA256.md @@ -15,7 +15,7 @@ make sure that their SHA values match the values in the list below. shasum -a 256 3. Confirm that the SHA in your output matches the value in this list of SHAs. - e34c5dd98fb29b52c2f02d04905f9f3c158700c36f0254be366038ec842271af ./extensions/sfdx-code-analyzer-vscode-0.6.0.vsix + 7ddd2068fbe9a58bbb8fdf81f80964bd645e7a3112aaace72b3da1ca3dad05f5 ./extensions/sfdx-code-analyzer-vscode-0.7.0.vsix 4. Change the filename extension for the file that you downloaded from .zip to .vsix. From 1c9b21600ebdb811a52e9c09139623df18d1ac9a Mon Sep 17 00:00:00 2001 From: Joshua Feingold Date: Wed, 3 Jul 2024 14:06:27 -0500 Subject: [PATCH 02/13] FIX (DevOps) @W-16151756@ create-release-branch uses interim branch to work around branch protection rules. --- .github/workflows/create-release-branch.yml | 36 +++++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/.github/workflows/create-release-branch.yml b/.github/workflows/create-release-branch.yml index 39083a7..8091bd8 100644 --- a/.github/workflows/create-release-branch.yml +++ b/.github/workflows/create-release-branch.yml @@ -61,8 +61,8 @@ jobs: with: node-version: 'lts/*' # Always use Node LTS for building dependencies. - run: yarn - # Increment the version as desired. - - name: Increment version + # Increment the version as desired locally, without actually committing anything. + - name: Locally increment version run: | # A workflow dispatch event lets the user specify what release type they want. if [[ "${{ github.event_name }}" = "workflow_dispatch" ]]; then @@ -73,16 +73,17 @@ jobs: fi # Increment the version as needed npm --no-git-tag-version version $RELEASE_TYPE - # Create the new branch as a direct copy of `dev` and push it to GitHub so the API can - # interact with it later. - - id: create-branch + # The branch protection rule for `release-x.y.z` branches prevents pushing commits directly. To work around this, + # we create an interim branch that we _can_ push commits to, and we'll do our version bookkeeping in that branch + # instead. + - id: create-interim-branch run: | NEW_VERSION=$(jq -r ".version" package.json) - git checkout -b release-$NEW_VERSION - # Push the branch immediately without committing anything. - git push --set-upstream origin release-$NEW_VERSION - # Output the branch name so we can use it in later jobs. - echo "branch_name=release-$NEW_VERSION" >> "$GITHUB_OUTPUT" + INTERIM_BRANCH_NAME=${NEW_VERSION}-interim + # Create and check out the interim branch. + git checkout -b $INTERIM_BRANCH_NAME + # Immediately push the interim branch with no changes, so GraphQL can push to it later. + git push --set-upstream origin $INTERIM_BRANCH_NAME # Update our dependencies - run: yarn upgrade # Use the GraphQL API to create a signed commmit with our changes. @@ -125,6 +126,21 @@ jobs: } } }' + # Now that we've done our bookkeeping commits on the interim branch, use it as the base for the real release branch. + - name: Create release branch + id: create-branch + run: | + # The commit happened on the remote end, not ours, so we need to clean the directory and pull. + git checkout -- . + git pull + # Now we can create the actual release branch. + NEW_VERSION=$(jq -r ".version" package.json) + git checkout -b release-$NEW_VERSION + git push --set-upstream origin release-$NEW_VERSION + # Now that we're done with the interim branch, delete it. + git push -d ${NEW_VERSION}-interim + # Output the release branch name so we can use it in later jobs. + echo "branch_name=release-$NEW_VERSION" >> "$GITHUB_OUTPUT" # Build the scanner tarball so it can be installed locally when we run tests. build-scanner-tarball: name: 'Build scanner tarball' From 88f80338d92554e3a76232d5df577f98a168ec6f Mon Sep 17 00:00:00 2001 From: Jagadeeswaran Jayaprakash <58611665+jag-j@users.noreply.github.com> Date: Mon, 8 Jul 2024 14:32:27 -0700 Subject: [PATCH 03/13] NEW (Extension) @W-15639759@ Introduce a new command to run graph engine at the project level (#100) --- package.json | 8 ++++ src/extension.ts | 82 +++++++++++++++++++++++++++----- src/lib/constants.ts | 1 + src/lib/scanner.ts | 6 ++- src/lib/targeting.ts | 9 +++- src/test/suite/extension.test.ts | 4 +- src/test/suite/scanner.test.ts | 51 +++++++++++++++++--- 7 files changed, 139 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index d8726e5..7423954 100644 --- a/package.json +++ b/package.json @@ -93,6 +93,10 @@ { "command": "sfca.removeDiagnosticsOnSelectedFile", "title": "SFDX: Clear Code Analyzer violations from selected files or folders" + }, + { + "command": "sfca.runDfa", + "title": "***SFDX: Run Graph-Engine Based Analysis***" } ], "configuration": { @@ -162,6 +166,10 @@ "command": "sfca.runDfaOnSelectedMethod", "when": "false" }, + { + "command": "sfca.runDfa", + "when": "false" + }, { "command": "sfca.removeDiagnosticsOnActiveFile", "when": "true" diff --git a/src/extension.ts b/src/extension.ts index 66404b7..0ac6cae 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -103,13 +103,13 @@ export async function activate(context: vscode.ExtensionContext): Promise { + const runDfaOnSelectedMethodCmd = vscode.commands.registerCommand(Constants.COMMAND_RUN_DFA_ON_SELECTED_METHOD, async () => { if (await _shouldProceedWithDfaRun(context)) { await vscode.window.withProgress({ location: vscode.ProgressLocation.Window, title: messages.graphEngine.spinnerText, cancellable: true - }, (progress, token) => { + }, async (progress, token) => { token.onCancellationRequested(async () => { await _stopExistingDfaRun(context, outputChannel); }); @@ -120,19 +120,84 @@ export async function activate(context: vscode.ExtensionContext): Promise { + await _runDfa(context, outputChannel); + }); + context.subscriptions.push(runOnActiveFile, runOnSelected, runDfaOnSelectedMethodCmd, runDfaOnWorkspaceCmd, removeDiagnosticsOnActiveFile, removeDiagnosticsOnSelectedFile, removeDiagnosticsInRange); TelemetryService.sendExtensionActivationEvent(extensionHrStart); outputChannel.appendLine(`Extension sfdx-code-analyzer-vscode activated.`); return Promise.resolve(context); } +async function _runDfa(context: vscode.ExtensionContext, outputChannel: vscode.LogOutputChannel) { + if (violationsCacheExists()) { + const choice = await vscode.window.showQuickPick( + ['***Yes***', '***No***'], + { + placeHolder: '***We identified a previous Salesforce Graph Engine run. Do you want to only run the previously failed violations from that run?***', + canPickMany: false, + ignoreFocusOut: true + } + ); + + // Default to "Yes" if no choice is made + const rerunFailedOnly = choice == '***Yes***'; + if (rerunFailedOnly) { + // Do nothing for now. This will be implemented as part of W-15639759 + return; + } else { + void vscode.window.showWarningMessage('***A full run of the graph engine will happen in the background. You can cancel this by clicking on the status progress.***'); + await runDfaOnWorkspace(context, outputChannel); + } + } else { + await runDfaOnWorkspace(context, outputChannel); + } +} + +async function runDfaOnWorkspace(context: vscode.ExtensionContext, outputChannel: vscode.LogOutputChannel) { + await vscode.window.withProgress({ + location: vscode.ProgressLocation.Window, + title: messages.graphEngine.spinnerText, + cancellable: true + }, async (progress, token) => { + token.onCancellationRequested(async () => { + await _stopExistingDfaRun(context, outputChannel); + }); + customCancellationToken = new vscode.CancellationTokenSource(); + customCancellationToken.token.onCancellationRequested(async () => { + customCancellationToken?.dispose(); + customCancellationToken = null; + await vscode.window.showInformationMessage(messages.graphEngine.noViolationsFound); + return; + }); + + // We only have one project loaded on VSCode at once. So, projectDir should have only one entry and we use + // the root directory of that project as the projectDir argument to run DFA. + return _runAndDisplayDfa(context, { + commandName: Constants.COMMAND_RUN_DFA_ON_SELECTED_METHOD, + outputChannel, + }, customCancellationToken, null, targeting.getProjectDir()); + }); +} + +function violationsCacheExists() { + // Returns true for now. Actual cache check will be performed as part of W-15639759. + return true; +} + export function _removeDiagnosticsInRange(uri: vscode.Uri, range: vscode.Range, diagnosticCollection: vscode.DiagnosticCollection) { const currentDiagnostics = diagnosticCollection.get(uri) || []; const updatedDiagnostics = filterOutDiagnosticsInRange(currentDiagnostics, range); @@ -273,7 +338,7 @@ export async function _runAndDisplayPathless(selections: vscode.Uri[], runInfo: * @param runInfo.outputChannel The output channel where information should be logged as needed * @param runInfo.commandName The specific command being run */ -export async function _runAndDisplayDfa(context:vscode.ExtensionContext ,runInfo: RunInfo, cancelToken: vscode.CancellationTokenSource): Promise { +export async function _runAndDisplayDfa(context:vscode.ExtensionContext ,runInfo: RunInfo, cancelToken: vscode.CancellationTokenSource, methodLevelTarget: string, projectDir: string): Promise { const { outputChannel, commandName @@ -281,12 +346,7 @@ export async function _runAndDisplayDfa(context:vscode.ExtensionContext ,runInfo const startTime = Date.now(); try { await verifyPluginInstallation(); - // Get the targeted method. - const methodLevelTarget: string = await targeting.getSelectedMethod(); - // Pull out the file from the target and use it to identify the project directory. - const currentFile: string = methodLevelTarget.substring(0, methodLevelTarget.lastIndexOf('#')); - const projectDir: string = targeting.getProjectDir(currentFile); - const results: string = await new ScanRunner().runDfa([methodLevelTarget], projectDir, context); + const results = await new ScanRunner().runDfa([methodLevelTarget], projectDir, context); if (results.length > 0) { const panel = vscode.window.createWebviewPanel( 'dfaResults', diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 868b5e2..4419a28 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -13,6 +13,7 @@ export const EXTENSION_PACK_ID = 'salesforce.salesforcedx-vscode'; export const COMMAND_RUN_ON_ACTIVE_FILE = 'sfca.runOnActiveFile'; export const COMMAND_RUN_ON_SELECTED = 'sfca.runOnSelected'; export const COMMAND_RUN_DFA_ON_SELECTED_METHOD = 'sfca.runDfaOnSelectedMethod'; +export const COMMAND_RUN_DFA = 'sfca.runDfa'; export const COMMAND_REMOVE_DIAGNOSTICS_ON_ACTIVE_FILE = 'sfca.removeDiagnosticsOnActiveFile'; export const COMMAND_REMOVE_DIAGNOSTICS_ON_SELECTED_FILE = 'sfca.removeDiagnosticsOnSelectedFile'; export const COMMAND_DIAGNOSTICS_IN_RANGE = 'sfca.removeDiagnosticsInRange' diff --git a/src/lib/scanner.ts b/src/lib/scanner.ts index e2f7cba..54096bf 100644 --- a/src/lib/scanner.ts +++ b/src/lib/scanner.ts @@ -58,7 +58,6 @@ export class ScanRunner { private createDfaArgArray(targets: string[], projectDir: string): string[] { const args: string[] = [ 'scanner', 'run', 'dfa', - '--target', `${targets.join(',')}`, `--projectdir`, projectDir, // NOTE: For now, we're using HTML output since it's the easiest to display to the user. // This is exceedingly likely to change as we refine and polish the extension. @@ -69,6 +68,11 @@ export class ScanRunner { // implementation, but we may wish to rethink this in the future as we polish things. `--json` ]; + + if (targets && targets.filter(target => target != null).length > 0) { + args.push('--target', `${targets.join(',')}`); + } + // There are a number of custom settings that we need to check too. // First we should check whether warning violations are disabled. if (SettingsManager.getGraphEngineDisableWarningViolations()) { diff --git a/src/lib/targeting.ts b/src/lib/targeting.ts index 6300a97..cafb0a9 100644 --- a/src/lib/targeting.ts +++ b/src/lib/targeting.ts @@ -138,7 +138,14 @@ function getNearestMethodSymbol(symbols: GenericSymbol[], cursorPosition: vscode /** * Get the project containing the specified file. */ -export function getProjectDir(targetFile: string): string { +export function getProjectDir(targetFile?: string): string | undefined { + if (!targetFile) { + const workspaceFolders = vscode.workspace.workspaceFolders; + if (workspaceFolders && workspaceFolders.length > 0) { + return workspaceFolders[0].uri.fsPath; + } + return undefined; + } const uri = vscode.Uri.file(targetFile); return vscode.workspace.getWorkspaceFolder(uri).uri.fsPath; } diff --git a/src/test/suite/extension.test.ts b/src/test/suite/extension.test.ts index 76d6e4a..6486604 100644 --- a/src/test/suite/extension.test.ts +++ b/src/test/suite/extension.test.ts @@ -246,7 +246,7 @@ suite('Extension Test Suite', () => { await _runAndDisplayDfa(null, { commandName: fakeTelemetryName, outputChannel - }, null); + }, null, 'someMethod', 'some/project/dir'); // ===== ASSERTIONS ===== Sinon.assert.callCount(errorSpy, 1); @@ -272,7 +272,7 @@ suite('Extension Test Suite', () => { await _runAndDisplayDfa(null, { commandName: fakeTelemetryName, outputChannel - }, null); + }, null, 'someMethod', 'some/project/dir'); } catch (e) { err = e; } diff --git a/src/test/suite/scanner.test.ts b/src/test/suite/scanner.test.ts index a959aab..9c621ad 100644 --- a/src/test/suite/scanner.test.ts +++ b/src/test/suite/scanner.test.ts @@ -240,13 +240,14 @@ suite('ScanRunner', () => { expect(args[0]).to.equal('scanner', 'Wrong arg'); expect(args[1]).to.equal('run', 'Wrong arg'); expect(args[2]).to.equal('dfa', 'Wrong arg'); - expect(args[3]).to.equal('--target', 'Wrong arg'); - expect(args[4]).to.equal(targets.join(','), 'Wrong arg'); - expect(args[5]).to.equal('--projectdir', 'Wrong arg'); - expect(args[6]).to.equal(projectDir, 'Wrong arg'); - expect(args[7]).to.equal('--format', 'Wrong arg'); - expect(args[8]).to.equal('html', 'Wrong arg'); - expect(args[9]).to.equal('--json', 'Wrong arg'); + expect(args[3]).to.equal('--projectdir', 'Wrong arg'); + expect(args[4]).to.equal(projectDir, 'Wrong arg'); + expect(args[5]).to.equal('--format', 'Wrong arg'); + expect(args[6]).to.equal('html', 'Wrong arg'); + expect(args[7]).to.equal('--json', 'Wrong arg'); + expect(args[8]).to.equal('--target', 'Wrong arg'); + expect(args[9]).to.equal(targets.join(','), 'Wrong arg'); + return args; } @@ -281,6 +282,42 @@ suite('ScanRunner', () => { Sinon.restore(); }); + test('Ignore target when it is empty', () => { + // ===== SETUP ===== + Sinon.stub(SettingsManager, 'getGraphEngineDisableWarningViolations').returns(false); + Sinon.stub(SettingsManager, 'getGraphEngineThreadTimeout').returns(null); + Sinon.stub(SettingsManager, 'getGraphEnginePathExpansionLimit').returns(null); + Sinon.stub(SettingsManager, 'getGraphEngineJvmArgs').returns(null); + const emptyTargets = []; + + // ===== TEST ===== + // Call the test method helper. + const scanner: ScanRunner = new ScanRunner(); + const args: string[] = (scanner as any).createDfaArgArray(emptyTargets, projectDir); + + // ===== ASSERTIONS ===== + // Verify that the right arguments were created. + expect(args).to.not.include('--target', '--target should be ignored when empty'); + }); + + test('Ignore target when it contains only null entries', () => { + // ===== SETUP ===== + Sinon.stub(SettingsManager, 'getGraphEngineDisableWarningViolations').returns(false); + Sinon.stub(SettingsManager, 'getGraphEngineThreadTimeout').returns(null); + Sinon.stub(SettingsManager, 'getGraphEnginePathExpansionLimit').returns(null); + Sinon.stub(SettingsManager, 'getGraphEngineJvmArgs').returns(null); + const emptyTargets = [null]; + + // ===== TEST ===== + // Call the test method helper. + const scanner: ScanRunner = new ScanRunner(); + const args: string[] = (scanner as any).createDfaArgArray(emptyTargets, projectDir); + + // ===== ASSERTIONS ===== + // Verify that the right arguments were created. + expect(args).to.not.include('--target', '--target should be ignored when it contains null entry'); + }); + test('Disable Warning Violations', () => { // ===== SETUP ===== // Stub the Disable Warning Violations method to return true. From 5539249b3ac138a3a5f2b4fc1ea9883e7f52cbc2 Mon Sep 17 00:00:00 2001 From: Jagadeeswaran Jayaprakash <58611665+jag-j@users.noreply.github.com> Date: Fri, 12 Jul 2024 09:43:40 -0700 Subject: [PATCH 04/13] NEW (Extension) @W-16095938@ Remove files and directories not required by vsix (#103) --- .vscodeignore | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.vscodeignore b/.vscodeignore index 3899967..a2f3f04 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -8,3 +8,10 @@ vsc-extension-quickstart.md **/.eslintrc.json **/*.map **/*.ts +CODEOWNERS +code-fixtures/** +coverage/** +github-actions/** +templates/** +.git2gus/** +.github/** \ No newline at end of file From 62231a8f4e7888ba9d0aed19fca257c4166f1309 Mon Sep 17 00:00:00 2001 From: Jagadeeswaran Jayaprakash <58611665+jag-j@users.noreply.github.com> Date: Thu, 18 Jul 2024 09:29:25 -0700 Subject: [PATCH 05/13] NEW (Extension) @W-16096144@ Show Apex Guru command on explorer when org has Apex Guru perm enabled (#104) --- package.json | 8 +++ src/extension.ts | 92 ++++++++++++++------------ src/lib/constants.ts | 6 ++ src/lib/core-extension-service.ts | 63 ++++++++++++++++-- src/test/suite/extension.test.ts | 105 +++++++++++++++++++++++------- src/types.d.ts | 35 +++++++++- 6 files changed, 238 insertions(+), 71 deletions(-) diff --git a/package.json b/package.json index 7423954..df307f1 100644 --- a/package.json +++ b/package.json @@ -97,6 +97,10 @@ { "command": "sfca.runDfa", "title": "***SFDX: Run Graph-Engine Based Analysis***" + }, + { + "command": "sfca.runApexGuruAnalysisOnSelectedFile", + "title": "***SFDX: Run Apex Guru Analysis***" } ], "configuration": { @@ -197,6 +201,10 @@ { "command": "sfca.removeDiagnosticsOnSelectedFile", "when": "true" + }, + { + "command": "sfca.runApexGuruAnalysisOnSelectedFile", + "when": "sfca.apexGuruEnabled" } ] }, diff --git a/src/extension.ts b/src/extension.ts index 0ac6cae..c40f299 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -12,7 +12,7 @@ import {ScanRunner} from './lib/scanner'; import {SettingsManager} from './lib/settings'; import {SfCli} from './lib/sf-cli'; -import {RuleResult} from './types'; +import {RuleResult, ApexGuruAuthResponse} from './types'; import {DiagnosticManager} from './lib/diagnostics'; import {messages} from './lib/messages'; import {Fixer} from './lib/fixer'; @@ -23,7 +23,6 @@ import { SIGKILL } from 'constants'; export type RunInfo = { diagnosticCollection?: vscode.DiagnosticCollection; - outputChannel: vscode.LogOutputChannel; commandName: string; } @@ -35,6 +34,8 @@ let diagnosticCollection: vscode.DiagnosticCollection = null; let customCancellationToken: vscode.CancellationTokenSource | null = null; +let outputChannel: vscode.LogOutputChannel; + /** * This method is invoked when the extension is first activated (this is currently configured to be when a sfdx project is loaded). * The activation trigger can be changed by changing activationEvents in package.json @@ -43,8 +44,16 @@ let customCancellationToken: vscode.CancellationTokenSource | null = null; export async function activate(context: vscode.ExtensionContext): Promise { const extensionHrStart = process.hrtime(); + // Define a log output channel that we can use, and clear it so it's fresh. + outputChannel = vscode.window.createOutputChannel('sfca', {log: true}); + outputChannel.clear(); + outputChannel.show(); + // We need to do this first in case any other services need access to those provided by the core extension. - await CoreExtensionService.loadDependencies(context); + await CoreExtensionService.loadDependencies(context, outputChannel); + + // Set the necessary flags to control showing the command + await vscode.commands.executeCommand('setContext', 'sfca.apexGuruEnabled', Constants.APEX_GURU_FEATURE_FLAG_ENABLED && await _isApexGuruEnabledInOrg()); // Define a diagnostic collection in the `activate()` scope so it can be used repeatedly. diagnosticCollection = vscode.languages.createDiagnosticCollection('sfca'); @@ -58,46 +67,37 @@ export async function activate(context: vscode.ExtensionContext): Promise { return _runAndDisplayPathless([], { commandName: Constants.COMMAND_RUN_ON_ACTIVE_FILE, - diagnosticCollection, - outputChannel + diagnosticCollection }); }); const runOnSelected = vscode.commands.registerCommand(Constants.COMMAND_RUN_ON_SELECTED, async (selection: vscode.Uri, multiSelect?: vscode.Uri[]) => { return _runAndDisplayPathless(multiSelect && multiSelect.length > 0 ? multiSelect : [selection], { commandName: Constants.COMMAND_RUN_ON_SELECTED, - diagnosticCollection, - outputChannel + diagnosticCollection }); }); const removeDiagnosticsOnActiveFile = vscode.commands.registerCommand(Constants.COMMAND_REMOVE_DIAGNOSTICS_ON_ACTIVE_FILE, async () => { return _clearDiagnosticsForSelectedFiles([], { commandName: Constants.COMMAND_REMOVE_DIAGNOSTICS_ON_ACTIVE_FILE, - diagnosticCollection, - outputChannel + diagnosticCollection }); }); const removeDiagnosticsOnSelectedFile = vscode.commands.registerCommand(Constants.COMMAND_REMOVE_DIAGNOSTICS_ON_SELECTED_FILE, async (selection: vscode.Uri, multiSelect?: vscode.Uri[]) => { return _clearDiagnosticsForSelectedFiles(multiSelect && multiSelect.length > 0 ? multiSelect : [selection], { commandName: Constants.COMMAND_REMOVE_DIAGNOSTICS_ON_SELECTED_FILE, - diagnosticCollection, - outputChannel + diagnosticCollection }); }); const removeDiagnosticsInRange = vscode.commands.registerCommand(Constants.COMMAND_DIAGNOSTICS_IN_RANGE, (uri: vscode.Uri, range: vscode.Range) => { _removeDiagnosticsInRange(uri, range, diagnosticCollection); }); outputChannel.appendLine(`Registered command as part of sfdx-code-analyzer-vscode activation.`); - registerScanOnSave(outputChannel); - registerScanOnOpen(outputChannel); + registerScanOnSave(); + registerScanOnOpen(); outputChannel.appendLine('Registered scanOnSave as part of sfdx-code-analyzer-vscode activation.'); // It is possible that the cache was not cleared when VS Code exited the last time. Just to be on the safe side, we clear the DFA process cache at activation. @@ -111,7 +111,7 @@ export async function activate(context: vscode.ExtensionContext): Promise { token.onCancellationRequested(async () => { - await _stopExistingDfaRun(context, outputChannel); + await _stopExistingDfaRun(context); }); customCancellationToken = new vscode.CancellationTokenSource(); customCancellationToken.token.onCancellationRequested(async () => { @@ -126,15 +126,14 @@ export async function activate(context: vscode.ExtensionContext): Promise { - await _runDfa(context, outputChannel); + await _runDfa(context); }); context.subscriptions.push(runOnActiveFile, runOnSelected, runDfaOnSelectedMethodCmd, runDfaOnWorkspaceCmd, removeDiagnosticsOnActiveFile, removeDiagnosticsOnSelectedFile, removeDiagnosticsInRange); TelemetryService.sendExtensionActivationEvent(extensionHrStart); @@ -142,7 +141,26 @@ export async function activate(context: vscode.ExtensionContext): Promise { + try { + const connection = await CoreExtensionService.getConnection(); + const response:ApexGuruAuthResponse = await connection.request({ + method: 'GET', + url: Constants.APEX_GURU_AUTH_ENDPOINT, + body: '' + }); + return response.status == 'Success'; + } catch(e) { + // This could throw an error for a variety of reasons. The API endpoint has not been deployed to the instance, org has no perms, timeouts etc,. + // In all of these scenarios, we return false. + const errMsg = e instanceof Error ? e.message : e as string; + outputChannel.error('***ApexGuru perm check failed with error:***' + errMsg); + outputChannel.show(); + return false; + } +} + +async function _runDfa(context: vscode.ExtensionContext) { if (violationsCacheExists()) { const choice = await vscode.window.showQuickPick( ['***Yes***', '***No***'], @@ -160,21 +178,21 @@ async function _runDfa(context: vscode.ExtensionContext, outputChannel: vscode.L return; } else { void vscode.window.showWarningMessage('***A full run of the graph engine will happen in the background. You can cancel this by clicking on the status progress.***'); - await runDfaOnWorkspace(context, outputChannel); + await runDfaOnWorkspace(context); } } else { - await runDfaOnWorkspace(context, outputChannel); + await runDfaOnWorkspace(context); } } -async function runDfaOnWorkspace(context: vscode.ExtensionContext, outputChannel: vscode.LogOutputChannel) { +async function runDfaOnWorkspace(context: vscode.ExtensionContext) { await vscode.window.withProgress({ location: vscode.ProgressLocation.Window, title: messages.graphEngine.spinnerText, cancellable: true }, async (progress, token) => { token.onCancellationRequested(async () => { - await _stopExistingDfaRun(context, outputChannel); + await _stopExistingDfaRun(context); }); customCancellationToken = new vscode.CancellationTokenSource(); customCancellationToken.token.onCancellationRequested(async () => { @@ -187,8 +205,7 @@ async function runDfaOnWorkspace(context: vscode.ExtensionContext, outputChannel // We only have one project loaded on VSCode at once. So, projectDir should have only one entry and we use // the root directory of that project as the projectDir argument to run DFA. return _runAndDisplayDfa(context, { - commandName: Constants.COMMAND_RUN_DFA_ON_SELECTED_METHOD, - outputChannel, + commandName: Constants.COMMAND_RUN_DFA_ON_SELECTED_METHOD }, customCancellationToken, null, targeting.getProjectDir()); }); } @@ -208,7 +225,7 @@ function filterOutDiagnosticsInRange(currentDiagnostics: readonly vscode.Diagnos return currentDiagnostics.filter(diagnostic => (diagnostic.range.start.line != range.start.line && diagnostic.range.end.line != range.end.line)); } -export async function _stopExistingDfaRun(context: vscode.ExtensionContext, outputChannel: vscode.LogOutputChannel): Promise { +export async function _stopExistingDfaRun(context: vscode.ExtensionContext): Promise { const pid = context.workspaceState.get(Constants.WORKSPACE_DFA_PROCESS); if (pid) { try { @@ -239,7 +256,7 @@ export async function verifyPluginInstallation(): Promise { } } -export function registerScanOnSave(outputChannel: vscode.LogOutputChannel) { +export function registerScanOnSave() { vscode.workspace.onDidSaveTextDocument( async (textDocument: vscode.TextDocument) => { const documentUri = textDocument.uri; @@ -248,15 +265,14 @@ export function registerScanOnSave(outputChannel: vscode.LogOutputChannel) { ) { await _runAndDisplayPathless([documentUri], { commandName: Constants.COMMAND_RUN_ON_ACTIVE_FILE, - diagnosticCollection, - outputChannel + diagnosticCollection }); } } ); } -export function registerScanOnOpen(outputChannel: vscode.LogOutputChannel) { +export function registerScanOnOpen() { vscode.workspace.onDidOpenTextDocument( async (textDocument: vscode.TextDocument) => { const documentUri = textDocument.uri; @@ -266,8 +282,7 @@ export function registerScanOnOpen(outputChannel: vscode.LogOutputChannel) { if (_isValidFileForAnalysis(documentUri)) { await _runAndDisplayPathless([documentUri], { commandName: Constants.COMMAND_RUN_ON_ACTIVE_FILE, - diagnosticCollection, - outputChannel + diagnosticCollection }); } } @@ -280,14 +295,12 @@ export function registerScanOnOpen(outputChannel: vscode.LogOutputChannel) { * @param selections The files/directories manually selected by the user. * @param runInfo A collection of services and information used to properly run the command. * @param runInfo.diagnosticCollection The collection to which diagnostics representing violations should be added. - * @param runInfo.outputChannel The output channel where information should be logged as needed. * @param runinfo.commandName The specific command being executed * @returns */ export async function _runAndDisplayPathless(selections: vscode.Uri[], runInfo: RunInfo): Promise { const { diagnosticCollection, - outputChannel, commandName } = runInfo; const startTime = Date.now(); @@ -335,12 +348,10 @@ export async function _runAndDisplayPathless(selections: vscode.Uri[], runInfo: * Run Path-based rules against the method the user has clicked on. * @param statusBarItem The item to use in the status bar for displaying progress * @param runInfo A collection of services and information used to properly run the command - * @param runInfo.outputChannel The output channel where information should be logged as needed * @param runInfo.commandName The specific command being run */ export async function _runAndDisplayDfa(context:vscode.ExtensionContext ,runInfo: RunInfo, cancelToken: vscode.CancellationTokenSource, methodLevelTarget: string, projectDir: string): Promise { const { - outputChannel, commandName } = runInfo; const startTime = Date.now(); @@ -403,7 +414,6 @@ export function _clearDiagnostics(): void { export async function _clearDiagnosticsForSelectedFiles(selections: vscode.Uri[], runInfo: RunInfo): Promise { const { diagnosticCollection, - outputChannel, commandName } = runInfo; const startTime = Date.now(); diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 4419a28..5dbdd64 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -31,3 +31,9 @@ export const MINIMUM_REQUIRED_VERSION_CORE_EXTENSION = '58.4.1'; // cache names export const WORKSPACE_DFA_PROCESS = 'dfaScanProcess'; + +// apex guru APIS +export const APEX_GURU_AUTH_ENDPOINT = '/services/data/v62.0/apexguru/validate' + +// feature gates +export const APEX_GURU_FEATURE_FLAG_ENABLED = false; diff --git a/src/lib/core-extension-service.ts b/src/lib/core-extension-service.ts index 855c2bf..e961739 100644 --- a/src/lib/core-extension-service.ts +++ b/src/lib/core-extension-service.ts @@ -5,11 +5,12 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import * as vscode from 'vscode'; +import { Event } from 'vscode'; import { satisfies } from 'semver'; -import {messages} from './messages'; - -import { CORE_EXTENSION_ID, MINIMUM_REQUIRED_VERSION_CORE_EXTENSION } from './constants'; +import { messages } from './messages'; +import { AuthFields } from '../types'; +import { CORE_EXTENSION_ID, MINIMUM_REQUIRED_VERSION_CORE_EXTENSION, APEX_GURU_FEATURE_FLAG_ENABLED } from './constants'; /** * Manages access to the services exported by the Salesforce VSCode Extension Pack's core extension. * If the extension pack isn't installed, only performs no-ops. @@ -17,12 +18,16 @@ import { CORE_EXTENSION_ID, MINIMUM_REQUIRED_VERSION_CORE_EXTENSION } from './co export class CoreExtensionService { private static initialized = false; private static telemetryService: CoreTelemetryService; + private static workspaceContext: WorkspaceContext; - public static async loadDependencies(context: vscode.ExtensionContext): Promise { + public static async loadDependencies(context: vscode.ExtensionContext, outputChannel: vscode.LogOutputChannel): Promise { if (!CoreExtensionService.initialized) { const coreExtensionApi = await this.getCoreExtensionApiOrUndefined(); - await CoreExtensionService.initializeTelemetryService(coreExtensionApi?.services.TelemetryService, context); + await CoreExtensionService.initializeTelemetryService(coreExtensionApi?.services.TelemetryService, context, outputChannel); + if (APEX_GURU_FEATURE_FLAG_ENABLED) { + CoreExtensionService.initializeWorkspaceContext(coreExtensionApi?.services.WorkspaceContext, outputChannel); + } CoreExtensionService.initialized = true; } } @@ -65,9 +70,10 @@ export class CoreExtensionService { * @param telemetryService * @param context */ - private static async initializeTelemetryService(telemetryService: CoreTelemetryService | undefined, context: vscode.ExtensionContext): Promise { + private static async initializeTelemetryService(telemetryService: CoreTelemetryService | undefined, context: vscode.ExtensionContext, outputChannel: vscode.LogOutputChannel): Promise { if (!telemetryService) { - console.log(`Telemetry service not present in core dependency API. Using null instead.`); + outputChannel.append(`Telemetry service not present in core dependency API. Using null instead.`); + outputChannel.show(); CoreExtensionService.telemetryService = null; } else { CoreExtensionService.telemetryService = telemetryService.getInstance(); @@ -75,6 +81,14 @@ export class CoreExtensionService { } } + private static initializeWorkspaceContext(workspaceContext: WorkspaceContext | undefined, outputChannel: vscode.LogOutputChannel) { + if (!workspaceContext) { + outputChannel.warn('***Workspace Context not present in core dependency API. Check if the Core Extension installed.***'); + outputChannel.show(); + } + CoreExtensionService.workspaceContext = workspaceContext.getInstance(false); + } + /** * * @returns The {@link TelemetryService} object exported by the Core Extension if available, else null. @@ -85,6 +99,19 @@ export class CoreExtensionService { } throw new Error(messages.error.coreExtensionServiceUninitialized); } + + static async getWorkspaceOrgId(): Promise { + if (CoreExtensionService.initialized) { + const connection = await CoreExtensionService.workspaceContext.getConnection(); + return connection.getAuthInfoFields().orgId ?? ''; + } + throw new Error('***Org not initialized***'); + } + + static async getConnection(): Promise { + const connection = await CoreExtensionService.workspaceContext.getConnection(); + return connection; + } } export class TelemetryService { @@ -139,5 +166,27 @@ interface CoreTelemetryService { interface CoreExtensionApi { services: { TelemetryService: CoreTelemetryService; + WorkspaceContext: WorkspaceContext; } } + +interface WorkspaceContext { + readonly onOrgChange: Event<{ + username?: string; + alias?: string; + }>; + getInstance(forceNew: boolean): WorkspaceContext; + getConnection(): Promise; + username(): string | undefined; + alias(): string | undefined; +} + +interface Connection { + instanceUrl: string; + getApiVersion(): string; + getUsername(): string | undefined; + getAuthInfoFields(): AuthFields; + request(options: { method: string; url: string; body: string; headers?: Record }): Promise; +} + + diff --git a/src/test/suite/extension.test.ts b/src/test/suite/extension.test.ts index 6486604..009e565 100644 --- a/src/test/suite/extension.test.ts +++ b/src/test/suite/extension.test.ts @@ -9,9 +9,9 @@ import {expect} from 'chai'; import path = require('path'); import {SfCli} from '../../lib/sf-cli'; import Sinon = require('sinon'); -import { _runAndDisplayPathless, _runAndDisplayDfa, _clearDiagnostics, _shouldProceedWithDfaRun, _stopExistingDfaRun, _isValidFileForAnalysis, verifyPluginInstallation, _clearDiagnosticsForSelectedFiles, _removeDiagnosticsInRange, RunInfo } from '../../extension'; +import { _runAndDisplayPathless, _runAndDisplayDfa, _clearDiagnostics, _shouldProceedWithDfaRun, _stopExistingDfaRun, _isValidFileForAnalysis, _isApexGuruEnabledInOrg, verifyPluginInstallation, _clearDiagnosticsForSelectedFiles, _removeDiagnosticsInRange, RunInfo } from '../../extension'; import {messages} from '../../lib/messages'; -import {TelemetryService} from '../../lib/core-extension-service'; +import {CoreExtensionService, TelemetryService} from '../../lib/core-extension-service'; import * as Constants from '../../lib/constants'; import * as targeting from '../../lib/targeting'; @@ -153,8 +153,6 @@ suite('Extension Test Suite', () => { suite('#_runAndDisplayPathless()', () => { suite('Error handling', () => { - const outputChannel: vscode.LogOutputChannel = vscode.window.createOutputChannel('sfca', {log: true}); - outputChannel.clear(); let commandTelemStub: Sinon.SinonStub; let exceptionTelemStub: Sinon.SinonStub; setup(() => { @@ -177,8 +175,7 @@ suite('Extension Test Suite', () => { // Attempt to run the appropriate extension command. // The arguments do not matter. await _runAndDisplayPathless(null, { - commandName: fakeTelemetryName, - outputChannel + commandName: fakeTelemetryName }); // ===== ASSERTIONS ===== @@ -202,8 +199,7 @@ suite('Extension Test Suite', () => { // Attempt to run the appropriate extension command. // The arguments do not matter. await _runAndDisplayPathless(null, { - commandName: fakeTelemetryName, - outputChannel + commandName: fakeTelemetryName }); // ===== ASSERTIONS ===== @@ -219,9 +215,6 @@ suite('Extension Test Suite', () => { suite('#_runAndDisplayDfa()', () => { suite('Error handling', () => { - const statusBar: vscode.StatusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 100); - const outputChannel: vscode.LogOutputChannel = vscode.window.createOutputChannel('sfca', {log: true}); - outputChannel.clear(); let commandTelemStub: Sinon.SinonStub; let exceptionTelemStub: Sinon.SinonStub; @@ -244,8 +237,7 @@ suite('Extension Test Suite', () => { // ===== TEST ===== // Attempt to run the appropriate extension command. await _runAndDisplayDfa(null, { - commandName: fakeTelemetryName, - outputChannel + commandName: fakeTelemetryName }, null, 'someMethod', 'some/project/dir'); // ===== ASSERTIONS ===== @@ -270,8 +262,7 @@ suite('Extension Test Suite', () => { let err: Error = null; try { await _runAndDisplayDfa(null, { - commandName: fakeTelemetryName, - outputChannel + commandName: fakeTelemetryName }, null, 'someMethod', 'some/project/dir'); } catch (e) { err = e; @@ -335,7 +326,6 @@ suite('Extension Test Suite', () => { suite('#_shouldProceedWithDfaRun()', () => { let ext = vscode.extensions.getExtension('salesforce.sfdx-code-analyzer-vscode'); let context: vscode.ExtensionContext; - const outputChannel: vscode.LogOutputChannel = vscode.window.createOutputChannel('sfca', {log: true}); suiteSetup(async function () { this.timeout(10000); @@ -371,7 +361,6 @@ suite('Extension Test Suite', () => { suite('#_stopExistingDfaRun()', () => { let ext = vscode.extensions.getExtension('salesforce.sfdx-code-analyzer-vscode'); let context: vscode.ExtensionContext; - const outputChannel: vscode.LogOutputChannel = vscode.window.createOutputChannel('sfca', {log: true}); suiteSetup(async function () { this.timeout(10000); @@ -386,17 +375,91 @@ suite('Extension Test Suite', () => { test('Cache cleared as part of stopping the existing DFA run', async() => { context.workspaceState.update(Constants.WORKSPACE_DFA_PROCESS, 1234); - _stopExistingDfaRun(context, outputChannel); + _stopExistingDfaRun(context); expect(context.workspaceState.get(Constants.WORKSPACE_DFA_PROCESS)).to.be.undefined; }); test('Cache stays cleared when there are no existing DFA runs', async() => { void context.workspaceState.update(Constants.WORKSPACE_DFA_PROCESS, undefined); - _stopExistingDfaRun(context, outputChannel); + _stopExistingDfaRun(context); expect(context.workspaceState.get(Constants.WORKSPACE_DFA_PROCESS)).to.be.undefined; }); }); + suite('#_isApexGuruEnabledInOrg', () => { + let getConnectionStub: Sinon.SinonStub; + let requestStub: Sinon.SinonStub; + + setup(() => { + getConnectionStub = Sinon.stub(CoreExtensionService, 'getConnection'); + requestStub = Sinon.stub(); + }); + + teardown(() => { + Sinon.restore(); + }); + + test('Returns true if response status is Success', async () => { + // ===== SETUP ===== + getConnectionStub.resolves({ + request: requestStub.resolves({ status: 'Success' }) + }); + + // ===== TEST ===== + const result = await _isApexGuruEnabledInOrg(); + + // ===== ASSERTIONS ===== + expect(result).to.be.true; + Sinon.assert.calledOnce(getConnectionStub); + Sinon.assert.calledOnce(requestStub); + Sinon.assert.calledWith(requestStub, { + method: 'GET', + url: Constants.APEX_GURU_AUTH_ENDPOINT, + body: '' + }); + }); + + test('Returns false if response status is not Success', async () => { + // ===== SETUP ===== + getConnectionStub.resolves({ + request: requestStub.resolves({ status: 'Failure' }) + }); + + // ===== TEST ===== + const result = await _isApexGuruEnabledInOrg(); + + // ===== ASSERTIONS ===== + expect(result).to.be.false; + Sinon.assert.calledOnce(getConnectionStub); + Sinon.assert.calledOnce(requestStub); + Sinon.assert.calledWith(requestStub, { + method: 'GET', + url: Constants.APEX_GURU_AUTH_ENDPOINT, + body: '' + }); + }); + + test('Returns false if an error is thrown', async () => { + // ===== SETUP ===== + getConnectionStub.resolves({ + request: requestStub.rejects(new Error('Resource not found')) + }); + + // ===== TEST ===== + const result = await _isApexGuruEnabledInOrg(); + + // ===== ASSERTIONS ===== + expect(result).to.be.false; + Sinon.assert.calledOnce(getConnectionStub); + Sinon.assert.calledOnce(requestStub); + Sinon.assert.calledWith(requestStub, { + method: 'GET', + url: Constants.APEX_GURU_AUTH_ENDPOINT, + body: '' + }); + }); + }); + suite('#isValidFileForAnalysis', () => { test('Returns true for valid files', async() => { // ===== SETUP ===== and ===== ASSERTIONS ===== @@ -417,7 +480,6 @@ suite('Extension Test Suite', () => { suite('_clearDiagnosticsForSelectedFiles Test Suite', () => { let diagnosticCollection: vscode.DiagnosticCollection; let runInfo: RunInfo; - const outputChannel: vscode.LogOutputChannel = vscode.window.createOutputChannel('sfca', {log: true}); let getTargetsStub: Sinon.SinonStub; suiteSetup(() => { @@ -425,8 +487,7 @@ suite('Extension Test Suite', () => { diagnosticCollection = vscode.languages.createDiagnosticCollection(); runInfo = { commandName: Constants.COMMAND_REMOVE_DIAGNOSTICS_ON_ACTIVE_FILE, - diagnosticCollection, - outputChannel + diagnosticCollection }; getTargetsStub = Sinon.stub(targeting, 'getTargets'); }); diff --git a/src/types.d.ts b/src/types.d.ts index 9b05ce9..745f121 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -45,4 +45,37 @@ export type ExecutionResult = { result?: RuleResult[]|string; warnings?: string[]; message?: string; -}; \ No newline at end of file +}; + +export type AuthFields = { + accessToken?: string; + alias?: string; + authCode?: string; + clientId?: string; + clientSecret?: string; + created?: string; + createdOrgInstance?: string; + devHubUsername?: string; + instanceUrl?: string; + instanceApiVersion?: string; + instanceApiVersionLastRetrieved?: string; + isDevHub?: boolean; + loginUrl?: string; + orgId?: string; + password?: string; + privateKey?: string; + refreshToken?: string; + scratchAdminUsername?: string; + snapshot?: string; + userId?: string; + username?: string; + usernames?: string[]; + userProfileName?: string; + expirationDate?: string; + tracksSource?: boolean; +}; + +export type ApexGuruAuthResponse = { + status: string; +} + From f7f87131a457512003d8362cb54aad69488b4f7c Mon Sep 17 00:00:00 2001 From: Jagadeeswaran Jayaprakash <58611665+jag-j@users.noreply.github.com> Date: Tue, 23 Jul 2024 10:41:50 -0700 Subject: [PATCH 06/13] NEW (Extension) @W-16286379@ Bundle extension with esbuild + other changes for GA (#105) --- .eslintrc.json | 3 +- .vscodeignore | 6 +- esbuild.js | 31 ++++++++++ package.json | 9 ++- yarn.lock | 150 +++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 195 insertions(+), 4 deletions(-) create mode 100644 esbuild.js diff --git a/.eslintrc.json b/.eslintrc.json index 546cda8..4677f03 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -18,6 +18,7 @@ "out", "dist", "**/*.d.ts", - "src/test" + "src/test", + "esbuild.js" ] } diff --git a/.vscodeignore b/.vscodeignore index a2f3f04..91a88c7 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -3,6 +3,7 @@ src/** .gitignore .yarnrc +.sfdx vsc-extension-quickstart.md **/tsconfig.json **/.eslintrc.json @@ -14,4 +15,7 @@ coverage/** github-actions/** templates/** .git2gus/** -.github/** \ No newline at end of file +.github/** +!out/extension.js +out/** +node_modules/ diff --git a/esbuild.js b/esbuild.js new file mode 100644 index 0000000..dc3319d --- /dev/null +++ b/esbuild.js @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2023, salesforce.com, inc. + * All rights reserved. + * Licensed under the BSD 3-Clause license. + * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause + **/ +/* eslint-disable @typescript-eslint/no-var-requires */ +const { build } = require('esbuild'); + +const production = process.argv.includes('--production'); + +/** + * TODO: We have entryPoints and outfile to be the same since runTests looks for the extension's main to be at + * 'out/' as defined in package.json.We should refactor the tests not to rely on package.json and until then, + * the entryPoints and outfile will be the same with allowOverwrite set ti true. + */ +build({ + entryPoints: ['out/extension.js'], + bundle: true, + platform: 'node', + target: 'es2020', + outfile: 'out/extension.js', + format: 'cjs', + external: ['vscode'], + sourcemap: !production, + minify: production, + allowOverwrite: true +}).catch((e) => { + console.error(e); + NodeJS.process.exit(1); +}); \ No newline at end of file diff --git a/package.json b/package.json index df307f1..3b8cdb0 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "publisher": "salesforce", "license": "BSD-3-Clause", "engines": { - "vscode": "^1.74.0" + "vscode": "^1.82.0" }, "categories": [ "Programming Languages", @@ -52,6 +52,7 @@ "@vscode/test-electron": "^2.2.0", "@vscode/vsce": "^2.20.0", "chai": "^4.3.7", + "esbuild": "^0.23.0", "eslint": "^8.28.0", "mocha": "^10.1.0", "nyc": "^15.1.0", @@ -60,8 +61,12 @@ "ts-node": "^10.9.1", "typescript": "^4.9.3" }, + "extensionDependencies": [ + "salesforce.salesforcedx-vscode-core" + ], "scripts": { - "vscode:prepublish": "yarn run compile", + "vscode:prepublish": "yarn run compile && node esbuild.js --production", + "build": "node esbuild.js", "compile": "tsc -p ./", "watch": "tsc -watch -p ./", "pretest": "yarn run compile && yarn run lint", diff --git a/yarn.lock b/yarn.lock index 34592a3..f3ed426 100644 --- a/yarn.lock +++ b/yarn.lock @@ -313,6 +313,126 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@esbuild/aix-ppc64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz#145b74d5e4a5223489cabdc238d8dad902df5259" + integrity sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ== + +"@esbuild/android-arm64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz#453bbe079fc8d364d4c5545069e8260228559832" + integrity sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ== + +"@esbuild/android-arm@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.0.tgz#26c806853aa4a4f7e683e519cd9d68e201ebcf99" + integrity sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g== + +"@esbuild/android-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.0.tgz#1e51af9a6ac1f7143769f7ee58df5b274ed202e6" + integrity sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ== + +"@esbuild/darwin-arm64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz#d996187a606c9534173ebd78c58098a44dd7ef9e" + integrity sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow== + +"@esbuild/darwin-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz#30c8f28a7ef4e32fe46501434ebe6b0912e9e86c" + integrity sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ== + +"@esbuild/freebsd-arm64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz#30f4fcec8167c08a6e8af9fc14b66152232e7fb4" + integrity sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw== + +"@esbuild/freebsd-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz#1003a6668fe1f5d4439e6813e5b09a92981bc79d" + integrity sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ== + +"@esbuild/linux-arm64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz#3b9a56abfb1410bb6c9138790f062587df3e6e3a" + integrity sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw== + +"@esbuild/linux-arm@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz#237a8548e3da2c48cd79ae339a588f03d1889aad" + integrity sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw== + +"@esbuild/linux-ia32@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz#4269cd19cb2de5de03a7ccfc8855dde3d284a238" + integrity sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA== + +"@esbuild/linux-loong64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz#82b568f5658a52580827cc891cb69d2cb4f86280" + integrity sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A== + +"@esbuild/linux-mips64el@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz#9a57386c926262ae9861c929a6023ed9d43f73e5" + integrity sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w== + +"@esbuild/linux-ppc64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz#f3a79fd636ba0c82285d227eb20ed8e31b4444f6" + integrity sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw== + +"@esbuild/linux-riscv64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz#f9d2ef8356ce6ce140f76029680558126b74c780" + integrity sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw== + +"@esbuild/linux-s390x@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz#45390f12e802201f38a0229e216a6aed4351dfe8" + integrity sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg== + +"@esbuild/linux-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz#c8409761996e3f6db29abcf9b05bee8d7d80e910" + integrity sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ== + +"@esbuild/netbsd-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz#ba70db0114380d5f6cfb9003f1d378ce989cd65c" + integrity sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw== + +"@esbuild/openbsd-arm64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz#72fc55f0b189f7a882e3cf23f332370d69dfd5db" + integrity sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ== + +"@esbuild/openbsd-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz#b6ae7a0911c18fe30da3db1d6d17a497a550e5d8" + integrity sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg== + +"@esbuild/sunos-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz#58f0d5e55b9b21a086bfafaa29f62a3eb3470ad8" + integrity sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA== + +"@esbuild/win32-arm64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz#b858b2432edfad62e945d5c7c9e5ddd0f528ca6d" + integrity sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ== + +"@esbuild/win32-ia32@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz#167ef6ca22a476c6c0c014a58b4f43ae4b80dec7" + integrity sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA== + +"@esbuild/win32-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz#db44a6a08520b5f25bbe409f34a59f2d4bcc7ced" + integrity sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1466,6 +1586,36 @@ es6-error@^4.0.1: resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== +esbuild@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.0.tgz#de06002d48424d9fdb7eb52dbe8e95927f852599" + integrity sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA== + optionalDependencies: + "@esbuild/aix-ppc64" "0.23.0" + "@esbuild/android-arm" "0.23.0" + "@esbuild/android-arm64" "0.23.0" + "@esbuild/android-x64" "0.23.0" + "@esbuild/darwin-arm64" "0.23.0" + "@esbuild/darwin-x64" "0.23.0" + "@esbuild/freebsd-arm64" "0.23.0" + "@esbuild/freebsd-x64" "0.23.0" + "@esbuild/linux-arm" "0.23.0" + "@esbuild/linux-arm64" "0.23.0" + "@esbuild/linux-ia32" "0.23.0" + "@esbuild/linux-loong64" "0.23.0" + "@esbuild/linux-mips64el" "0.23.0" + "@esbuild/linux-ppc64" "0.23.0" + "@esbuild/linux-riscv64" "0.23.0" + "@esbuild/linux-s390x" "0.23.0" + "@esbuild/linux-x64" "0.23.0" + "@esbuild/netbsd-x64" "0.23.0" + "@esbuild/openbsd-arm64" "0.23.0" + "@esbuild/openbsd-x64" "0.23.0" + "@esbuild/sunos-x64" "0.23.0" + "@esbuild/win32-arm64" "0.23.0" + "@esbuild/win32-ia32" "0.23.0" + "@esbuild/win32-x64" "0.23.0" + escalade@^3.1.1, escalade@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" From d8aa2bcf958cc071a0948db6fefcb04376be6e83 Mon Sep 17 00:00:00 2001 From: Jagadeeswaran Jayaprakash <58611665+jag-j@users.noreply.github.com> Date: Wed, 24 Jul 2024 13:35:21 -0700 Subject: [PATCH 07/13] NEW (Extension) @W-16286379@ Get telemetry service by passing in the extension name (#106) --- src/lib/core-extension-service.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/lib/core-extension-service.ts b/src/lib/core-extension-service.ts index e961739..9766afa 100644 --- a/src/lib/core-extension-service.ts +++ b/src/lib/core-extension-service.ts @@ -71,12 +71,14 @@ export class CoreExtensionService { * @param context */ private static async initializeTelemetryService(telemetryService: CoreTelemetryService | undefined, context: vscode.ExtensionContext, outputChannel: vscode.LogOutputChannel): Promise { + const { name } = context.extension.packageJSON as { name: string }; + if (!telemetryService) { outputChannel.append(`Telemetry service not present in core dependency API. Using null instead.`); outputChannel.show(); CoreExtensionService.telemetryService = null; } else { - CoreExtensionService.telemetryService = telemetryService.getInstance(); + CoreExtensionService.telemetryService = telemetryService.getInstance(name); await CoreExtensionService.telemetryService.initializeService(context); } } @@ -149,7 +151,7 @@ export interface Properties { interface CoreTelemetryService { extensionName: string; isTelemetryEnabled(): boolean; - getInstance(): CoreTelemetryService; + getInstance(extensionName: string): CoreTelemetryService; initializeService(extensionContext: vscode.ExtensionContext): Promise; sendExtensionActivationEvent(hrstart: [number, number]): void; sendExtensionDeactivationEvent(): void; From ac85a654eaac26e51c976fd1dd222d5129f5b562 Mon Sep 17 00:00:00 2001 From: Jagadeeswaran Jayaprakash <58611665+jag-j@users.noreply.github.com> Date: Fri, 26 Jul 2024 07:10:48 -0700 Subject: [PATCH 08/13] NEW (Extension) @W-16286379@ Remove beta tags from changelog and readme files (#107) --- CHANGELOG.md | 4 ++-- README.md | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8e49bb..4c394bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,3 @@ -# Change Log - Salesforce Code Analyzer VS Code Extension (Beta) +# Change Log - Salesforce Code Analyzer VS Code Extension -To see a list of changes each month for the Salesforce Code Analyzer VS Code Extension (Beta), visit our [Salesforce Code Analyzer Release Notes](https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/guide/release-notes.md) page. \ No newline at end of file +To see a list of changes each month for the Salesforce Code Analyzer VS Code Extension, visit our [Salesforce Code Analyzer Release Notes](https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/guide/release-notes.md) page. \ No newline at end of file diff --git a/README.md b/README.md index c2571d4..77f5608 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# Salesforce Code Analyzer Extension for Visual Studio Code (Beta) +# Salesforce Code Analyzer Extension for Visual Studio Code Scan your code against multiple rule engines to produce lists of violations and improve your code. -The Salesforce Code Analyzer Extension (beta) enables Visual Studio (VS) Code to use Salesforce Code Analyzer to interact with your code. +The Salesforce Code Analyzer Extension enables Visual Studio (VS) Code to use Salesforce Code Analyzer to interact with your code. # Documentation -For documentation, visit the [Salesforce Code Analyzer VS Code Extension](https://forcedotcom.github.io/sfdx-scanner/en/v3.x/code-analyzer-vs-code-extension/) documentation. +For documentation, visit the [Salesforce Code Analyzer VS Code Extension](https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/guide/code-analyzer-vs-code-extension.html) documentation. # Bugs and Feedback To report issues with the Salesforce Code Analyzer VS Code Extension, create a [bug on Github](https://github.com/forcedotcom/sfdx-code-analyzer-vscode/issues/new?assignees=&labels=&projects=&template=bug_report.md&title=%5BBUG%5D). To suggest a feature enhancement, create a [request on Github](https://github.com/forcedotcom/sfdx-code-analyzer-vscode/issues/new?assignees=&labels=&projects=&template=feature_request.md&title=%5BFeature+Request%5D). @@ -22,11 +22,11 @@ Currently, Visual Studio Code extensions aren't signed or verified on the Micros --- -**Terms of Use for the Code Analyzer VS Code Extension (Beta)** +**Terms of Use for the Code Analyzer VS Code Extension** Copyright 2023 Salesforce, Inc. All rights reserved. -These Terms of Use govern the download, installation, and/or use of the beta Code Analyzer VS Code Extension provided by Salesforce, Inc. (“Salesforce”) (the “Extension”). +These Terms of Use govern the download, installation, and/or use of the Code Analyzer VS Code Extension provided by Salesforce, Inc. (“Salesforce”) (the “Extension”). **License**: Salesforce grants you a non-transferable, non-sublicensable, non-exclusive license to use the Extension, at no charge, subject to these Terms. Salesforce reserves all rights, title, and interest in and to the Extension. From ece03462acda2d84640bc1792ce572b129180ef8 Mon Sep 17 00:00:00 2001 From: Joshua Feingold Date: Fri, 26 Jul 2024 13:56:42 -0500 Subject: [PATCH 09/13] FIX (DevOps) @W-16095971@ Fixed release branch creation GHA. --- .github/workflows/create-release-branch.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/create-release-branch.yml b/.github/workflows/create-release-branch.yml index 8091bd8..8cc12ae 100644 --- a/.github/workflows/create-release-branch.yml +++ b/.github/workflows/create-release-branch.yml @@ -138,7 +138,7 @@ jobs: git checkout -b release-$NEW_VERSION git push --set-upstream origin release-$NEW_VERSION # Now that we're done with the interim branch, delete it. - git push -d ${NEW_VERSION}-interim + git push -d origin ${NEW_VERSION}-interim # Output the release branch name so we can use it in later jobs. echo "branch_name=release-$NEW_VERSION" >> "$GITHUB_OUTPUT" # Build the scanner tarball so it can be installed locally when we run tests. From 530cc8f27f58d7ea2267bbcad7aa4a54a5d17571 Mon Sep 17 00:00:00 2001 From: Jagadeeswaran Jayaprakash <58611665+jag-j@users.noreply.github.com> Date: Fri, 26 Jul 2024 12:44:37 -0700 Subject: [PATCH 10/13] NEW (Extension) @W-16286379@ Handle violations from eslint that have zero value for lines and columns (#108) --- src/lib/diagnostics.ts | 9 +++++++-- src/test/suite/diagnostics.test.ts | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/lib/diagnostics.ts b/src/lib/diagnostics.ts index 38cc7fe..12dfffc 100644 --- a/src/lib/diagnostics.ts +++ b/src/lib/diagnostics.ts @@ -63,12 +63,17 @@ export class DiagnosticManager { // appear in response to developer error, not user error. throw new Error('Diagnostics cannot be created from DFA violations'); } + + // Handle case where line or column is 0 by setting them to a default value (1-based index). + const line = violation.line > 0 ? violation.line : 1; + const column = violation.column > 0 ? violation.column : 1; + // We always have the information we need to create the starting position. - const startPosition: vscode.Position = new vscode.Position(violation.line - 1, violation.column - 1); + const startPosition: vscode.Position = new vscode.Position(line - 1, column - 1); // We may or may not have the information for an end position. const endPosition: vscode.Position = new vscode.Position( // If we're missing an explicit end line, use the starting line. - (violation.endLine || violation.line) - 1, + (violation.endLine || line) - 1, // If we're missing an explicit end column, just highlight everything through the end of the line. violation.endColumn || Number.MAX_SAFE_INTEGER ); diff --git a/src/test/suite/diagnostics.test.ts b/src/test/suite/diagnostics.test.ts index 64e236e..0bf77c8 100644 --- a/src/test/suite/diagnostics.test.ts +++ b/src/test/suite/diagnostics.test.ts @@ -209,6 +209,25 @@ suite('diagnostics.ts', () => { expect(endingPosition.line).to.equal(spoofedViolation.line - 1, 'Wrong end line'); expect(endingPosition.character).to.equal(Number.MAX_SAFE_INTEGER, 'Wrong end column'); }); + + test('Handles violation with line and column as 0', () => { + // ===== SETUP ===== + const spoofedViolation: PathlessRuleViolation = JSON.parse(JSON.stringify(baseSpoofedViolation)) as PathlessRuleViolation; + spoofedViolation.line = 0; + spoofedViolation.column = 0; + const diagnosticManager: DiagnosticManager = new DiagnosticManager(); + + // ===== TEST ===== + const diagnostic: vscode.Diagnostic = (diagnosticManager as any).createDiagnostic("pmd", spoofedViolation); + + // ===== ASSERTIONS ===== + const startingPosition: vscode.Position = diagnostic.range.start; + const endingPosition: vscode.Position = diagnostic.range.end; + expect(startingPosition.line).to.equal(0, 'Wrong starting line'); + expect(startingPosition.character).to.equal(0, 'Wrong starting column'); + expect(endingPosition.line).to.equal(0, 'Wrong end line'); + expect(endingPosition.character).to.equal(Number.MAX_SAFE_INTEGER, 'Wrong end column'); + }); }); suite('DFA violations', () => { From 88769437157f62de283ed7708bb5eace68030269 Mon Sep 17 00:00:00 2001 From: Jagadeeswaran Jayaprakash <58611665+jag-j@users.noreply.github.com> Date: Fri, 26 Jul 2024 13:02:07 -0700 Subject: [PATCH 11/13] NEW (Extension) @W-16286379@ Change command text and output channel text based on Blitz testing feedback (#110) --- package.json | 10 +++++----- src/extension.ts | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 3b8cdb0..f4d2bc2 100644 --- a/package.json +++ b/package.json @@ -81,23 +81,23 @@ "commands": [ { "command": "sfca.runOnActiveFile", - "title": "SFDX: Scan current file with Code Analyzer" + "title": "SFDX: Scan Current File with Code Analyzer" }, { "command": "sfca.runOnSelected", - "title": "SFDX: Scan selected files or folders with Code Analyzer" + "title": "SFDX: Scan Selected Files or Folders with Code Analyzer" }, { "command": "sfca.runDfaOnSelectedMethod", - "title": "SFDX: Scan selected method with Graph Engine path-based analysis" + "title": "SFDX: Scan Selected Method with Graph Engine Path-Based Analysis" }, { "command": "sfca.removeDiagnosticsOnActiveFile", - "title": "SFDX: Clear Code Analyzer violations from current file" + "title": "SFDX: Clear Code Analyzer Violations from Current File" }, { "command": "sfca.removeDiagnosticsOnSelectedFile", - "title": "SFDX: Clear Code Analyzer violations from selected files or folders" + "title": "SFDX: Clear Code Analyzer Violations from Selected Files or Folders" }, { "command": "sfca.runDfa", diff --git a/src/extension.ts b/src/extension.ts index c40f299..181e7b9 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -45,7 +45,7 @@ export async function activate(context: vscode.ExtensionContext): Promise Date: Fri, 26 Jul 2024 20:04:36 +0000 Subject: [PATCH 12/13] Preparing for v1.0.0 release. --- package.json | 2 +- yarn.lock | 744 ++++++++++++++++++++++++++++----------------------- 2 files changed, 414 insertions(+), 332 deletions(-) diff --git a/package.json b/package.json index f4d2bc2..029a85f 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "color": "#ECECEC", "theme": "light" }, - "version": "0.7.0", + "version": "1.0.0", "publisher": "salesforce", "license": "BSD-3-Clause", "engines": { diff --git a/yarn.lock b/yarn.lock index f3ed426..2cd3362 100644 --- a/yarn.lock +++ b/yarn.lock @@ -47,9 +47,9 @@ 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== + version "1.16.2" + resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.2.tgz#3f71b09e45a65926cc598478b4f1bcd0fe67bf4b" + integrity sha512-Hnhm/PG9/SQ07JJyLDv3l9Qr8V3xgAe1hFoBYzt6LaalMxfL/ZqFaZf/bz5VN3pMcleCPwl8ivlS2Fjxq/iC8Q== dependencies: "@azure/abort-controller" "^2.0.0" "@azure/core-auth" "^1.4.0" @@ -68,17 +68,17 @@ 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== + version "1.9.1" + resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.9.1.tgz#05ea9505c5cdf29c55ccf99a648c66ddd678590b" + integrity sha512-OLsq0etbHO1MA7j6FouXFghuHrAFGk+5C1imcpQ2e+0oZhYF07WLA+NW2Vqs70R7d+zOAWiWM3tbE1sXcDN66g== dependencies: "@azure/abort-controller" "^2.0.0" tslib "^2.6.2" "@azure/identity@^4.1.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@azure/identity/-/identity-4.3.0.tgz#e8da6b3bf1df4de1511e813a7166a4b5b4a99ca1" - integrity sha512-LHZ58/RsIpIWa4hrrE2YuJ/vzG1Jv9f774RfTTAVDZDriubvJ0/S5u4pnw4akJDlS0TiJb6VMphmVUFsWmgodQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/@azure/identity/-/identity-4.4.0.tgz#f2743e63d346000a70b0eed5a3b397dedd3984a7" + integrity sha512-oG6oFNMxUuoivYg/ElyZWVSZfw42JQyHbrp+lR7VJ1BYWsGzt34NwyDw3miPp1QI7Qm5+4KAd76wGsbHQmkpkg== dependencies: "@azure/abort-controller" "^1.0.0" "@azure/core-auth" "^1.5.0" @@ -87,7 +87,7 @@ "@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-browser" "^3.14.0" "@azure/msal-node" "^2.9.2" events "^3.0.0" jws "^4.0.0" @@ -96,30 +96,30 @@ 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== + version "1.1.3" + resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.1.3.tgz#09a8fd4850b9112865756e92d5e8b728ee457345" + integrity sha512-J8/cIKNQB1Fc9fuYqBVnrppiUtW+5WWJPCj/tAokC5LdSTwkWWttN+jsRgw9BLYD7JDBx7PceiqOBxJJ1tQz3Q== dependencies: tslib "^2.6.2" -"@azure/msal-browser@^3.11.1": - version "3.17.0" - resolved "https://registry.yarnpkg.com/@azure/msal-browser/-/msal-browser-3.17.0.tgz#dee9ccae586239e7e0708b261f7ffa5bc7e00fb7" - integrity sha512-csccKXmW2z7EkZ0I3yAoW/offQt+JECdTIV/KrnRoZyM7wCSsQWODpwod8ZhYy7iOyamcHApR9uCh0oD1M+0/A== +"@azure/msal-browser@^3.14.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@azure/msal-browser/-/msal-browser-3.20.0.tgz#12ae45d0d398dac25b2b37710277103539c23994" + integrity sha512-ErsxbfCGIwdqD8jipqdxpfAGiUEQS7MWUe39Rjhl0ZVPsb1JEe9bZCe2+0g23HDH6DGyCAtnTNN9scPtievrMQ== dependencies: - "@azure/msal-common" "14.12.0" + "@azure/msal-common" "14.14.0" -"@azure/msal-common@14.12.0": - version "14.12.0" - resolved "https://registry.yarnpkg.com/@azure/msal-common/-/msal-common-14.12.0.tgz#844abe269b071f8fa8949dadc2a7b65bbb147588" - integrity sha512-IDDXmzfdwmDkv4SSmMEyAniJf6fDu3FJ7ncOjlxkDuT85uSnLEhZi3fGZpoR7T4XZpOMx9teM9GXBgrfJgyeBw== +"@azure/msal-common@14.14.0": + version "14.14.0" + resolved "https://registry.yarnpkg.com/@azure/msal-common/-/msal-common-14.14.0.tgz#31a015070d5864ebcf9ebb988fcbc5c5536f22d1" + integrity sha512-OxcOk9H1/1fktHh6//VCORgSNJc2dCQObTm6JNmL824Z6iZSO6eFo/Bttxe0hETn9B+cr7gDouTQtsRq3YPuSQ== "@azure/msal-node@^2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@azure/msal-node/-/msal-node-2.9.2.tgz#e6d3c1661012c1bd0ef68e328f73a2fdede52931" - integrity sha512-8tvi6Cos3m+0KmRbPjgkySXi+UQU/QiuVRFnrxIwt5xZlEEFa69O04RTaNESGgImyBBlYbo2mfE8/U8Bbdk1WQ== + version "2.12.0" + resolved "https://registry.yarnpkg.com/@azure/msal-node/-/msal-node-2.12.0.tgz#57ee6b6011a320046d72dc0828fec46278f2ab2c" + integrity sha512-jmk5Im5KujRA2AcyCb0awA3buV8niSrwXZs+NBJWIvxOz76RvNlusGIqi43A0h45BPUy93Qb+CPdpJn82NFTIg== dependencies: - "@azure/msal-common" "14.12.0" + "@azure/msal-common" "14.14.0" jsonwebtoken "^9.0.0" uuid "^8.3.0" @@ -131,75 +131,53 @@ "@babel/highlight" "^7.24.7" picocolors "^1.0.0" -"@babel/compat-data@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed" - integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== +"@babel/compat-data@^7.24.8": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.0.tgz#6b226a5da3a686db3c30519750e071dce292ad95" + integrity sha512-P4fwKI2mjEb3ZU5cnMJzvRsRKGBUcs8jvxIoRmr6ufAY9Xk2Bz7JubRTTivkw55c7WQJfTECeqYVa+HZ0FzREg== "@babel/core@^7.7.5": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.7.tgz#b676450141e0b52a3d43bc91da86aa608f950ac4" - integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== + version "7.24.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.9.tgz#dc07c9d307162c97fa9484ea997ade65841c7c82" + integrity sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.7" - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helpers" "^7.24.7" - "@babel/parser" "^7.24.7" + "@babel/generator" "^7.24.9" + "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-module-transforms" "^7.24.9" + "@babel/helpers" "^7.24.8" + "@babel/parser" "^7.24.8" "@babel/template" "^7.24.7" - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" + "@babel/traverse" "^7.24.8" + "@babel/types" "^7.24.9" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d" - integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== +"@babel/generator@^7.24.9", "@babel/generator@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e" + integrity sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== dependencies: - "@babel/types" "^7.24.7" + "@babel/types" "^7.25.0" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-compilation-targets@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9" - integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== +"@babel/helper-compilation-targets@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz#b607c3161cd9d1744977d4f97139572fe778c271" + integrity sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw== dependencies: - "@babel/compat-data" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - browserslist "^4.22.2" + "@babel/compat-data" "^7.24.8" + "@babel/helper-validator-option" "^7.24.8" + browserslist "^4.23.1" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-environment-visitor@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" - integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-function-name@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" - integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-hoist-variables@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" - integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== - dependencies: - "@babel/types" "^7.24.7" - "@babel/helper-module-imports@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" @@ -208,16 +186,15 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" -"@babel/helper-module-transforms@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz#31b6c9a2930679498db65b685b1698bfd6c7daf8" - integrity sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ== +"@babel/helper-module-transforms@^7.24.9": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.0.tgz#3ffc23c473a2769a7e40d3274495bd559fdd2ecc" + integrity sha512-bIkOa2ZJYn7FHnepzr5iX9Kmz8FjIz4UKzJ9zhX3dnYuVW0xul9RuR3skBfoLu+FPTQw90EHW9rJsSZhyLQ3fQ== dependencies: - "@babel/helper-environment-visitor" "^7.24.7" "@babel/helper-module-imports" "^7.24.7" "@babel/helper-simple-access" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.0" "@babel/helper-simple-access@^7.24.7": version "7.24.7" @@ -227,35 +204,28 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" -"@babel/helper-split-export-declaration@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" - integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-string-parser@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" - integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== "@babel/helper-validator-identifier@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== -"@babel/helper-validator-option@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6" - integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw== +"@babel/helper-validator-option@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" + integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== -"@babel/helpers@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.7.tgz#aa2ccda29f62185acb5d42fb4a3a1b1082107416" - integrity sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg== +"@babel/helpers@^7.24.8": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a" + integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.0" "@babel/highlight@^7.24.7": version "7.24.7" @@ -267,42 +237,39 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" - integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== +"@babel/parser@^7.24.8", "@babel/parser@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.0.tgz#9fdc9237504d797b6e7b8f66e78ea7f570d256ad" + integrity sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA== -"@babel/template@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" - integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== +"@babel/template@^7.24.7", "@babel/template@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" + integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== dependencies: "@babel/code-frame" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/types" "^7.24.7" + "@babel/parser" "^7.25.0" + "@babel/types" "^7.25.0" -"@babel/traverse@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5" - integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA== +"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.0.tgz#e8533c0a57ed97921d1e5b20dd3db63d3efaebf5" + integrity sha512-ubALThHQy4GCf6mbb+5ZRNmLLCI7bJ3f8Q6LHBSRlSKSWj5a7dSUzJBLv3VuIhFrFPgjF4IzPF567YG/HSCdZA== dependencies: "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.7" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-hoist-variables" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/types" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/parser" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.0" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" - integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== +"@babel/types@^7.24.7", "@babel/types@^7.24.9", "@babel/types@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.0.tgz#e6e3656c581f28da8452ed4f69e38008ec0ba41b" + integrity sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg== dependencies: - "@babel/helper-string-parser" "^7.24.7" + "@babel/helper-string-parser" "^7.24.8" "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" @@ -441,9 +408,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.10.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.1.tgz#361461e5cb3845d874e61731c11cfedd664d83a0" - integrity sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA== + version "4.11.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" + integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== "@eslint/eslintrc@^2.1.4": version "2.1.4" @@ -484,6 +451,18 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -527,9 +506,9 @@ integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" @@ -568,6 +547,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@sinonjs/commons@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" @@ -661,21 +645,21 @@ integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/mocha@^10.0.1": - version "10.0.6" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.6.tgz#818551d39113081048bdddbef96701b4e8bb9d1b" - integrity sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg== + version "10.0.7" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.7.tgz#4c620090f28ca7f905a94b706f74dc5b57b44f2f" + integrity sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw== "@types/node@*": - version "20.14.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.7.tgz#342cada27f97509eb8eb2dbc003edf21ce8ab5a8" - integrity sha512-uTr2m2IbJJucF3KUxgnGOZvYbN0QgkGyWxG6973HCpMYFy2KfcgYuIwkJQMQkt1VbBMlvWRbpshFTLxnxCZjKQ== + version "20.14.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.12.tgz#129d7c3a822cb49fc7ff661235f19cfefd422b49" + integrity sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ== dependencies: undici-types "~5.26.4" "@types/node@16.x": - version "16.18.101" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.101.tgz#1e3065490c9ea01a05baf23eb4ac5be985eedc19" - integrity sha512-AAsx9Rgz2IzG8KJ6tXd6ndNkVcu+GYB6U/SnFAaokSPNx2N7dcIIfnighYUNumvj6YS2q39Dejz5tT0NCV7CWA== + version "16.18.104" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.104.tgz#33d5f4886c54133af0ff02445e57c5254025ee53" + integrity sha512-OF3keVCbfPlkzxnnDBUZJn1RiCJzKeadjiW0xTEb0G1SUJ5gDVb3qnzZr2T4uIFvsbKJbXy1v2DN7e2zaEY7jQ== "@types/semver@^7.3.12": version "7.5.8" @@ -695,9 +679,9 @@ integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ== "@types/vscode@^1.74.0": - version "1.90.0" - resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.90.0.tgz#c122384d51bd774cec4aa86ca443858adc9edef2" - integrity sha512-oT+ZJL7qHS9Z8bs0+WKf/kQ27qWYR3trsXpq46YDjFqBsMLG4ygGGjPaJ2tyrH0wJzjOEmDyg9PDJBBhWg9pkQ== + version "1.91.0" + resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.91.0.tgz#badaf9dfca14b08f1ad32fe197558d8d1702c3c9" + integrity sha512-PgPr+bUODjG3y+ozWUCyzttqR9EHny9sPAfJagddQjDwdtf66y2sDKJMnFZRuzBA2YtBGASqJGPil8VDUPvO6A== "@typescript-eslint/eslint-plugin@^5.45.0": version "5.62.0" @@ -789,12 +773,12 @@ integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== "@vscode/test-electron@^2.2.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@vscode/test-electron/-/test-electron-2.4.0.tgz#6fcdbac10948960c15f8970cf5d5e624dd51a524" - integrity sha512-yojuDFEjohx6Jb+x949JRNtSn6Wk2FAh4MldLE3ck9cfvCqzwxF32QsNy1T9Oe4oT+ZfFcg0uPUCajJzOmPlTA== + version "2.4.1" + resolved "https://registry.yarnpkg.com/@vscode/test-electron/-/test-electron-2.4.1.tgz#5c2760640bf692efbdaa18bafcd35fb519688941" + integrity sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ== dependencies: http-proxy-agent "^7.0.2" - https-proxy-agent "^7.0.4" + https-proxy-agent "^7.0.5" jszip "^3.10.1" ora "^7.0.1" semver "^7.6.2" @@ -860,9 +844,9 @@ "@vscode/vsce-sign-win32-x64" "2.0.2" "@vscode/vsce@^2.19.0", "@vscode/vsce@^2.20.0": - version "2.29.0" - resolved "https://registry.yarnpkg.com/@vscode/vsce/-/vsce-2.29.0.tgz#527e1ae104d6ba38cf4ba9509ba414e3b0629328" - integrity sha512-63+aEO8SpjE6qKiIh2Cqy/P9zC7+USElGwpEdkyPp89xIBDBr5IqeNS3zkD3mp3wZqbvHIpJsCCNu74WQirYCg== + version "2.31.1" + resolved "https://registry.yarnpkg.com/@vscode/vsce/-/vsce-2.31.1.tgz#2420167e5b5ac49ff8fd1aeebfadde43711fbe55" + integrity sha512-LwEQFKXV21C4/brvGPH/9+7ZOUM5cbK7oJ4fVmy0YG75NIy1HV8eMSoBZrl+u23NxpAhor62Cu1aI+JFtCtjSg== dependencies: "@azure/identity" "^4.1.0" "@vscode/vsce-sign" "^2.0.0" @@ -872,7 +856,7 @@ cockatiel "^3.1.2" commander "^6.2.1" form-data "^4.0.0" - glob "^7.0.6" + glob "^11.0.0" hosted-git-info "^4.0.2" jsonc-parser "^3.2.0" leven "^3.1.0" @@ -882,7 +866,7 @@ parse-semver "^1.1.1" read "^1.0.7" semver "^7.5.2" - tmp "^0.2.1" + tmp "^0.2.3" typed-rest-client "^1.8.4" url-join "^4.0.1" xml2js "^0.5.0" @@ -904,9 +888,9 @@ acorn-walk@^8.1.1: acorn "^8.11.0" acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.0.tgz#1627bfa2e058148036133b8d9b51a700663c294c" - integrity sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw== + version "8.12.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== agent-base@^7.0.2, agent-base@^7.1.0: version "7.1.1" @@ -933,10 +917,10 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-colors@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== +ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-regex@^5.0.1: version "5.0.1" @@ -962,6 +946,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -1082,20 +1071,20 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browser-stdout@1.3.1: +browser-stdout@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.22.2: - version "4.23.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.1.tgz#ce4af0534b3d37db5c1a4ca98b9080f985041e96" - integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw== +browserslist@^4.23.1: + version "4.23.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed" + integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== dependencies: - caniuse-lite "^1.0.30001629" - electron-to-chromium "^1.4.796" + caniuse-lite "^1.0.30001640" + electron-to-chromium "^1.4.820" node-releases "^2.0.14" - update-browserslist-db "^1.0.16" + update-browserslist-db "^1.1.0" buffer-crc32@~0.2.3: version "0.2.13" @@ -1159,15 +1148,15 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001629: - version "1.0.30001636" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz#b15f52d2bdb95fad32c2f53c0b68032b85188a78" - integrity sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg== +caniuse-lite@^1.0.30001640: + version "1.0.30001643" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz#9c004caef315de9452ab970c3da71085f8241dbd" + integrity sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg== chai@^4.3.7: - version "4.4.1" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" - integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== + version "4.5.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8" + integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== dependencies: assertion-error "^1.1.0" check-error "^1.0.3" @@ -1175,7 +1164,7 @@ chai@^4.3.7: get-func-name "^2.0.2" loupe "^2.3.6" pathval "^1.1.1" - type-detect "^4.0.8" + type-detect "^4.1.0" chalk@^2.4.2: version "2.4.2" @@ -1231,10 +1220,10 @@ cheerio@^1.0.0-rc.9: 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" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -1292,9 +1281,9 @@ cliui@^7.0.2: 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== + version "3.2.1" + resolved "https://registry.yarnpkg.com/cockatiel/-/cockatiel-3.2.1.tgz#575f937bc4040a20ae27352a6d07c9c5a741981f" + integrity sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q== color-convert@^1.9.0: version "1.9.3" @@ -1387,20 +1376,13 @@ css-what@^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.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: version "4.3.5" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== dependencies: ms "2.1.2" -debug@4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1466,17 +1448,12 @@ detect-libc@^2.0.0: 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" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diff@^5.1.0: +diff@^5.1.0, diff@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== @@ -1537,10 +1514,10 @@ ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer "^5.0.1" -electron-to-chromium@^1.4.796: - version "1.4.808" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.808.tgz#85b2f93a5e32c2949a1a4d39375851945c936835" - integrity sha512-0ItWyhPYnww2VOuCGF4s1LTfbrdAV2ajy/TN+ZTuhR23AHI6rWHCrBXJ/uxoXOvRRqw8qjYVrG81HFI7x/2wdQ== +electron-to-chromium@^1.4.820: + version "1.5.2" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.2.tgz#6126ad229ce45e781ec54ca40db0504787f23d19" + integrity sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ== emoji-regex@^10.2.1: version "10.3.0" @@ -1552,6 +1529,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "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" @@ -1621,16 +1603,16 @@ escalade@^3.1.1, escalade@^3.1.2: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== -escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: - version "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== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -1711,9 +1693,9 @@ esprima@^4.0.0: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== dependencies: estraverse "^5.1.0" @@ -1812,14 +1794,6 @@ find-cache-dir@^3.2.0: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@5.0.0, find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -1828,6 +1802,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + flat-cache@^3.0.4: version "3.2.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" @@ -1860,6 +1842,14 @@ foreground-child@^2.0.0: cross-spawn "^7.0.0" signal-exit "^3.0.2" +foreground-child@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.2.1.tgz#767004ccf3a5b30df39bed90718bab43fe0a59f7" + integrity sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA== + dependencies: + 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" @@ -1944,18 +1934,19 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob@8.1.0, glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== +glob@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.0.tgz#6031df0d7b65eaa1ccb9b29b5ced16cea658e77e" + integrity sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g== dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" + foreground-child "^3.1.0" + jackspeak "^4.0.1" + minimatch "^10.0.0" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^2.0.0" -glob@^7.0.6, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -1967,6 +1958,17 @@ glob@^7.0.6, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.3, glob@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -2050,7 +2052,7 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" -he@1.2.0: +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== @@ -2085,10 +2087,10 @@ http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.2: agent-base "^7.1.0" debug "^4.3.4" -https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.4: - 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== +https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" + integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== dependencies: agent-base "^7.0.2" debug "4" @@ -2302,18 +2304,20 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +jackspeak@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.0.1.tgz#9fca4ce961af6083e259c376e9e3541431f5287b" + integrity sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -2322,6 +2326,13 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -2348,9 +2359,9 @@ json5@^2.2.3: integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 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== + version "3.3.1" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz#f2a524b4f7fd11e3d791e559977ad60b98b798b4" + integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== jsonwebtoken@^9.0.0: version "9.0.2" @@ -2523,7 +2534,7 @@ lodash.once@^4.0.0: resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== -log-symbols@4.1.0: +log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -2546,6 +2557,11 @@ loupe@^2.3.6: dependencies: get-func-name "^2.0.1" +lru-cache@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.0.0.tgz#15d93a196f189034d7166caf9fe55e7384c98a21" + integrity sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -2635,10 +2651,10 @@ mimic-response@^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" - integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== +minimatch@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b" + integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ== dependencies: brace-expansion "^2.0.1" @@ -2649,7 +2665,7 @@ minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatc dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1: +minimatch@^5.0.1, minimatch@^5.1.6: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -2661,43 +2677,48 @@ minimist@^1.2.0, minimist@^1.2.3: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + 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.1.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.4.0.tgz#ed03db96ee9cfc6d20c56f8e2af07b961dbae261" - integrity sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA== - dependencies: - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.4" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "8.1.0" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "5.0.1" - ms "2.1.3" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - workerpool "6.2.1" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" + version "10.7.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.7.0.tgz#9e5cbed8fa9b37537a25bd1f7fb4f6fc45458b9a" + integrity sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA== + dependencies: + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^8.1.0" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.0" ms@2.1.2: version "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.1: +ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -2753,9 +2774,9 @@ node-preload@^0.2.1: process-on-spawn "^1.0.0" node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -2803,9 +2824,9 @@ nyc@^15.1.0: yargs "^15.0.2" 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== + version "1.13.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" + integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" @@ -2920,6 +2941,11 @@ package-hash@^4.0.0: lodash.flattendeep "^4.4.0" release-zalgo "^1.0.0" +package-json-from-dist@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" + integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + pako@~1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -2969,6 +2995,14 @@ path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-scurry@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" + integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg== + dependencies: + lru-cache "^11.0.0" + minipass "^7.1.2" + path-to-regexp@^6.2.1: version "6.2.2" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.2.tgz#324377a83e5049cbecadc5554d6a63a9a4866b36" @@ -3055,9 +3089,9 @@ punycode@^2.1.0: 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== + version "6.12.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.3.tgz#e43ce03c8521b9c7fd7f1f13e514e5ca37727754" + integrity sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ== dependencies: side-channel "^1.0.6" @@ -3199,14 +3233,14 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.5, semver@^7.3.7, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.2: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -serialize-javascript@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== dependencies: randombytes "^2.1.0" @@ -3259,6 +3293,11 @@ signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +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" @@ -3324,6 +3363,15 @@ stoppable@^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: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -3333,6 +3381,15 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string-width@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-6.1.0.tgz#96488d6ed23f9ad5d82d13522af9e4c4c3fd7518" @@ -3356,6 +3413,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +"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" @@ -3375,7 +3439,7 @@ strip-bom@^4.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -strip-json-comments@3.1.1, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "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== @@ -3385,13 +3449,6 @@ strip-json-comments@~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" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - 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" @@ -3406,6 +3463,13 @@ supports-color@^7.1.0, supports-color@^7.2.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + tar-fs@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -3441,7 +3505,7 @@ 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: +tmp@^0.2.1, tmp@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== @@ -3513,11 +3577,16 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.8: +type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-detect@^4.0.0, type-detect@^4.0.8, type-detect@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" + integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -3555,19 +3624,19 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: 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== + version "1.13.7" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.7.tgz#970e33963af9a7dda228f17ebe8399e5fbe63a10" + integrity sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g== undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -update-browserslist-db@^1.0.16: - version "1.0.16" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" - integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== dependencies: escalade "^3.1.2" picocolors "^1.0.1" @@ -3616,10 +3685,19 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -workerpool@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" - integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== + +"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@^6.2.0: version "6.2.0" @@ -3639,6 +3717,15 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -3687,11 +3774,6 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" @@ -3700,12 +3782,12 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.2: +yargs-parser@^20.2.2, yargs-parser@^20.2.9: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-unparser@2.0.0: +yargs-unparser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== @@ -3715,19 +3797,6 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - yargs@^15.0.2: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" @@ -3745,6 +3814,19 @@ yargs@^15.0.2: y18n "^4.0.0" yargs-parser "^18.1.2" +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yauzl@^2.3.1: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" From f521c723c2a4ad9ba3326bd5330f037fdfa362f2 Mon Sep 17 00:00:00 2001 From: Jagadeeswaran Jayaprakash <58611665+jag-j@users.noreply.github.com> Date: Mon, 29 Jul 2024 07:29:14 -0700 Subject: [PATCH 13/13] NEW (Extension) @W-16096144@ Do not show apex guru command on command palette (#111) --- package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package.json b/package.json index 029a85f..4c01c89 100644 --- a/package.json +++ b/package.json @@ -186,6 +186,10 @@ { "command": "sfca.removeDiagnosticsOnSelectedFile", "when": "false" + }, + { + "command": "sfca.runApexGuruAnalysisOnSelectedFile", + "when": "false" } ], "editor/context": [