diff --git a/package.json b/package.json index 822cea73..e1c05d7e 100644 --- a/package.json +++ b/package.json @@ -5,12 +5,12 @@ "author": "Salesforce", "bugs": "https://github.com/forcedotcom/cli/issues", "dependencies": { - "@oclif/core": "^3.26.6", + "@oclif/core": "^4", "@salesforce/apex-node": "^6.0.0", "@salesforce/core": "^7.3.9", "@salesforce/kit": "^3.1.2", "@salesforce/plugin-info": "^3.3.4", - "@salesforce/sf-plugins-core": "^9.1.0", + "@salesforce/sf-plugins-core": "9.1.1-beta.1", "@salesforce/source-deploy-retrieve": "^11.6.3", "@salesforce/source-tracking": "^6.3.2", "@salesforce/ts-types": "^2.0.9", diff --git a/src/formatters/asyncDeployCancelResultFormatter.ts b/src/formatters/asyncDeployCancelResultFormatter.ts index 21c63619..8e998e58 100644 --- a/src/formatters/asyncDeployCancelResultFormatter.ts +++ b/src/formatters/asyncDeployCancelResultFormatter.ts @@ -5,10 +5,12 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { ux } from '@oclif/core'; +import { Ux } from '@salesforce/sf-plugins-core'; import { Messages } from '@salesforce/core'; import { AsyncDeployResultJson, DeployResultJson, Formatter } from '../utils/types.js'; +const ux = new Ux(); + export class AsyncDeployCancelResultFormatter implements Formatter { public constructor(private id: string) {} diff --git a/src/formatters/asyncDeployResultFormatter.ts b/src/formatters/asyncDeployResultFormatter.ts index 3fb72bb8..3f26316f 100644 --- a/src/formatters/asyncDeployResultFormatter.ts +++ b/src/formatters/asyncDeployResultFormatter.ts @@ -5,10 +5,12 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { ux } from '@oclif/core'; +import { Ux } from '@salesforce/sf-plugins-core'; import { Messages } from '@salesforce/core'; import { AsyncDeployResultJson, Formatter } from '../utils/types.js'; +const ux = new Ux(); + export class AsyncDeployResultFormatter implements Formatter { public constructor(private id: string) {} diff --git a/src/formatters/deleteResultFormatter.ts b/src/formatters/deleteResultFormatter.ts index 75ec7659..634b27d3 100644 --- a/src/formatters/deleteResultFormatter.ts +++ b/src/formatters/deleteResultFormatter.ts @@ -4,7 +4,7 @@ * 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 */ -import { ux } from '@oclif/core'; +import { Ux } from '@salesforce/sf-plugins-core'; import { DeployResult, FileResponse, FileResponseSuccess, RequestStatus } from '@salesforce/source-deploy-retrieve'; import { ensureArray } from '@salesforce/kit'; import chalk from 'chalk'; @@ -18,6 +18,8 @@ import { } from '../utils/output.js'; import { TestResultsFormatter } from '../formatters/testResultsFormatter.js'; +const ux = new Ux(); + export class DeleteResultFormatter extends TestResultsFormatter implements Formatter { public constructor( protected result: DeployResult, @@ -99,20 +101,18 @@ export class DeleteResultFormatter extends TestResultsFormatter implements Forma const failures = ensureArray(this.result.response.details.componentFailures); if (!failures.length) return; - const columns = { - problemType: { header: 'Type' }, - fullName: { header: 'Name' }, - error: { header: 'Problem' }, - }; - const options: ux.Table.table.Options = { - title: StandardColors.error(chalk.bold(`Component Failures [${failures.length}]`)), - 'no-truncate': true, - }; ux.log(); ux.table( failures.map((f) => ({ problemType: f.problemType, fullName: f.fullName, error: f.problem })), - columns, - options + { + problemType: { header: 'Type' }, + fullName: { header: 'Name' }, + error: { header: 'Problem' }, + }, + { + title: StandardColors.error(chalk.bold(`Component Failures [${failures.length}]`)), + 'no-truncate': true, + } ); } } diff --git a/src/formatters/deployCancelResultFormatter.ts b/src/formatters/deployCancelResultFormatter.ts index b1f57780..fd871d7b 100644 --- a/src/formatters/deployCancelResultFormatter.ts +++ b/src/formatters/deployCancelResultFormatter.ts @@ -4,10 +4,13 @@ * 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 */ -import { ux } from '@oclif/core'; +import { Ux } from '@salesforce/sf-plugins-core'; +import { error } from '@oclif/core/ux'; import { DeployResult, RequestStatus } from '@salesforce/source-deploy-retrieve'; import { DeployResultJson, Formatter } from '../utils/types.js'; +const ux = new Ux(); + export class DeployCancelResultFormatter implements Formatter { public constructor(protected result: DeployResult) {} @@ -20,7 +23,7 @@ export class DeployCancelResultFormatter implements Formatter if (this.result.response.status === RequestStatus.Canceled) { ux.log(`Successfully canceled ${this.result.response.id}`); } else { - ux.error(`Could not cancel ${this.result.response.id}`); + error(`Could not cancel ${this.result.response.id}`); } } } diff --git a/src/formatters/deployReportResultFormatter.ts b/src/formatters/deployReportResultFormatter.ts index 71a13ed6..64d123e8 100644 --- a/src/formatters/deployReportResultFormatter.ts +++ b/src/formatters/deployReportResultFormatter.ts @@ -4,13 +4,15 @@ * 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 */ -import { ux } from '@oclif/core'; +import { Ux } from '@salesforce/sf-plugins-core'; import { RequestStatus } from '@salesforce/source-deploy-retrieve'; import { StandardColors } from '@salesforce/sf-plugins-core'; import { Duration } from '@salesforce/kit'; import { tableHeader } from '../utils/output.js'; import { DeployResultFormatter } from './deployResultFormatter.js'; +const ux = new Ux(); + export class DeployReportResultFormatter extends DeployResultFormatter { public display(): void { ux.log(`${this.result.response.id}... ${this.result.response.status}`); diff --git a/src/formatters/deployResultFormatter.ts b/src/formatters/deployResultFormatter.ts index d2bd8647..65478afc 100644 --- a/src/formatters/deployResultFormatter.ts +++ b/src/formatters/deployResultFormatter.ts @@ -4,11 +4,11 @@ * 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 */ -import * as path from 'node:path'; +import path from 'node:path'; import { EOL } from 'node:os'; -import * as fs from 'node:fs'; +import fs from 'node:fs'; import { join } from 'node:path'; -import { ux } from '@oclif/core'; +import { Ux } from '@salesforce/sf-plugins-core'; import { ComponentStatus, DeployResult, @@ -51,6 +51,8 @@ import { } from '../utils/output.js'; import { TestResultsFormatter } from '../formatters/testResultsFormatter.js'; +const ux = new Ux(); + export class DeployResultFormatter extends TestResultsFormatter implements Formatter { private readonly relativeFiles: FileResponse[]; private readonly absoluteFiles: FileResponse[]; diff --git a/src/formatters/metadataConvertResultFormatter.ts b/src/formatters/metadataConvertResultFormatter.ts index 8c6d82f7..a2a2333f 100644 --- a/src/formatters/metadataConvertResultFormatter.ts +++ b/src/formatters/metadataConvertResultFormatter.ts @@ -4,11 +4,13 @@ * 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 */ -import * as path from 'node:path'; -import { ux } from '@oclif/core'; +import path from 'node:path'; +import { Ux } from '@salesforce/sf-plugins-core'; import { ConvertResult } from '@salesforce/source-deploy-retrieve'; import { Formatter, ConvertMdapiJson } from '../utils/types.js'; +const ux = new Ux(); + export class MetadataConvertResultFormatter implements Formatter { private convertResults!: ConvertMdapiJson; public constructor(private result: ConvertResult) {} diff --git a/src/formatters/metadataRetrieveResultFormatter.ts b/src/formatters/metadataRetrieveResultFormatter.ts index e7fd14a1..f140b40c 100644 --- a/src/formatters/metadataRetrieveResultFormatter.ts +++ b/src/formatters/metadataRetrieveResultFormatter.ts @@ -6,12 +6,14 @@ */ import { join, parse } from 'node:path'; -import { ux } from '@oclif/core'; +import { Ux } from '@salesforce/sf-plugins-core'; import { FileResponse, RetrieveResult } from '@salesforce/source-deploy-retrieve'; import { Messages } from '@salesforce/core'; import { Formatter, MetadataRetrieveResultJson } from '../utils/types.js'; import { fileResponseSortFn, makePathRelative } from '../utils/output.js'; +const ux = new Ux(); + Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); export const retrieveMessages = Messages.loadMessages('@salesforce/plugin-deploy-retrieve', 'retrieve.start'); diff --git a/src/formatters/retrieveResultFormatter.ts b/src/formatters/retrieveResultFormatter.ts index c8bffc93..f47f3b99 100644 --- a/src/formatters/retrieveResultFormatter.ts +++ b/src/formatters/retrieveResultFormatter.ts @@ -4,7 +4,7 @@ * 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 */ -import * as path from 'node:path'; +import path from 'node:path'; import { Ux } from '@salesforce/sf-plugins-core'; import { FileResponse, RetrieveMessage, RetrieveResult } from '@salesforce/source-deploy-retrieve'; import { NamedPackageDir, SfProject } from '@salesforce/core'; diff --git a/src/formatters/sourceConvertResultFormatter.ts b/src/formatters/sourceConvertResultFormatter.ts index 7222cacf..3600ff6a 100644 --- a/src/formatters/sourceConvertResultFormatter.ts +++ b/src/formatters/sourceConvertResultFormatter.ts @@ -6,12 +6,14 @@ */ import { resolve } from 'node:path'; -import { ux } from '@oclif/core'; +import { Ux } from '@salesforce/sf-plugins-core'; import { ConvertResult } from '@salesforce/source-deploy-retrieve'; import { SfError, Messages } from '@salesforce/core'; import { ConvertResultJson, Formatter } from '../utils/types.js'; import { exitCodeAsNumber } from '../utils/output.js'; +const ux = new Ux(); + Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); export const convertMessages = Messages.loadMessages('@salesforce/plugin-deploy-retrieve', 'convert.source'); diff --git a/src/formatters/testResultsFormatter.ts b/src/formatters/testResultsFormatter.ts index 37f9857b..5a9de963 100644 --- a/src/formatters/testResultsFormatter.ts +++ b/src/formatters/testResultsFormatter.ts @@ -4,8 +4,8 @@ * 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 */ -import * as os from 'node:os'; -import { ux } from '@oclif/core'; +import os from 'node:os'; +import { Ux } from '@salesforce/sf-plugins-core'; import chalk from 'chalk'; import { CodeCoverage, @@ -21,6 +21,8 @@ import { TestLevel, Verbosity } from '../utils/types.js'; import { tableHeader, error, success, check } from '../utils/output.js'; import { coverageOutput } from '../utils/coverage.js'; +const ux = new Ux(); + export class TestResultsFormatter { public testLevel: TestLevel | undefined; public verbosity: Verbosity; diff --git a/src/utils/conflicts.ts b/src/utils/conflicts.ts index 2d2e6321..71bebe82 100644 --- a/src/utils/conflicts.ts +++ b/src/utils/conflicts.ts @@ -5,9 +5,11 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { ux } from '@oclif/core'; +import { Ux } from '@salesforce/sf-plugins-core'; import { ConflictResponse } from '@salesforce/source-tracking'; +const ux = new Ux(); + export const writeConflictTable = (conflicts?: ConflictResponse[]): void => { if (!conflicts || conflicts.length === 0) { return; diff --git a/src/utils/previewOutput.ts b/src/utils/previewOutput.ts index 3b4ba526..2d506983 100644 --- a/src/utils/previewOutput.ts +++ b/src/utils/previewOutput.ts @@ -6,7 +6,7 @@ */ import { isAbsolute, relative, resolve } from 'node:path'; -import { ux } from '@oclif/core'; +import { Ux } from '@salesforce/sf-plugins-core'; import { StandardColors } from '@salesforce/sf-plugins-core'; import chalk from 'chalk'; import { Messages } from '@salesforce/core'; @@ -25,6 +25,8 @@ import { filePathsFromMetadataComponent } from '@salesforce/source-deploy-retrie import { SourceTracking } from '@salesforce/source-tracking'; import { isSourceComponentWithXml } from './types.js'; +const ux = new Ux(); + Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-deploy-retrieve', 'previewMessages'); diff --git a/src/utils/progressBar.ts b/src/utils/progressBar.ts index b6fd77c7..b39a732d 100644 --- a/src/utils/progressBar.ts +++ b/src/utils/progressBar.ts @@ -5,11 +5,10 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { envVars as env, EnvironmentVariable, Lifecycle, Messages } from '@salesforce/core'; +import { envVars as env, EnvironmentVariable, Lifecycle, Messages, Logger } from '@salesforce/core'; import { MetadataApiDeploy, MetadataApiDeployStatus } from '@salesforce/source-deploy-retrieve'; import { Progress } from '@salesforce/sf-plugins-core'; import { SourceMemberPollingEvent } from '@salesforce/source-tracking'; -import { ux } from '@oclif/core'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const mdTransferMessages = Messages.loadMessages('@salesforce/plugin-deploy-retrieve', 'metadata.transfer'); @@ -18,6 +17,8 @@ const showBar = Boolean( process.env.TERM !== 'dumb' && process.stdin.isTTY && env.getBoolean(EnvironmentVariable.SF_USE_PROGRESS_BAR, true) ); +const logger = await Logger.child('deploy-progress'); + export class DeployProgress extends Progress { private static OPTIONS = { title: 'Status', @@ -88,7 +89,7 @@ export class DeployProgress extends Progress { try { status = mdTransferMessages.getMessage(data.status); } catch (e) { - ux.debug(`data.status message lookup failed for: ${data.status}`); + logger.debug(`data.status message lookup failed for: ${data.status}`); status = 'Waiting'; } this.update(0, { errorInfo, testInfo, status }); diff --git a/test/commands/convert/source.test.ts b/test/commands/convert/source.test.ts index a09b65ba..2c82b811 100644 --- a/test/commands/convert/source.test.ts +++ b/test/commands/convert/source.test.ts @@ -6,13 +6,14 @@ */ import { join, resolve, sep } from 'node:path'; +import fs from 'node:fs/promises'; +import { Stats } from 'node:fs'; import { ComponentSetBuilder, ComponentSetOptions, MetadataConverter } from '@salesforce/source-deploy-retrieve'; import sinon from 'sinon'; import { expect } from 'chai'; -import { stubMethod } from '@salesforce/ts-sinon'; +import { stubMethod, stubInterface } from '@salesforce/ts-sinon'; import { MockTestOrgData, TestContext } from '@salesforce/core/testSetup'; import { stubSfCommandUx } from '@salesforce/sf-plugins-core'; -import oclifUtils from '@oclif/core/lib/util/fs.js'; import { SfProject } from '@salesforce/core'; import { Source } from '../../../src/commands/project/convert/source.js'; @@ -50,8 +51,13 @@ describe('project convert source', () => { SfProject.instances.clear(); stubSfCommandUx($$.SANDBOX); // the 2 oclif flags should act as if the dir/file is there and ok - $$.SANDBOX.stub(oclifUtils, 'fileExists').callsFake((path: string) => Promise.resolve(path)); - $$.SANDBOX.stub(oclifUtils, 'dirExists').callsFake((path: string) => Promise.resolve(path)); + $$.SANDBOX.stub(fs, 'stat').resolves( + stubInterface($$.SANDBOX, { + isDirectory: () => true, + isFile: () => true, + }) + ); + $$.setConfigStubContents('SfProjectJson', { contents: { packageDirectories: [{ path: defaultDir, default: true }], diff --git a/test/commands/retrieve/start.test.ts b/test/commands/retrieve/start.test.ts index 2573ec26..3d830846 100644 --- a/test/commands/retrieve/start.test.ts +++ b/test/commands/retrieve/start.test.ts @@ -7,6 +7,8 @@ import { resolve } from 'node:path'; +import fs from 'node:fs/promises'; +import { Stats } from 'node:fs'; import sinon from 'sinon'; import { expect } from 'chai'; import { @@ -19,10 +21,9 @@ import { RetrieveOptions, } from '@salesforce/source-deploy-retrieve'; import { Messages, SfProject } from '@salesforce/core'; -import { stubMethod } from '@salesforce/ts-sinon'; +import { stubMethod, stubInterface } from '@salesforce/ts-sinon'; import { stubSfCommandUx, stubSpinner, stubUx } from '@salesforce/sf-plugins-core'; import { MockTestOrgData, TestContext } from '@salesforce/core/testSetup'; -import oclifUtils from '@oclif/core/lib/util/fs.js'; import { RetrieveResultFormatter } from '../../../src/formatters/retrieveResultFormatter.js'; import { getRetrieveResult } from '../../utils/retrieveResponse.js'; import { RetrieveResultJson } from '../../../src/utils/types.js'; @@ -62,8 +63,12 @@ describe('project retrieve start', () => { await $$.stubConfig({ 'target-org': testOrg.username }); // the 2 oclif flags should act as if the dir/file is there and ok - $$.SANDBOX.stub(oclifUtils, 'fileExists').callsFake((p: string) => Promise.resolve(p)); - $$.SANDBOX.stub(oclifUtils, 'dirExists').callsFake((p: string) => Promise.resolve(p)); + $$.SANDBOX.stub(fs, 'stat').resolves( + stubInterface($$.SANDBOX, { + isDirectory: () => true, + isFile: () => true, + }) + ); sfCommandUxStubs = stubSfCommandUx($$.SANDBOX); stubUx($$.SANDBOX); diff --git a/test/utils/output.test.ts b/test/utils/output.test.ts index 05796638..f30cfc8c 100644 --- a/test/utils/output.test.ts +++ b/test/utils/output.test.ts @@ -4,11 +4,11 @@ * 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 */ -import * as path from 'node:path'; +import path from 'node:path'; import { assert, expect, config } from 'chai'; import sinon from 'sinon'; import { DeployMessage, DeployResult, FileResponse } from '@salesforce/source-deploy-retrieve'; -import { ux } from '@oclif/core'; +import { Ux } from '@salesforce/sf-plugins-core'; import { getCoverageFormattersOptions } from '../../src/utils/coverage.js'; import { DeployResultFormatter } from '../../src/formatters/deployResultFormatter.js'; import { getDeployResult } from './deployResponses.js'; @@ -27,7 +27,7 @@ describe('deployResultFormatter', () => { let tableStub: sinon.SinonStub; beforeEach(() => { - tableStub = sandbox.stub(ux, 'table'); + tableStub = sandbox.stub(Ux.prototype, 'table'); }); it('prints file responses, and messages from server', () => { @@ -125,7 +125,7 @@ describe('deployResultFormatter', () => { it('will warn when code coverage warning present from server', () => { const deployResult = getDeployResult('codeCoverageWarning'); const formatter = new DeployResultFormatter(deployResult, {}); - const warnStub = sandbox.stub(ux, 'warn'); + const warnStub = sandbox.stub(Ux.prototype, 'warn'); formatter.display(); expect(warnStub.callCount).to.equal(1); expect(warnStub.firstCall.args[0]).to.equal( diff --git a/yarn.lock b/yarn.lock index 5a758eba..0ffea3ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1099,7 +1099,7 @@ "@inquirer/type" "^1.1.6" chalk "^4.1.2" -"@inquirer/confirm@^3.1.6", "@inquirer/confirm@^3.1.8": +"@inquirer/confirm@^3.1.6", "@inquirer/confirm@^3.1.8", "@inquirer/confirm@^3.1.9": version "3.1.9" resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-3.1.9.tgz#1bc384bc8267827ec75d0684e189692bb4dda38b" integrity sha512-UF09aejxCi4Xqm6N/jJAiFXArXfi9al52AFaSD+2uIHnhZGtd1d6lIGTRMPouVSJxbGEi+HkOWSYaiEY/+szUw== @@ -1169,6 +1169,15 @@ ansi-escapes "^4.3.2" chalk "^4.1.2" +"@inquirer/password@^2.1.9": + version "2.1.9" + resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-2.1.9.tgz#8d464c17cb67beabb309a039229ff1b0a6337294" + integrity sha512-QPtVcT12Fkn0TyuZJelR7QOtc5l1d/6pB5EfkHOivTzC6QTFxRCHl+Gx7Q3E2U/kgJeCCmDov6itDFggk9nkgA== + dependencies: + "@inquirer/core" "^8.2.2" + "@inquirer/type" "^1.3.3" + ansi-escapes "^4.3.2" + "@inquirer/select@^2.3.4": version "2.3.5" resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-2.3.5.tgz#db4ff1ba482ed87f2cdd33e03e64c7b430acdd7d" @@ -1333,6 +1342,29 @@ wordwrap "^1.0.0" wrap-ansi "^7.0.0" +"@oclif/core@^4": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-4.0.0.tgz#c47783c9803cb440e3fd325157437400765eae3f" + integrity sha512-BMWGvJrzn5PnG60gTNFEvaBT0jvGNiJCKN4aJBYP6E7Bq/Y5XPnxPrkj7ZZs/Jsd1oVn6K/JRmF6gWpv72DOew== + dependencies: + ansi-escapes "^4.3.2" + ansis "^3.1.1" + clean-stack "^3.0.1" + cli-spinners "^2.9.2" + cosmiconfig "^9.0.0" + debug "^4.3.5" + ejs "^3.1.10" + get-package-type "^0.1.0" + globby "^11.1.0" + indent-string "^4.0.0" + is-wsl "^2.2.0" + minimatch "^9.0.4" + string-width "^4.2.3" + supports-color "^8" + widest-line "^3.1.0" + wordwrap "^1.0.0" + wrap-ansi "^7.0.0" + "@oclif/core@^4.0.0-beat.13", "@oclif/core@^4.0.0-beta.12", "@oclif/core@^4.0.0-beta.13": version "4.0.0-beta.13" resolved "https://registry.yarnpkg.com/@oclif/core/-/core-4.0.0-beta.13.tgz#0e0a6431cfe612db77073d2f9ef361f14e4090b8" @@ -1545,7 +1577,25 @@ resolved "https://registry.yarnpkg.com/@salesforce/schemas/-/schemas-1.9.0.tgz#ba477a112653a20b4edcf989c61c57bdff9aa3ca" integrity sha512-LiN37zG5ODT6z70sL1fxF7BQwtCX9JOWofSU8iliSNIM+WDEeinnoFtVqPInRSNt8I0RiJxIKCrqstsmQRBNvA== -"@salesforce/sf-plugins-core@^9.0.11", "@salesforce/sf-plugins-core@^9.0.7", "@salesforce/sf-plugins-core@^9.1.0": +"@salesforce/sf-plugins-core@9.1.1-beta.1": + version "9.1.1-beta.1" + resolved "https://registry.yarnpkg.com/@salesforce/sf-plugins-core/-/sf-plugins-core-9.1.1-beta.1.tgz#c28e1420b22766e1b7356f4a5b0689e0870cc35c" + integrity sha512-F91l86LNVSLQCC1ckYdt40+epluVNqSJNHiLVDSBLXr36xOVgjbKheFyGuywgEF50+Ogk9RBiXjNRaR0833nyA== + dependencies: + "@inquirer/confirm" "^3.1.9" + "@inquirer/password" "^2.1.9" + "@oclif/core" "^4" + "@salesforce/core" "^7.3.9" + "@salesforce/kit" "^3.1.2" + "@salesforce/ts-types" "^2.0.9" + ansis "^3.1.1" + cli-progress "^3.12.0" + natural-orderby "^3.0.2" + slice-ansi "^7.1.0" + string-width "^7.1.0" + terminal-link "^3.0.0" + +"@salesforce/sf-plugins-core@^9.0.11", "@salesforce/sf-plugins-core@^9.0.7": version "9.1.0" resolved "https://registry.yarnpkg.com/@salesforce/sf-plugins-core/-/sf-plugins-core-9.1.0.tgz#eb5a3456322cb6232cfb30da30277a92bd666bb9" integrity sha512-tBfbsJ0jUv/UtvbzY8wClNVagBA10mzs61BRI5nMpNlrYppRD3domGIOaOXchldO7XsYkrUnzkJVOuungPgu8A== @@ -2582,6 +2632,13 @@ ansi-escapes@^4.3.1, ansi-escapes@^4.3.2: dependencies: type-fest "^0.21.3" +ansi-escapes@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-5.0.0.tgz#b6a0caf0eef0c41af190e9a749e0c00ec04bb2a6" + integrity sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA== + dependencies: + type-fest "^1.0.2" + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -2611,7 +2668,7 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.3.0: dependencies: color-convert "^2.0.1" -ansi-styles@^6.1.0: +ansi-styles@^6.1.0, ansi-styles@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== @@ -2621,7 +2678,7 @@ ansicolors@~0.3.2: resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== -ansis@^3.0.1, ansis@^3.2.0: +ansis@^3.0.1, ansis@^3.1.1, ansis@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansis/-/ansis-3.2.0.tgz#0e050c5be94784f32ffdac4b84fccba064aeae4b" integrity sha512-Yk3BkHH9U7oPyCN3gL5Tc7CpahG/+UFv/6UG03C311Vy9lzRmA5uoxDTpU9CO3rGHL6KzJz/pdDeXZCZ5Mu/Sg== @@ -3461,6 +3518,13 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +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" + decamelize-keys@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" @@ -3685,6 +3749,11 @@ electron-to-chromium@^1.4.668: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.757.tgz#45f7c9341b538f8c4b9ca8af9692e0ed1a776a44" integrity sha512-jftDaCknYSSt/+KKeXzH3LX5E2CvRLm75P3Hj+J/dv3CL0qUYcOt13d5FN1NiL5IJbbhzHrb3BomeG2tkSlZmw== +emoji-regex@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" + integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -4394,6 +4463,11 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-east-asian-width@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e" + integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== + get-func-name@^2.0.1, get-func-name@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" @@ -5004,6 +5078,13 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-fullwidth-code-point@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz#9609efced7c2f97da7b60145ef481c787c7ba704" + integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA== + dependencies: + get-east-asian-width "^1.0.0" + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -5951,6 +6032,11 @@ natural-orderby@^2.0.3: resolved "https://registry.yarnpkg.com/natural-orderby/-/natural-orderby-2.0.3.tgz#8623bc518ba162f8ff1cdb8941d74deb0fdcc016" integrity sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q== +natural-orderby@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/natural-orderby/-/natural-orderby-3.0.2.tgz#1b874d685fbd68beab2c6e7d14f298e03d631ec3" + integrity sha512-x7ZdOwBxZCEm9MM7+eQCjkrNLrW3rkBKNHVr78zbtqnMGVNlnDi6C/eUEYgxHNrcbu0ymvjzcwIL/6H1iHri9g== + neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -7147,6 +7233,14 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +slice-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-7.1.0.tgz#cd6b4655e298a8d1bdeb04250a433094b347b9a9" + integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg== + dependencies: + ansi-styles "^6.2.1" + is-fullwidth-code-point "^5.0.0" + smart-buffer@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" @@ -7289,16 +7383,7 @@ srcset@^5.0.0: resolved "https://registry.yarnpkg.com/srcset/-/srcset-5.0.1.tgz#e660a728f195419e4afa95121099bc9efb7a1e36" integrity sha512-/P1UYbGfJVlxZag7aABNRrulEXAwCSDo7fklafOQrantuPTDmYgijJMks2zusPCVzgW9+4P69mq7w6pYuZpgxw== -"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.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -7316,6 +7401,15 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" +string-width@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.1.0.tgz#d994252935224729ea3719c49f7206dc9c46550a" + integrity sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw== + dependencies: + emoji-regex "^10.3.0" + get-east-asian-width "^1.0.0" + strip-ansi "^7.1.0" + string.prototype.trim@^1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" @@ -7358,21 +7452,14 @@ 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.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.1: +strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== @@ -7411,7 +7498,7 @@ strnum@^1.0.5: resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== -supports-color@8.1.1, supports-color@^8.1.1: +supports-color@8.1.1, supports-color@^8, 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== @@ -7450,6 +7537,14 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +terminal-link@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-3.0.0.tgz#91c82a66b52fc1684123297ce384429faf72ac5c" + integrity sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg== + dependencies: + ansi-escapes "^5.0.0" + supports-hyperlinks "^2.2.0" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -7636,6 +7731,11 @@ type-fest@^0.8.0, type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^1.0.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + typed-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" @@ -7921,7 +8021,7 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -7939,15 +8039,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.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"