From f67e5fa28a277577c776783bf0db78f635847ced Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Wed, 30 Oct 2024 15:54:25 -0600 Subject: [PATCH] feat: new tables (#823) * fix: update tables, in progress * docs: fix missing template string * chore: fix column types * docs: update per Juliet * chore: add overflow:wrap * test: remove creating new sandboxes in UTs * test: change regex to match new table * test: change regex to match new table rd II * chore: bump sf-plugins-core * chore: move styled headers into table title * test: update NUT assertions without styled headers * chore: bump sf-plugins-core --------- Co-authored-by: Mike Donnalley --- messages/package_version_delete.md | 2 +- package.json | 6 +- src/commands/package/create.ts | 3 +- src/commands/package/installed/list.ts | 29 +- src/commands/package/list.ts | 36 +- src/commands/package/version/create/list.ts | 68 +-- src/commands/package/version/create/report.ts | 28 +- src/commands/package/version/list.ts | 112 +++-- src/commands/package/version/report.ts | 5 +- src/commands/package/version/retrieve.ts | 18 +- src/commands/package1/version/display.ts | 15 +- src/commands/package1/version/list.ts | 15 +- test/commands/package/installReport.test.ts | 5 +- .../package/packageCreateAndDelete.nut.ts | 4 +- .../package/packageInstalledList.nut.ts | 2 +- test/commands/package/packageList.nut.ts | 10 +- .../commands/package/packageUninstall.test.ts | 8 +- test/commands/package/packageVersion.nut.ts | 38 +- .../packageVersionCreateReport.test.ts | 11 +- test/commands/package/version.delete.test.ts | 8 +- test/commands/package/versionReport.test.ts | 12 +- test/commands/package1/versionCreate.test.ts | 8 +- .../package1/versionCreateGet.test.ts | 8 +- test/commands/package1/versionDisplay.nut.ts | 2 +- test/commands/package1/versionList.nut.ts | 4 +- yarn.lock | 398 +++++++++++++----- 26 files changed, 472 insertions(+), 383 deletions(-) diff --git a/messages/package_version_delete.md b/messages/package_version_delete.md index 43e1688f..03af6d62 100644 --- a/messages/package_version_delete.md +++ b/messages/package_version_delete.md @@ -50,4 +50,4 @@ Successfully deleted the package version with ID: %s # humanSuccessUndelete -Successfully undeleted the package version. +Successfully undeleted package version %s. diff --git a/package.json b/package.json index c94edf43..9f57d552 100644 --- a/package.json +++ b/package.json @@ -6,10 +6,10 @@ "bugs": "https://github.com/forcedotcom/cli/issues", "dependencies": { "@oclif/core": "^4", - "@salesforce/core": "^8.6.1", + "@salesforce/core": "^8.6.2", "@salesforce/kit": "^3.2.3", - "@salesforce/packaging": "^4.2.9", - "@salesforce/sf-plugins-core": "^11.3.12", + "@salesforce/packaging": "^4.2.15", + "@salesforce/sf-plugins-core": "^12.0.11", "chalk": "^5.3.0" }, "devDependencies": { diff --git a/src/commands/package/create.ts b/src/commands/package/create.ts index 5fdfc1c3..2b76cb8a 100644 --- a/src/commands/package/create.ts +++ b/src/commands/package/create.ts @@ -93,7 +93,6 @@ export class PackageCreateCommand extends SfCommand { } private display(result: PackageCreate): void { - this.styledHeader('Ids'); - this.table([{ name: 'Package Id', value: result.Id }], { name: { header: 'NAME' }, value: { header: 'VALUE' } }); + this.table({ data: [{ name: 'Package Id', value: result.Id }], title: 'Ids' }); } } diff --git a/src/commands/package/installed/list.ts b/src/commands/package/installed/list.ts index 480d04c3..b3d00c8f 100644 --- a/src/commands/package/installed/list.ts +++ b/src/commands/package/installed/list.ts @@ -47,12 +47,19 @@ export class PackageInstalledListCommand extends SfCommand ({ } : {}), }); - -const columns = { - Id: { header: 'ID' }, - SubscriberPackageId: { header: 'Package ID' }, - SubscriberPackageName: { header: 'Package Name' }, - SubscriberPackageNamespace: { header: 'Namespace' }, - SubscriberPackageVersionId: { header: 'Package Version ID' }, - SubscriberPackageVersionName: { header: 'Version Name' }, - SubscriberPackageVersionNumber: { header: 'Version' }, -}; diff --git a/src/commands/package/list.ts b/src/commands/package/list.ts index 66675673..29e25ae3 100644 --- a/src/commands/package/list.ts +++ b/src/commands/package/list.ts @@ -60,31 +60,25 @@ export class PackageListCommand extends SfCommand { } private displayResults(results: Package2Result[], verbose = false, apiVersion: string): void { - this.styledHeader(chalk.blue(`Packages [${results.length}]`)); - const columns = { - NamespacePrefix: { header: messages.getMessage('namespace') }, - Name: { header: messages.getMessage('name') }, - Id: { header: messages.getMessage('id') }, - Alias: { header: messages.getMessage('alias') }, - Description: { header: messages.getMessage('description') }, - ContainerOptions: { - header: messages.getMessage('package-type'), - }, + const data = results.map((r) => ({ + 'Namespace Prefix': r.NamespacePrefix, + Name: r.Name, + Id: r.Id, + Alias: r.Alias, + Description: r.Description, + ContainerOptions: r.ContainerOptions, ...(verbose ? { - SubscriberPackageId: { header: messages.getMessage('package-id') }, - ConvertedFromPackageId: { header: messages.getMessage('convertedFromPackageId') }, - IsOrgDependent: { header: messages.getMessage('isOrgDependent') }, - PackageErrorUsername: { header: messages.getMessage('error-notification-username') }, - CreatedBy: { header: messages.getMessage('createdBy') }, + 'Package Id': r.SubscriberPackageId, + 'Converted From Package Id': r.ConvertedFromPackageId, + 'Org-Dependent Unlocked Package': r.IsOrgDependent, + 'Error Notification Username': r.PackageErrorUsername, + 'Created By': r.CreatedBy, + ...(parseInt(apiVersion, 10) >= 59 ? { 'App Analytics Enabled': r.AppAnalyticsEnabled } : {}), } : {}), - ...(verbose && parseInt(apiVersion, 10) >= 59 - ? { AppAnalyticsEnabled: { header: messages.getMessage('app-analytics-enabled') } } - : {}), - }; - - this.table(results, columns); + })); + this.table({ data, title: chalk.blue(`Packages [${results.length}]`) }); } } diff --git a/src/commands/package/version/create/list.ts b/src/commands/package/version/create/list.ts index 730acae0..8f5ba4d7 100644 --- a/src/commands/package/version/create/list.ts +++ b/src/commands/package/version/create/list.ts @@ -22,24 +22,6 @@ export type CreateListCommandResult = Array< } >; -type ColumnDataHeader = { - header?: string; -}; -type ColumnData = { - Id: ColumnDataHeader; - Status: ColumnDataHeader; - Package2Id: ColumnDataHeader; - Package2VersionId: ColumnDataHeader; - SubscriberPackageVersionId: ColumnDataHeader; - Tag: ColumnDataHeader; - Branch: ColumnDataHeader; - CreatedDate: ColumnDataHeader; - CreatedBy: ColumnDataHeader; - VersionName?: ColumnDataHeader; - VersionNumber?: ColumnDataHeader; - ConvertedFromVersionId?: ColumnDataHeader; -}; - type Status = 'Queued' | 'InProgress' | 'Success' | 'Error'; export class PackageVersionCreateListCommand extends SfCommand { @@ -86,48 +68,30 @@ export class PackageVersionCreateListCommand extends SfCommand ({ + Id: r.Id, + Status: r.Status, + 'Package Id': r.Package2Id, + 'Package Version Id': r.Package2VersionId, + 'Subscriber Package Version Id': r.SubscriberPackageVersionId, + Tag: r.Tag, + Branch: r.Branch, + 'Created Date': r.CreatedDate, + 'Created By': r.CreatedBy, + ...(flags['show-conversions-only'] ? { 'Converted From Version Id': r.ConvertedFromVersionId } : {}), + ...(flags.verbose ? { 'Version Name': r.VersionName, 'Version Number': r.VersionNumber } : {}), + })); + + this.table({ data, overflow: 'wrap', title: chalk.blue(`Package Version Create Requests [${results.length}]`) }); } return results; diff --git a/src/commands/package/version/create/report.ts b/src/commands/package/version/create/report.ts index c0e0dbe1..cd116614 100644 --- a/src/commands/package/version/create/report.ts +++ b/src/commands/package/version/create/report.ts @@ -61,56 +61,52 @@ export class PackageVersionCreateReportCommand extends SfCommand 0) { this.log(''); diff --git a/src/commands/package/version/list.ts b/src/commands/package/version/list.ts index 90209e41..cca99d3d 100644 --- a/src/commands/package/version/list.ts +++ b/src/commands/package/version/list.ts @@ -5,8 +5,9 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { Flags, loglevel, orgApiVersionFlagWithDeprecations, SfCommand, Ux } from '@salesforce/sf-plugins-core'; +import { Flags, loglevel, orgApiVersionFlagWithDeprecations, SfCommand } from '@salesforce/sf-plugins-core'; import { Messages } from '@salesforce/core'; +import type { TableOptions } from '@oclif/table'; import { getContainerOptions, getPackageVersionStrings, @@ -213,9 +214,11 @@ export class PackageVersionListCommand extends SfCommand> => { +): TableOptions['columns'] => { if (concise) { - return { - Package2Id: { header: messages.getMessage('package-id') }, - Version: { header: messages.getMessage('version') }, - SubscriberPackageVersionId: { - header: messages.getMessage('subscriberPackageVersionId'), - }, - IsReleased: { header: 'Released' }, - }; + return [ + { key: 'Package2Id', name: messages.getMessage('package-id') }, + { key: 'Version', name: messages.getMessage('version') }, + { key: 'SubscriberPackageVersionId', name: messages.getMessage('subscriberPackageVersionId') }, + { key: 'IsReleased', name: 'Released' }, + ]; } - let defaultCols = { - Package2Name: { header: 'Package Name' }, - NamespacePrefix: { header: 'Namespace' }, - Name: { header: 'Version Name' }, - Version: { header: messages.getMessage('version') }, - SubscriberPackageVersionId: { - header: messages.getMessage('subscriberPackageVersionId'), - }, - Alias: { header: messages.getMessage('alias') }, - IsPasswordProtected: { header: messages.getMessage('installKey') }, - IsReleased: { header: 'Released' }, - ValidationSkipped: { header: messages.getMessage('validationSkipped') }, - ValidatedAsync: { header: messages.getMessage('validatedAsync') }, - AncestorId: { header: 'Ancestor' }, - AncestorVersion: { header: 'Ancestor Version' }, - Branch: { header: messages.getMessage('packageBranch') }, - }; + const defaultCols = [ + { key: 'Package2Name', name: 'Package Name' }, + { key: 'NamespacePrefix', name: 'Namespace' }, + { key: 'Name', name: 'Version Name' }, + { key: 'Version', name: messages.getMessage('version') }, + { key: 'SubscriberPackageVersionId', name: messages.getMessage('subscriberPackageVersionId') }, + { key: 'Alias', name: messages.getMessage('alias') }, + { key: 'IsPasswordProtected', name: messages.getMessage('installKey') }, + { key: 'IsReleased', name: 'Released' }, + { key: 'ValidationSkipped', name: messages.getMessage('validationSkipped') }, + { key: 'ValidatedAsync', name: messages.getMessage('validatedAsync') }, + { key: 'AncestorId', name: 'Ancestor' }, + { key: 'AncestorVersion', name: 'Ancestor Version' }, + { key: 'Branch', name: messages.getMessage('packageBranch') }, + ]; if (conversions && !verbose) { - defaultCols = Object.assign(defaultCols, { - ConvertedFromVersionId: { - header: messages.getMessage('convertedFromVersionId'), - }, - }); + defaultCols.push({ key: 'ConvertedFromVersionId', name: messages.getMessage('convertedFromVersionId') }); } if (!verbose) { + // @ts-expect-error the default cols don't match 1:1 to the data in the table, but that's on purpose return defaultCols; } else { // add additional columns for verbose output - return { - ...defaultCols, - Package2Id: { header: messages.getMessage('package-id') }, - InstallUrl: { header: messages.getMessage('installUrl') }, - Id: { header: messages.getMessage('id') }, - CreatedDate: { header: 'Created Date' }, - LastModifiedDate: { header: 'Last Modified Date' }, - Tag: { header: messages.getMessage('packageTag') }, - Description: { header: messages.getMessage('description') }, - CodeCoverage: { header: messages.getMessage('codeCoverage') }, - HasPassedCodeCoverageCheck: { - header: messages.getMessage('hasPassedCodeCoverageCheck'), - }, - ConvertedFromVersionId: { - header: messages.getMessage('convertedFromVersionId'), - }, - IsOrgDependent: { header: messages.getMessage('isOrgDependent') }, - ReleaseVersion: { header: messages.getMessage('releaseVersion') }, - BuildDurationInSeconds: { - header: messages.getMessage('buildDurationInSeconds'), - }, - HasMetadataRemoved: { - header: messages.getMessage('hasMetadataRemoved'), - }, - CreatedBy: { header: messages.getMessage('createdBy') }, - Language: { header: messages.getMessage('language') }, - }; + // @ts-expect-error the verbose match 1:1 to the data in the table, but that's on purpose, but the OCLIF types can't determine tha + return defaultCols.concat([ + { key: 'Package2Id', name: messages.getMessage('package-id') }, + { key: 'InstallUrl', name: messages.getMessage('installUrl') }, + { key: 'Id', name: messages.getMessage('id') }, + { key: 'CreatedDate', name: 'Created Date' }, + { key: 'LastModifiedDate', name: 'Last Modified Date' }, + { key: 'Tag', name: messages.getMessage('packageTag') }, + { key: 'Description', name: messages.getMessage('description') }, + { key: 'CodeCoverage', name: messages.getMessage('codeCoverage') }, + { key: 'HasPassedCodeCoverageCheck', name: messages.getMessage('hasPassedCodeCoverageCheck') }, + { key: 'ConvertedFromVersionId', name: messages.getMessage('convertedFromVersionId') }, + { key: 'IsOrgDependent', name: messages.getMessage('isOrgDependent') }, + { key: 'ReleaseVersion', name: messages.getMessage('releaseVersion') }, + { key: 'BuildDurationInSeconds', name: messages.getMessage('buildDurationInSeconds') }, + { key: 'HasMetadataRemoved', name: messages.getMessage('hasMetadataRemoved') }, + { key: 'CreatedBy', name: messages.getMessage('createdBy') }, + { key: 'Language', name: messages.getMessage('language') }, + ]); } }; diff --git a/src/commands/package/version/report.ts b/src/commands/package/version/report.ts index d607d264..18377b27 100644 --- a/src/commands/package/version/report.ts +++ b/src/commands/package/version/report.ts @@ -212,10 +212,9 @@ export class PackageVersionReportCommand extends SfCommand 0) { - this.table(displayCoverageRecords, { key: { header: 'Class Name' }, value: { header: 'Code Coverage' } }); + this.table({ data: displayCoverageRecords }); } } diff --git a/src/commands/package/version/retrieve.ts b/src/commands/package/version/retrieve.ts index d01e0721..38f13c33 100644 --- a/src/commands/package/version/retrieve.ts +++ b/src/commands/package/version/retrieve.ts @@ -81,15 +81,15 @@ export class PackageVersionRetrieveCommand extends SfCommand ({ + const data = (await pv1.getPackageVersion()).map((result) => ({ MetadataPackageVersionId: result.Id, MetadataPackageId: result.MetadataPackageId, Name: result.Name, @@ -55,19 +55,12 @@ export class Package1VersionDisplayCommand extends SfCommand { const { flags } = await this.parse(Package1VersionListCommand); - const result = ( + const data = ( await Package1Version.list(flags['target-org'].getConnection(flags['api-version']), flags['package-id'] as string) ).map((record) => ({ MetadataPackageVersionId: record.Id, @@ -51,18 +51,11 @@ export class Package1VersionListCommand extends SfCommand { const testOrg = new MockTestOrgData(); const config = new Config({ root: import.meta.url }); - const sandbox = sinon.createSandbox(); - // stubs let uxLogStub: sinon.SinonStub; let getInstallRequestStub: sinon.SinonStub; @@ -56,12 +54,11 @@ describe('package:install:report', () => { }); beforeEach(async () => { - uxLogStub = sandbox.stub(SfCommand.prototype, 'log'); + uxLogStub = $$.SANDBOX.stub(SfCommand.prototype, 'log'); }); afterEach(() => { $$.restore(); - sandbox.restore(); }); it('should error without required --request-id param', async () => { diff --git a/test/commands/package/packageCreateAndDelete.nut.ts b/test/commands/package/packageCreateAndDelete.nut.ts index 6ff7e66e..6243a6f8 100644 --- a/test/commands/package/packageCreateAndDelete.nut.ts +++ b/test/commands/package/packageCreateAndDelete.nut.ts @@ -33,8 +33,8 @@ describe('package create/update/delete', () => { it('should create a package - human readable results', () => { const command = `package:create -n ${pkgName} -v ${session.hubOrg.username} -t Unlocked -r ./force-app`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; - expect(output).to.contain('=== Ids'); - expect(output).to.match(/Package Id\s+?0Ho/); + expect(output).to.contain('Ids'); + expect(output).to.match(/Package Id\s+?|0Ho/); }); it('should update a package - human readable results', () => { const command = `package:update --package ${pkgName} --description "My new description" -v ${session.hubOrg.username}`; diff --git a/test/commands/package/packageInstalledList.nut.ts b/test/commands/package/packageInstalledList.nut.ts index 6bb18243..f6cab208 100644 --- a/test/commands/package/packageInstalledList.nut.ts +++ b/test/commands/package/packageInstalledList.nut.ts @@ -26,7 +26,7 @@ describe('package:installed:list', () => { const command = `package:installed:list -o ${session.hubOrg.username}`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; expect(output).to.match( - /ID\s+?Package ID\s+?Package Name\s+?Namespace\s+?Package Version ID\s+?Version Name\s+?Version/ + /ID\s+?|Package ID\s+?|Package Name\s+?|Namespace\s+?|Package Version ID\s+?|Version Name\s+?|Version/ ); }); diff --git a/test/commands/package/packageList.nut.ts b/test/commands/package/packageList.nut.ts index 68235ebb..68c6b19b 100644 --- a/test/commands/package/packageList.nut.ts +++ b/test/commands/package/packageList.nut.ts @@ -58,17 +58,17 @@ describe('package list', () => { it('should list packages in dev hub - human readable results', () => { const command = `package:list -v ${session.hubOrg.username}`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; - expect(output).to.contain('=== Packages'); - expect(output).to.match(/Namespace Prefix\s+?Name\s+?Id\s+?Alias\s+?Description\s+?Type/); + expect(output).to.contain('Packages'); + expect(output).to.match(/Namespace Prefix\s+?|Name\s+?|Id\s+?|Alias\s+?|Description\s+?|Type/); }); it('should list packages in dev hub - verbose human readable results', () => { const command = `package:list -v ${session.hubOrg.username} --verbose`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; - expect(output).to.contain('=== Packages'); + expect(output).to.contain('Packages'); let headerExpression = - 'Namespace Prefix\\s+?Name\\s+?Id\\s+?Alias\\s+?Description\\s+?Type\\s+?Subscriber Package Id\\s+?Converted From Package Id\\s+?Org-Dependent Unlocked Package\\s+?Error Notification Username\\s+?Created By\\s+?App Analytics Enabled'; + 'Namespace Prefix\\s+?|Name\\s+?|Id\\s+?|Alias\\s+?|Description\\s+?|Type\\s+?|Subscriber Package Id\\s+?|Converted From Package Id\\s+?|Org-Dependent Unlocked Package\\s+?|Error Notification Username\\s+?|Created By\\s+?|App Analytics Enabled'; if (apiVersion < 59.0) { - headerExpression = headerExpression.replace('App Analytics Enabled\\s+?', ''); + headerExpression = headerExpression.replace('App Analytics Enabled\\s+?|', ''); } expect(output).to.match(new RegExp(headerExpression)); }); diff --git a/test/commands/package/packageUninstall.test.ts b/test/commands/package/packageUninstall.test.ts index d8d092dd..b62ace6a 100644 --- a/test/commands/package/packageUninstall.test.ts +++ b/test/commands/package/packageUninstall.test.ts @@ -18,8 +18,6 @@ describe('package:uninstall', () => { const testOrg = new MockTestOrgData(); const config = new Config({ root: import.meta.url }); - const sandbox = sinon.createSandbox(); - // stubs let logStub: sinon.SinonStub; @@ -29,16 +27,16 @@ describe('package:uninstall', () => { }); beforeEach(async () => { - logStub = sandbox.stub(SfCommand.prototype, 'log'); + logStub = $$.SANDBOX.stub(SfCommand.prototype, 'log'); }); afterEach(() => { $$.restore(); - sandbox.restore(); + $$.SANDBOX.restore(); }); const libraryStubResult = (status: 'Error' | 'InProgress' | 'Queued' | 'Success'): void => { - sandbox.stub(SubscriberPackageVersion.prototype, 'uninstall').resolves({ + $$.SANDBOX.stub(SubscriberPackageVersion.prototype, 'uninstall').resolves({ Id: '06y23000000002MXXX', IsDeleted: true, CreatedDate: 123, diff --git a/test/commands/package/packageVersion.nut.ts b/test/commands/package/packageVersion.nut.ts index d4667874..2f81b1ab 100644 --- a/test/commands/package/packageVersion.nut.ts +++ b/test/commands/package/packageVersion.nut.ts @@ -178,7 +178,7 @@ describe('package:version:*', () => { ensureExitCode: 0, } ).shellOutput.stdout; - expect(resultHuman).to.include('=== Package Version Create Request'); + expect(resultHuman).to.include('Package Version Create Request'); expect(resultHuman).to.include('Name'); expect(resultHuman).to.include('Value'); expect(resultHuman).to.include('ID'); @@ -195,9 +195,9 @@ describe('package:version:*', () => { it('should list the package versions created (human)', async () => { const command = `package:version:create:list -v ${session.hubOrg.username}`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; - expect(output).to.contain('=== Package Version Create Requests ['); + expect(output).to.contain('Package Version Create Requests ['); expect(output).to.match( - / Id\s+Status\s+Package Id\s+Package Version Id\s+Subscriber Package Version Id\s+Tag\s+Branch\s+Created Date\s+Created By\s+/ + / Id\s+?|Status\s+?|Package Id\s+?|Package Version Id\s+?|Subscriber Package Version Id\s+?|Tag\s+?|Branch\s+?|Created Date\s+?|Created By\s+?|/ ); }); @@ -240,9 +240,9 @@ describe('package:version:*', () => { it('should list the package versions created as part of package conversion from 1GP --show-conversions-only flag (human)', async () => { const command = `package:version:create:list -v ${session.hubOrg.username} --show-conversions-only`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; - expect(output).to.contain('=== Package Version Create Requests ['); + expect(output).to.contain('Package Version Create Requests ['); expect(output).to.match( - / Id\s+Status\s+Package Id\s+Package Version Id\s+Subscriber Package Version Id\s+Tag\s+Branch\s+Created Date\s+Created By\s+Converted From Version Id\s+/ + / Id\s+?|Status\s+?|Package Id\s+?|Package Version Id\s+?|Subscriber Package Version Id\s+?|Tag\s+?|Branch\s+?|Created Date\s+?|Created By\s+?|Converted From Version Id\s+?|/ ); }); it('should list the package versions created --verbose (json)', async () => { @@ -260,50 +260,50 @@ describe('package:version:*', () => { it('should list package versions in dev hub - human readable results', () => { const command = `package:version:list -v ${session.hubOrg.username}`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; - expect(output).to.contain('=== Package Versions ['); + expect(output).to.contain('Package Versions ['); expect(output).to.match( - /Package Name\s+Namespace\s+Version Name\s+Version\s+Subscriber Package Version Id\sAlias\s+Installation Key\s+Released\s+Validation Skipped\s+Validated Async\s+Ancestor\s+Ancestor Version\s+Branch/ + /Package Name\s+?|Namespace\s+?|Version Name\s+?|Version\s+?|Subscriber Package Version Id\sAlias\s+?|Installation Key\s+?|Released\s+?|Validation Skipped\s+?|Validated Async\s+?|Ancestor\s+?|Ancestor Version\s+?|Branch/ ); }); it('should list package versions in dev hub - concise output', () => { const command = `package:version:list -v ${session.hubOrg.username} --concise`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; - expect(output).to.contain('=== Package Versions ['); - expect(output).to.match(/Package Id\s+Version\s+Subscriber Package Version Id\s+Released/); + expect(output).to.contain('Package Versions ['); + expect(output).to.match(/Package Id\s+?|Version\s+?|Subscriber Package Version Id\s+?|Released/); }); it('should list package versions modified in the last 5 days', () => { const command = `package:version:list -v ${session.hubOrg.username} --modified-last-days 5`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; - expect(output).to.contain('=== Package Versions ['); + expect(output).to.contain('Package Versions ['); expect(output).to.match( - /Package Name\s+Namespace\s+Version Name\s+Version\s+Subscriber Package Version Id\sAlias\s+Installation Key\s+Released\s+Validation Skipped\s+Validated Async\s+Ancestor\s+Ancestor Version\s+Branch/ + /Package Name\s+?|Namespace\s+?|Version Name\s+?|Version\s+?|Subscriber Package Version Id\sAlias\s+?|Installation Key\s+?|Released\s+?|Validation Skipped\s+?|Validated Async\s+?|Ancestor\s+?|Ancestor Version\s+?|Branch/ ); }); it('should list package versions created in the last 5 days', () => { const command = `package:version:list -v ${session.hubOrg.username} --createdlastdays 5`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; - expect(output).to.contain('=== Package Versions ['); + expect(output).to.contain('Package Versions ['); expect(output).to.match( - /Package Name\s+Namespace\s+Version Name\s+Version\s+Subscriber Package Version Id\sAlias\s+Installation Key\s+Released\s+Validation Skipped\s+Validated Async\s+Ancestor\s+Ancestor Version\s+Branch/ + /Package Name\s+?|Namespace\s+?|Version Name\s+?|Version\s+?|Subscriber Package Version Id\sAlias\s+?|Installation Key\s+?|Released\s+?|Validation Skipped\s+?|Validated Async\s+?|Ancestor\s+?|Ancestor Version\s+?|Branch/ ); }); it('should list installed packages in dev hub - verbose human readable results', () => { const command = `package:version:list -v ${session.hubOrg.username} --verbose`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; - expect(output).to.contain('=== Package Versions ['); + expect(output).to.contain('Package Versions ['); expect(output).to.match( - /Package Name\s+Namespace\s+Version Name\s+Version\s+Subscriber Package Version Id\sAlias\s+Installation Key\s+Released\s+Validation Skipped\s+Validated Async\s+Ancestor\s+Ancestor Version\s+Branch\s+Package Id\s+Installation URL\s+Package Version Id\s+Created Date\s+Last Modified Date\s+Tag\s+Description\s+Code Coverage\s+Code Coverage Met\s+Converted From Version Id\s+Org-Dependent\s+Unlocked Package\s+Release\s+Version\s+Build Duration in Seconds\s+Managed Metadata Removed\s+Created By/ + /Package Name\s+?|Namespace\s+?|Version Name\s+?|Version\s+?|Subscriber Package Version Id\sAlias\s+?|Installation Key\s+?|Released\s+?|Validation Skipped\s+?|Validated Async\s+?|Ancestor\s+?|Ancestor Version\s+?|Branch\s+?|Package Id\s+?|Installation URL\s+?|Package Version Id\s+?|Created Date\s+?|Last Modified Date\s+?|Tag\s+?|Description\s+?|Code Coverage\s+?|Code Coverage Met\s+?|Converted From Version Id\s+?|Org-Dependent\s+?|Unlocked Package\s+?|Release\s+?|Version\s+?|Build Duration in Seconds\s+?|Managed Metadata Removed\s+?|Created By/ ); }); it("should list installed packages in dev hub - verbose human readable results only on the 'testing' branch", () => { const command = `package:version:list -v ${session.hubOrg.username} --verbose --branch testing`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; - expect(output).to.contain('=== Package Versions ['); + expect(output).to.contain('Package Versions ['); expect(output).to.match( - /Package Name\s+Namespace\s+Version Name\s+Version\s+Subscriber Package Version Id\sAlias\s+Installation Key\s+Released\s+Validation Skipped\s+Validated Async\s+Ancestor\s+Ancestor Version\s+Branch\s+Package Id\s+Installation URL\s+Package Version Id\s+Created Date\s+Last Modified Date\s+Tag\s+Description\s+Code Coverage\s+Code Coverage Met\s+Converted From Version Id\s+Org-Dependent\s+Unlocked Package\s+Release\s+Version\s+Build Duration in Seconds\s+Managed Metadata Removed\s+Created By/ + /Package Name\s+?|Namespace\s+?|Version Name\s+?|Version\s+?|Subscriber Package Version Id\sAlias\s+?|Installation Key\s+?|Released\s+?|Validation Skipped\s+?|Validated Async\s+?|Ancestor\s+?|Ancestor Version\s+?|Branch\s+?|Package Id\s+?|Installation URL\s+?|Package Version Id\s+?|Created Date\s+?|Last Modified Date\s+?|Tag\s+?|Description\s+?|Code Coverage\s+?|Code Coverage Met\s+?|Converted From Version Id\s+?|Org-Dependent\s+?|Unlocked Package\s+?|Release\s+?|Version\s+?|Build Duration in Seconds\s+?|Managed Metadata Removed\s+?|Created By/ ); expect(output).to.include('testing'); }); @@ -399,9 +399,9 @@ describe('package:version:*', () => { it.skip('should list package versions in dev hub created as part of package conversion from 1GP --show-conversions-only flag (human)', () => { const command = `package:version:list -v ${session.hubOrg.username} --show-conversions-only`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; - expect(output).to.contain('=== Package Versions ['); + expect(output).to.contain('Package Versions ['); expect(output).to.match( - /Package Name\s+Namespace\s+Version Name\s+Version\s+Subscriber Package Version Id\sAlias\s+Installation Key\s+Released\s+Validation Skipped\s+Validated Async\s+Ancestor\s+Ancestor Version\s+Branch\s+Converted From Version Id/ + /Package Name\s+?|Namespace\s+?|Version Name\s+?|Version\s+?|Subscriber Package Version Id\sAlias\s+?|Installation Key\s+?|Released\s+?|Validation Skipped\s+?|Validated Async\s+?|Ancestor\s+?|Ancestor Version\s+?|Branch\s+?|Converted From Version Id/ ); }); }); diff --git a/test/commands/package/packageVersionCreateReport.test.ts b/test/commands/package/packageVersionCreateReport.test.ts index 368e9c03..329f2942 100644 --- a/test/commands/package/packageVersionCreateReport.test.ts +++ b/test/commands/package/packageVersionCreateReport.test.ts @@ -85,15 +85,12 @@ describe('package:version:create:report - tests', () => { const testOrg = new MockTestOrgData(); let createStatusStub = $$.SANDBOX.stub(PackageVersion, 'getCreateStatus'); let tableStub: sinon.SinonStub; - let styledHeaderStub: sinon.SinonStub; let warnStub: sinon.SinonStub; const config = new Config({ root: import.meta.url }); - const sandbox = sinon.createSandbox(); beforeEach(async () => { - warnStub = sandbox.stub(SfCommand.prototype, 'warn'); - styledHeaderStub = sandbox.stub(SfCommand.prototype, 'styledHeader'); - tableStub = sandbox.stub(SfCommand.prototype, 'table'); + warnStub = $$.SANDBOX.stub(SfCommand.prototype, 'warn'); + tableStub = $$.SANDBOX.stub(SfCommand.prototype, 'table'); }); before(async () => { @@ -103,7 +100,7 @@ describe('package:version:create:report - tests', () => { afterEach(() => { $$.restore(); - sandbox.restore(); + $$.SANDBOX.restore(); }); describe('package:version:create:report', () => { @@ -130,7 +127,6 @@ describe('package:version:create:report - tests', () => { }, ]); expect(tableStub.callCount).to.equal(1); - expect(styledHeaderStub.callCount).to.equal(1); }); it('should report on a new package version with async validation', async () => { @@ -158,7 +154,6 @@ describe('package:version:create:report - tests', () => { }, ]); expect(tableStub.callCount).to.equal(1); - expect(styledHeaderStub.callCount).to.equal(1); }); it('should report multiple errors', async () => { diff --git a/test/commands/package/version.delete.test.ts b/test/commands/package/version.delete.test.ts index 6e469c07..04877b11 100644 --- a/test/commands/package/version.delete.test.ts +++ b/test/commands/package/version.delete.test.ts @@ -18,8 +18,6 @@ describe('package:version:delete', () => { const testOrg = new MockTestOrgData(); const config = new Config({ root: import.meta.url }); - const sandbox = sinon.createSandbox(); - // stubs let uxSuccessStub: sinon.SinonStub; let uxConfirmStub: sinon.SinonStub; @@ -29,7 +27,7 @@ describe('package:version:delete', () => { let undeleteStub: sinon.SinonStub; beforeEach(async () => { - uxSuccessStub = sandbox.stub(SfCommand.prototype, 'logSuccess'); + uxSuccessStub = $$.SANDBOX.stub(SfCommand.prototype, 'logSuccess'); uxConfirmStub = $$.SANDBOX.stub(SfCommand.prototype, 'confirm'); deleteStub = $$.SANDBOX.stub(); undeleteStub = $$.SANDBOX.stub(); @@ -50,7 +48,7 @@ describe('package:version:delete', () => { afterEach(() => { $$.restore(); - sandbox.restore(); + $$.SANDBOX.restore(); }); beforeEach(() => {}); @@ -111,7 +109,7 @@ describe('package:version:delete', () => { command.project = SfProject.getInstance(); const results: PackageSaveResult = await command.run(); expect(uxSuccessStub.calledOnce).to.be.true; - expect(uxSuccessStub.args[0][0]).to.equal('Successfully undeleted the package version. testId'); + expect(uxSuccessStub.args[0][0]).to.equal('Successfully undeleted package version testId.'); expect(results.id).to.equal('testId'); }); }); diff --git a/test/commands/package/versionReport.test.ts b/test/commands/package/versionReport.test.ts index eef172ec..cd3d3725 100644 --- a/test/commands/package/versionReport.test.ts +++ b/test/commands/package/versionReport.test.ts @@ -114,17 +114,15 @@ describe('package:version:report - tests', () => { const testOrg = new MockTestOrgData(); const config = new Config({ root: import.meta.url }); - const sandbox = sinon.createSandbox(); - // stubs let uxLogStub: sinon.SinonStub; let uxTableStub: sinon.SinonStub; let uxStyledHeaderStub: sinon.SinonStub; beforeEach(async () => { - uxLogStub = sandbox.stub(SfCommand.prototype, 'log'); - uxTableStub = sandbox.stub(SfCommand.prototype, 'table'); - uxStyledHeaderStub = sandbox.stub(SfCommand.prototype, 'styledHeader'); + uxLogStub = $$.SANDBOX.stub(SfCommand.prototype, 'log'); + uxTableStub = $$.SANDBOX.stub(SfCommand.prototype, 'table'); + uxStyledHeaderStub = $$.SANDBOX.stub(SfCommand.prototype, 'styledHeader'); }); before(async () => { @@ -134,7 +132,7 @@ describe('package:version:report - tests', () => { afterEach(() => { $$.restore(); - sandbox.restore(); + $$.SANDBOX.restore(); }); describe('package:version:report', () => { @@ -150,8 +148,6 @@ describe('package:version:report - tests', () => { expect(result).to.deep.equal(pkgVersionReportResultModified); expect(uxLogStub.calledOnce).to.be.false; expect(uxTableStub.calledOnce).to.be.true; - expect(uxStyledHeaderStub.calledOnce).to.be.true; - expect(uxStyledHeaderStub.args[0][0]).to.include('Package Version'); }); it('should produce package version report - json result', async () => { const reportResult = Object.assign({}, pkgVersionReportResult); diff --git a/test/commands/package1/versionCreate.test.ts b/test/commands/package1/versionCreate.test.ts index 9ee9c37a..9ee9480d 100644 --- a/test/commands/package1/versionCreate.test.ts +++ b/test/commands/package1/versionCreate.test.ts @@ -18,8 +18,6 @@ describe('package1:version:create', () => { const testOrg = new MockTestOrgData(); const config = new Config({ root: import.meta.url }); - const sandbox = sinon.createSandbox(); - // stubs let uxLogStub: sinon.SinonStub; @@ -29,16 +27,16 @@ describe('package1:version:create', () => { }); beforeEach(async () => { - uxLogStub = sandbox.stub(SfCommand.prototype, 'log'); + uxLogStub = $$.SANDBOX.stub(SfCommand.prototype, 'log'); }); afterEach(() => { $$.restore(); - sandbox.restore(); + $$.SANDBOX.restore(); }); const libraryStubResult = (status: string): void => { - sandbox.stub(Package1Version, 'create').resolves({ + $$.SANDBOX.stub(Package1Version, 'create').resolves({ CreatedById: '', CreatedDate: 0, Description: '', diff --git a/test/commands/package1/versionCreateGet.test.ts b/test/commands/package1/versionCreateGet.test.ts index f2e701b1..13741f08 100644 --- a/test/commands/package1/versionCreateGet.test.ts +++ b/test/commands/package1/versionCreateGet.test.ts @@ -17,8 +17,6 @@ describe('package1:version:create:get', () => { const testOrg = new MockTestOrgData(); const config = new Config({ root: import.meta.url }); - const sandbox = sinon.createSandbox(); - // stubs let uxStub: sinon.SinonStub; @@ -28,16 +26,16 @@ describe('package1:version:create:get', () => { }); beforeEach(async () => { - uxStub = sandbox.stub(SfCommand.prototype, 'log'); + uxStub = $$.SANDBOX.stub(SfCommand.prototype, 'log'); }); afterEach(() => { $$.restore(); - sandbox.restore(); + $$.SANDBOX.restore(); }); const libraryStubResult = (status: string, errors?: { errors: Error[] }): void => { - sandbox.stub(Package1Version, 'getCreateStatus').resolves({ + $$.SANDBOX.stub(Package1Version, 'getCreateStatus').resolves({ CreatedById: '', CreatedDate: 0, Description: '', diff --git a/test/commands/package1/versionDisplay.nut.ts b/test/commands/package1/versionDisplay.nut.ts index d9d18ad6..092553e9 100644 --- a/test/commands/package1/versionDisplay.nut.ts +++ b/test/commands/package1/versionDisplay.nut.ts @@ -29,7 +29,7 @@ describe('package1:version:display', () => { const command = `package1:version:display -i ${packageVersionId} -o ${session.hubOrg.username}`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; expect(output).to.match( - /MetadataPackageVersionId\s+?MetadataPackageId\s+?Name\s+?Version\s+?ReleaseState\s+?BuildNumber/ + /MetadataPackageVersionId\s+?|MetadataPackageId\s+?|Name\s+?|Version\s+?|ReleaseState\s+?|BuildNumber/ ); }); diff --git a/test/commands/package1/versionList.nut.ts b/test/commands/package1/versionList.nut.ts index ba5e6a3f..7206ff5d 100644 --- a/test/commands/package1/versionList.nut.ts +++ b/test/commands/package1/versionList.nut.ts @@ -29,7 +29,7 @@ describe('package1:version:list', () => { const command = `package1:version:list -o ${session.hubOrg.username}`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; expect(output).to.match( - /MetadataPackageVersionId\s+?MetadataPackageId\s+?Name\s+?Version\s+?ReleaseState\s+?BuildNumber/ + /MetadataPackageVersionId\s+?|MetadataPackageId\s+?|Name\s+?|Version\s+?|ReleaseState\s+?|BuildNumber/ ); }); @@ -60,7 +60,7 @@ describe('package1:version:list', () => { const command = `package1:version:list -i ${packageId} -o ${session.hubOrg.username}`; const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout; expect(output).to.match( - /MetadataPackageVersionId\s+?MetadataPackageId\s+?Name\s+?Version\s+?ReleaseState\s+?BuildNumber/ + /MetadataPackageVersionId\s+?|MetadataPackageId\s+?|Name\s+?|Version\s+?|ReleaseState\s+?|BuildNumber/ ); }); diff --git a/yarn.lock b/yarn.lock index e178fa54..5a84550a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,14 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== +"@alcalzone/ansi-tokenize@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@alcalzone/ansi-tokenize/-/ansi-tokenize-0.1.3.tgz#9f89839561325a8e9a0c32360b8d17e48489993f" + integrity sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw== + dependencies: + ansi-styles "^6.2.1" + is-fullwidth-code-point "^4.0.0" + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -1061,26 +1069,7 @@ "@inquirer/core" "^9.1.0" "@inquirer/type" "^1.5.3" -"@inquirer/core@^9.0.10": - version "9.0.10" - resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-9.0.10.tgz#4270191e2ad3bea6223530a093dd9479bcbc7dd0" - integrity sha512-TdESOKSVwf6+YWDz8GhS6nKscwzkIyakEzCLJ5Vh6O3Co2ClhCJ0A4MG909MUWfaWdpJm7DE45ii51/2Kat9tA== - dependencies: - "@inquirer/figures" "^1.0.5" - "@inquirer/type" "^1.5.2" - "@types/mute-stream" "^0.0.4" - "@types/node" "^22.1.0" - "@types/wrap-ansi" "^3.0.0" - ansi-escapes "^4.3.2" - cli-spinners "^2.9.2" - cli-width "^4.1.0" - mute-stream "^1.0.0" - signal-exit "^4.1.0" - strip-ansi "^6.0.1" - wrap-ansi "^6.2.0" - yoctocolors-cjs "^2.1.2" - -"@inquirer/core@^9.1.0": +"@inquirer/core@^9.0.10", "@inquirer/core@^9.1.0": version "9.1.0" resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-9.1.0.tgz#158b82dc44564a1abd0ce14723d50c3efa0634a2" integrity sha512-RZVfH//2ytTjmaBIzeKT1zefcQZzuruwkpTwwbe/i2jTl4o9M+iML5ChULzz6iw1Ok8iUBBsRCjY2IEbD8Ft4w== @@ -1132,14 +1121,7 @@ ansi-escapes "^4.3.2" yoctocolors-cjs "^2.1.2" -"@inquirer/type@^1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-1.5.2.tgz#15f5e4a4dae02c4203650cb07c8a000cdd423939" - integrity sha512-w9qFkumYDCNyDZmNQjf/n6qQuvQ4dMC3BJesY4oF+yr0CxR5vxujflAVeIcS6U336uzi9GM0kAfZlLrZ9UTkpA== - dependencies: - mute-stream "^1.0.0" - -"@inquirer/type@^1.5.3": +"@inquirer/type@^1.5.2", "@inquirer/type@^1.5.3": version "1.5.3" resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-1.5.3.tgz#220ae9f3d5ae17dd3b2ce5ffd6b48c4a30c73181" integrity sha512-xUQ14WQGR/HK5ei+2CvgcwoH9fQ4PgPGmVFSN0pc1+fVyDL3MREhyAY7nxEErSu6CkllBM3D7e3e+kOvtu+eIg== @@ -1214,13 +1196,12 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@jsforce/jsforce-node@^3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@jsforce/jsforce-node/-/jsforce-node-3.4.1.tgz#36f5cba775b395eeedba676a78eafe447c3f4b28" - integrity sha512-PsBKfglH0/8W/Srr4LsxEFsVmjmZjEj/T4XLGpbBoK8yVObwbiMk4VqwA6XwiA6SHqnEqqQbHZxk2rr7dZC+4A== +"@jsforce/jsforce-node@^3.4.1", "@jsforce/jsforce-node@^3.5.1": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@jsforce/jsforce-node/-/jsforce-node-3.5.2.tgz#003142f1b8f6e452cb41adfd685626d97b263f6e" + integrity sha512-WZZo7HVFQsTeHRfykMJBrEK3ACr9sQnWSm3EVLasAnAUxjh+hjU4SfJ7HB1UaPRliHjLVZcSCUwF+OoJqjbfoA== dependencies: "@sindresorhus/is" "^4" - abort-controller "^3.0.0" base64url "^3.0.1" csv-parse "^5.5.2" csv-stringify "^6.4.4" @@ -1320,6 +1301,22 @@ http-call "^5.2.2" lodash "^4.17.21" +"@oclif/table@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@oclif/table/-/table-0.3.2.tgz#192a310488af67a7341ba203a0e3a0d67f1d8693" + integrity sha512-H8B41sRuXByT4E3ROSICbiQBbZDD3Kw30vYkJlPvKbE5QGEd11hPo+P9ahdGLA3AY0SkTflfTily8fFhHT0WDA== + dependencies: + "@oclif/core" "^4" + "@types/react" "^18.3.12" + change-case "^5.4.4" + cli-truncate "^4.0.0" + ink "^5.0.1" + natural-orderby "^3.0.2" + object-hash "^3.0.0" + react "^18.3.1" + strip-ansi "^7.1.0" + wrap-ansi "^9.0.0" + "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -1341,10 +1338,10 @@ strip-ansi "6.0.1" ts-retry-promise "^0.8.1" -"@salesforce/core@^8.5.1", "@salesforce/core@^8.5.7", "@salesforce/core@^8.6.1": - version "8.6.1" - resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.6.1.tgz#180c489447190632cf48364a077510989fc1dea2" - integrity sha512-bOS6YIjk3IFzFtZcQXUIbJQ740Gh6EyzlcvoBpDpFA5eaz5ZrS0dO1e0rU6Gn4V1FZkvt84gQXA5G1M8tTNKVw== +"@salesforce/core@^8.5.1", "@salesforce/core@^8.5.7", "@salesforce/core@^8.6.1", "@salesforce/core@^8.6.2": + version "8.6.2" + resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.6.2.tgz#50120d923504ceb04604b7f03e359386845a9f9d" + integrity sha512-LFzTLnavDeWsZBB7b2iuVz0F6yeuTcJzQxCy5n+rACY2/Lbw6UJDK/bOSt4wlss6fKrkyU1FTHNlUK5ZoBEveg== dependencies: "@jsforce/jsforce-node" "^3.4.1" "@salesforce/kit" "^3.2.2" @@ -1409,16 +1406,16 @@ dependencies: "@salesforce/ts-types" "^2.0.12" -"@salesforce/packaging@^4.2.9": - version "4.2.9" - resolved "https://registry.yarnpkg.com/@salesforce/packaging/-/packaging-4.2.9.tgz#5493c1ff82b56787c8d14924c858d2463e7a99cf" - integrity sha512-mnwpMz50T5e0YKnbZbI7MMo3653b/LgW6LLNlE+9ocG61l8fzGs0UBlW+i/ej+mfGMO3WxmsyOJe5qlYlwGZDQ== +"@salesforce/packaging@^4.2.15": + version "4.2.15" + resolved "https://registry.yarnpkg.com/@salesforce/packaging/-/packaging-4.2.15.tgz#f45767565d9b8bba956317dab48458cd5c301043" + integrity sha512-Ci7c0FakuniYlbTmztgtRNQJPbvfSa89JGDtozsAvpz7pOYbR+EWPZQ7Owc/eqlvnjPIXoW5mjiRvo/A3pqX+Q== dependencies: - "@jsforce/jsforce-node" "^3.4.1" - "@salesforce/core" "^8.5.1" + "@jsforce/jsforce-node" "^3.5.1" + "@salesforce/core" "^8.6.2" "@salesforce/kit" "^3.2.2" "@salesforce/schemas" "^1.9.0" - "@salesforce/source-deploy-retrieve" "^12.7.1" + "@salesforce/source-deploy-retrieve" "^12.8.0" "@salesforce/ts-types" "^2.0.11" "@salesforce/types" "^1.2.0" fast-xml-parser "^4.5.0" @@ -1453,7 +1450,7 @@ resolved "https://registry.yarnpkg.com/@salesforce/schemas/-/schemas-1.9.0.tgz#ba477a112653a20b4edcf989c61c57bdff9aa3ca" integrity sha512-LiN37zG5ODT6z70sL1fxF7BQwtCX9JOWofSU8iliSNIM+WDEeinnoFtVqPInRSNt8I0RiJxIKCrqstsmQRBNvA== -"@salesforce/sf-plugins-core@^11.3.12", "@salesforce/sf-plugins-core@^11.3.5": +"@salesforce/sf-plugins-core@^11.3.5": version "11.3.12" resolved "https://registry.yarnpkg.com/@salesforce/sf-plugins-core/-/sf-plugins-core-11.3.12.tgz#18b3a553688428bcffea9d36abc72847497f06ae" integrity sha512-hi8EcSoRHRxj4sm/V5YDtzq9bPr/cKpM4fC6abo/jRzpXygwizinc2gVQkXfVdhjK7NGMskVRQB1N+0TThG7bA== @@ -1471,12 +1468,28 @@ string-width "^7.2.0" terminal-link "^3.0.0" -"@salesforce/source-deploy-retrieve@^12.7.1": - version "12.7.1" - resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-12.7.1.tgz#5e828fb721edac136d0903624d82cb5f9e197f21" - integrity sha512-duFgp76CHA8coLEkl9QYmJJmJrHHiU4EtRkBv3hP0H0lTDaMdwCjfxAexGLxT2PCRsE5fbZgwJg+wYFLJHZkIw== +"@salesforce/sf-plugins-core@^12.0.11": + version "12.0.11" + resolved "https://registry.yarnpkg.com/@salesforce/sf-plugins-core/-/sf-plugins-core-12.0.11.tgz#5837bc385cb8f057c4bc86b71ead71464ba5063b" + integrity sha512-DYb54IeszQxcyl0N3e5qxSx3Vc571f36alZNE54qPqBTi9RAGEHQN4XR03dKLic0aNS/j4Z09RGH6YoH2zSL6A== dependencies: - "@salesforce/core" "^8.5.7" + "@inquirer/confirm" "^3.1.22" + "@inquirer/password" "^2.2.0" + "@oclif/core" "^4.0.27" + "@oclif/table" "^0.3.2" + "@salesforce/core" "^8.5.1" + "@salesforce/kit" "^3.2.3" + "@salesforce/ts-types" "^2.0.12" + ansis "^3.3.2" + cli-progress "^3.12.0" + terminal-link "^3.0.0" + +"@salesforce/source-deploy-retrieve@^12.8.0": + version "12.8.1" + resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-12.8.1.tgz#cd00f4165c93c3d09881cb108cb0ba0c47b7a510" + integrity sha512-1wTP6Qa9aWuToY5VMMO0Xg8ea5Vtnaf79ZYJry4BTK9y2XyzhrmwSHTvvO7UuhDb//zx2REfKT53JltCysEADA== + dependencies: + "@salesforce/core" "^8.6.2" "@salesforce/kit" "^3.2.2" "@salesforce/ts-types" "^2.0.12" fast-levenshtein "^3.0.0" @@ -1906,9 +1919,9 @@ tslib "^2.6.2" "@smithy/types@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.3.0.tgz#fae037c733d09bc758946a01a3de0ef6e210b16b" - integrity sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA== + version "3.6.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.6.0.tgz#03a52bfd62ee4b7b2a1842c8ae3ada7a0a5ff3a4" + integrity sha512-8VXK/KzOHefoC65yRgCn5vG1cysPJjHnOVt9d0ybFQSmJgQj152vMn4EkYhGuaOmnnZvCPav/KnYyE6/KsNZ2w== dependencies: tslib "^2.6.2" @@ -2190,12 +2203,12 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@^22.1.0": - version "22.3.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.3.0.tgz#7f8da0e2b72c27c4f9bd3cb5ef805209d04d4f9e" - integrity sha512-nrWpWVaDZuaVc5X84xJ0vNrLvomM205oQyLsRt7OHNZbSHslcWsvgFR7O7hire2ZonjLrWBbedmotmIlJDVd6g== +"@types/node@*", "@types/node@^22.5.2": + version "22.5.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.5.tgz#52f939dd0f65fc552a4ad0b392f3c466cc5d7a44" + integrity sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA== dependencies: - undici-types "~6.18.2" + undici-types "~6.19.2" "@types/node@^18.19.41": version "18.19.42" @@ -2204,18 +2217,24 @@ dependencies: undici-types "~5.26.4" -"@types/node@^22.5.2": - version "22.5.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.5.tgz#52f939dd0f65fc552a4ad0b392f3c466cc5d7a44" - integrity sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA== - dependencies: - undici-types "~6.19.2" - "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== +"@types/prop-types@*": + version "15.7.13" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451" + integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA== + +"@types/react@^18.3.12": + version "18.3.12" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.12.tgz#99419f182ccd69151813b7ee24b792fe08774f60" + integrity sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + "@types/responselike@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" @@ -2485,6 +2504,13 @@ ansi-escapes@^5.0.0: dependencies: type-fest "^1.0.2" +ansi-escapes@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-7.0.0.tgz#00fc19f491bbb18e1d481b97868204f92109bfe7" + integrity sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw== + dependencies: + environment "^1.0.0" + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -2509,7 +2535,7 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -ansi-styles@^6.1.0, ansi-styles@^6.2.1: +ansi-styles@^6.0.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== @@ -2678,6 +2704,11 @@ atomic-sleep@^1.0.0: resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== +auto-bind@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-5.0.1.tgz#50d8e63ea5a1dddcb5e5e36451c1a8266ffbb2ae" + integrity sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg== + available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" @@ -2939,6 +2970,11 @@ change-case@^4, change-case@^4.1.2: snake-case "^3.0.4" tslib "^2.0.3" +change-case@^5.4.4: + version "5.4.4" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-5.4.4.tgz#0d52b507d8fb8f204343432381d1a6d7bff97a02" + integrity sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w== + check-error@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" @@ -2985,6 +3021,18 @@ clean-stack@^3.0.1: dependencies: escape-string-regexp "4.0.0" +cli-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + +cli-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" + integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== + dependencies: + restore-cursor "^4.0.0" + cli-progress@^3.12.0: version "3.12.0" resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.12.0.tgz#807ee14b66bcc086258e444ad0f19e7d42577942" @@ -2997,6 +3045,14 @@ cli-spinners@^2.9.2: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== +cli-truncate@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-4.0.0.tgz#6cc28a2924fee9e25ce91e973db56c7066e6172a" + integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== + dependencies: + slice-ansi "^5.0.0" + string-width "^7.0.0" + cli-width@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" @@ -3036,6 +3092,13 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" +code-excerpt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-4.0.0.tgz#2de7d46e98514385cb01f7b3b741320115f4c95e" + integrity sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA== + dependencies: + convert-to-spaces "^2.0.1" + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -3151,6 +3214,11 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== +convert-to-spaces@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz#61a6c98f8aa626c16b296b862a91412a33bceb6b" + integrity sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ== + core-js-compat@^3.34.0: version "3.36.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.0.tgz#087679119bc2fdbdefad0d45d8e5d307d45ba190" @@ -3199,6 +3267,11 @@ csprng@*: dependencies: sequin "*" +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + csv-parse@^5.5.2: version "5.5.5" resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-5.5.5.tgz#68a271a9092877b830541805e14c8a80e6a22517" @@ -3455,6 +3528,11 @@ entities@^4.2.0, entities@^4.4.0, entities@^4.5.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +environment@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1" + integrity sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -3557,6 +3635,11 @@ escape-string-regexp@^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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + escodegen@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" @@ -4594,12 +4677,7 @@ ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -ignore@^5.3.2: +ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.0, ignore@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== @@ -4627,6 +4705,11 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== +indent-string@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5" + integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -4645,6 +4728,36 @@ ini@^1.3.4: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +ink@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ink/-/ink-5.0.1.tgz#f2ef9796a3911830c3995dedd227ec84ae27de4b" + integrity sha512-ae4AW/t8jlkj/6Ou21H2av0wxTk8vrGzXv+v2v7j4in+bl1M5XRMVbfNghzhBokV++FjF8RBDJvYo+ttR9YVRg== + dependencies: + "@alcalzone/ansi-tokenize" "^0.1.3" + ansi-escapes "^7.0.0" + ansi-styles "^6.2.1" + auto-bind "^5.0.1" + chalk "^5.3.0" + cli-boxes "^3.0.0" + cli-cursor "^4.0.0" + cli-truncate "^4.0.0" + code-excerpt "^4.0.0" + indent-string "^5.0.0" + is-in-ci "^0.1.0" + lodash "^4.17.21" + patch-console "^2.0.0" + react-reconciler "^0.29.0" + scheduler "^0.23.0" + signal-exit "^3.0.7" + slice-ansi "^7.1.0" + stack-utils "^2.0.6" + string-width "^7.0.0" + type-fest "^4.8.3" + widest-line "^5.0.0" + wrap-ansi "^9.0.0" + ws "^8.15.0" + yoga-wasm-web "~0.3.3" + internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" @@ -4746,6 +4859,11 @@ 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@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + 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" @@ -4760,6 +4878,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-in-ci@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-in-ci/-/is-in-ci-0.1.0.tgz#5e07d6a02ec3a8292d3f590973357efa3fceb0d3" + integrity sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ== + is-inside-container@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" @@ -5001,7 +5124,7 @@ joycon@^3.1.1: resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== -js-tokens@^4.0.0: +"js-tokens@^3.0.0 || ^4.0.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== @@ -5361,6 +5484,13 @@ log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" +loose-envify@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + loupe@^2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" @@ -5809,6 +5939,11 @@ nyc@^17.0.0: test-exclude "^6.0.0" yargs "^15.0.2" +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + object-inspect@^1.13.1, object-inspect@^1.9.0: version "1.13.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" @@ -6057,6 +6192,11 @@ pascal-case@^3.1.2: no-case "^3.0.4" tslib "^2.0.3" +patch-console@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/patch-console/-/patch-console-2.0.0.tgz#9023f4665840e66f40e9ce774f904a63167433bb" + integrity sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA== + path-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" @@ -6330,6 +6470,21 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" +react-reconciler@^0.29.0: + version "0.29.2" + resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.29.2.tgz#8ecfafca63549a4f4f3e4c1e049dd5ad9ac3a54f" + integrity sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.2" + +react@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== + dependencies: + loose-envify "^1.1.0" + read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -6502,6 +6657,14 @@ responselike@^3.0.0: dependencies: lowercase-keys "^3.0.0" +restore-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" + integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + retry@0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" @@ -6570,6 +6733,13 @@ sax@>=0.6.0: resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== +scheduler@^0.23.0, scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== + dependencies: + loose-envify "^1.1.0" + secure-json-parse@^2.4.0: version "2.7.0" resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" @@ -6690,7 +6860,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -6739,6 +6909,14 @@ slash@^5.1.0: resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + dependencies: + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.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" @@ -6884,16 +7062,14 @@ srcset@^5.0.0: resolved "https://registry.yarnpkg.com/srcset/-/srcset-5.0.0.tgz#9df6c3961b5b44a02532ce6ae4544832609e2e3f" integrity sha512-SqEZaAEhe0A6ETEa9O1IhSPC7MdvehZtCnTR0AftXk3QhY2UNgb+NApFOUPZILXk/YTDfFxMTNJOBpzrJsEdIA== -"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== +stack-utils@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" + escape-string-regexp "^2.0.0" -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== @@ -6911,7 +7087,7 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string-width@^7.2.0: +string-width@^7.0.0, string-width@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.2.0.tgz#b5bb8e2165ce275d4d43476dd2700ad9091db6dc" integrity sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ== @@ -6961,14 +7137,7 @@ 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== @@ -7237,6 +7406,11 @@ type-fest@^1.0.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== +type-fest@^4.8.3: + version "4.26.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.26.1.tgz#a4a17fa314f976dd3e6d6675ef6c775c16d7955e" + integrity sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg== + typed-array-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" @@ -7334,11 +7508,6 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici-types@~6.18.2: - version "6.18.2" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.18.2.tgz#8b678cf939d4fc9ec56be3c68ed69c619dee28b0" - integrity sha512-5ruQbENj95yDYJNS3TvcaxPMshV7aizdv/hWYjGIKoANWKjhWNBsr2YEuYZKodQulB1b8l7ILOuDQep3afowQQ== - undici-types@~6.19.2: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" @@ -7502,6 +7671,13 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" +widest-line@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-5.0.0.tgz#b74826a1e480783345f0cd9061b49753c9da70d0" + integrity sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA== + dependencies: + string-width "^7.0.0" + wireit@^0.14.5: version "0.14.5" resolved "https://registry.yarnpkg.com/wireit/-/wireit-0.14.5.tgz#cd1c4136444c8dbe655f34f60fe2454a9e69d430" @@ -7523,7 +7699,7 @@ workerpool@^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": +"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== @@ -7541,15 +7717,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" @@ -7559,6 +7726,15 @@ wrap-ansi@^8.1.0: string-width "^5.0.1" strip-ansi "^7.0.1" +wrap-ansi@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e" + integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== + dependencies: + ansi-styles "^6.2.1" + string-width "^7.0.0" + strip-ansi "^7.1.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -7574,6 +7750,11 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +ws@^8.15.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + xml2js@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" @@ -7702,3 +7883,8 @@ yoctocolors-cjs@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242" integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA== + +yoga-wasm-web@~0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz#eb8e9fcb18e5e651994732f19a220cb885d932ba" + integrity sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==