diff --git a/.github/workflows/perfScaleNut.yml b/.github/workflows/perfScaleNut.yml index d050ef3c0f..8a1022d051 100644 --- a/.github/workflows/perfScaleNut.yml +++ b/.github/workflows/perfScaleNut.yml @@ -31,6 +31,8 @@ jobs: command: npm install @salesforce/cli@nightly -g timeout_minutes: 60 - uses: salesforcecli/github-workflows/.github/actions/yarnInstallWithRetries@main + with: + ignore-scripts: true - run: | yarn mocha test/nuts/scale/eda.nut.ts --timeout 500000 yarn mocha test/nuts/scale/lotsOfClasses.nut.ts --timeout 500000 diff --git a/package.json b/package.json index 7b5f8b64db..39c182b7c8 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "node": ">=18.0.0" }, "dependencies": { - "@salesforce/core": "^7.3.1", + "@salesforce/core": "^7.3.5", "@salesforce/kit": "^3.1.1", "@salesforce/ts-types": "^2.0.9", "fast-levenshtein": "^3.0.0", @@ -40,7 +40,7 @@ }, "devDependencies": { "@jsforce/jsforce-node": "^3.2.0", - "@salesforce/cli-plugins-testkit": "^5.3.1", + "@salesforce/cli-plugins-testkit": "^5.3.2", "@salesforce/dev-scripts": "^9.0.0", "@types/deep-equal-in-any-order": "^1.0.1", "@types/fast-levenshtein": "^0.0.4", diff --git a/src/convert/transformers/decomposedMetadataTransformer.ts b/src/convert/transformers/decomposedMetadataTransformer.ts index 060a79c46e..3c16d25a8c 100644 --- a/src/convert/transformers/decomposedMetadataTransformer.ts +++ b/src/convert/transformers/decomposedMetadataTransformer.ts @@ -184,15 +184,20 @@ const getWriteInfosFromMerge = (parentXmlObject: XmlObj) => (parentComponent: SourceComponent): WriteInfo[] => { const writeInfo = { source: new JsToXml(parentXmlObject), output: getOutputFile(parentComponent, mergeWith) }; + const parentHasRealValues = objectHasSomeRealValues(parentComponent.type)(parentXmlObject); if (mergeWith?.xml) { // mark the component as found stateSetter(parentComponent, { foundMerge: true }); - } else if (objectHasSomeRealValues(parentComponent.type)(parentXmlObject)) { + return objectHasSomeRealValues(parentComponent.type)(mergeWith.parseXmlSync()) && !parentHasRealValues + ? [] // the target file has values but this process doesn't, so we don't want to overwrite it + : [writeInfo]; + } + if (objectHasSomeRealValues(parentComponent.type)(parentXmlObject)) { // set the state but don't return any writeInfo to avoid writing "empty" (ns-only) parent files stateSetter(parentComponent, { writeInfo }); } - return mergeWith.xml ? [writeInfo] : []; + return []; }; /** @@ -248,7 +253,7 @@ const tagToChildTypeId = ({ tagKey, type }: { tagKey: string; type: MetadataType const objectHasSomeRealValues = (type: MetadataType) => (obj: XmlObj): boolean => - Object.keys(obj[type.name]).length > 1; + Object.keys(obj[type.name] ?? {}).length > 1; const hasChildTypeId = (cm: ComposedMetadata): cm is Required => !!cm.childTypeId; @@ -266,6 +271,7 @@ type ComposedMetadataWithChildType = ComposedMetadata & { childType: MetadataTyp type InfoContainer = { entryName?: string; childComponent: MetadataComponent; + /** the parsed xml */ value: JsonMap; parentComponent: SourceComponent; mergeWith?: SourceComponent; diff --git a/test/snapshot/sampleProjects/singleCustomFieldRetrieve/__snapshots__/verify-force-app.expected/force-app/main/default/objects/Broker__c/Broker__c.object-meta.xml b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/__snapshots__/verify-force-app.expected/force-app/main/default/objects/Broker__c/Broker__c.object-meta.xml new file mode 100644 index 0000000000..84cb33189c --- /dev/null +++ b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/__snapshots__/verify-force-app.expected/force-app/main/default/objects/Broker__c/Broker__c.object-meta.xml @@ -0,0 +1,63 @@ + + + + Accept + Default + + + CancelEdit + Default + + + Clone + Default + + + Delete + Default + + + Edit + Default + + + List + Default + + + New + Default + + + SaveEdit + Default + + + Tab + Default + + + View + Default + + false + Broker_Compact + Deployed + false + true + false + false + true + true + true + true + + + + Text + + Brokers + + ReadWrite + Public + diff --git a/test/snapshot/sampleProjects/singleCustomFieldRetrieve/__snapshots__/verify-force-app.expected/force-app/main/default/objects/Broker__c/fields/Broker_Id__c.field-meta.xml b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/__snapshots__/verify-force-app.expected/force-app/main/default/objects/Broker__c/fields/Broker_Id__c.field-meta.xml new file mode 100644 index 0000000000..97bae1d5f0 --- /dev/null +++ b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/__snapshots__/verify-force-app.expected/force-app/main/default/objects/Broker__c/fields/Broker_Id__c.field-meta.xml @@ -0,0 +1,12 @@ + + + Broker_Id__c + true + + 18 + false + 0 + false + Number + false + diff --git a/test/snapshot/sampleProjects/singleCustomFieldRetrieve/__snapshots__/verify-force-app.expected/force-app/main/default/objects/Broker__c/fields/Email__c.field-meta.xml b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/__snapshots__/verify-force-app.expected/force-app/main/default/objects/Broker__c/fields/Email__c.field-meta.xml new file mode 100644 index 0000000000..515967ff50 --- /dev/null +++ b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/__snapshots__/verify-force-app.expected/force-app/main/default/objects/Broker__c/fields/Email__c.field-meta.xml @@ -0,0 +1,10 @@ + + + Email__c + false + + false + false + Email + false + diff --git a/test/snapshot/sampleProjects/singleCustomFieldRetrieve/force-app/main/default/objects/Broker__c/Broker__c.object-meta.xml b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/force-app/main/default/objects/Broker__c/Broker__c.object-meta.xml new file mode 100644 index 0000000000..84cb33189c --- /dev/null +++ b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/force-app/main/default/objects/Broker__c/Broker__c.object-meta.xml @@ -0,0 +1,63 @@ + + + + Accept + Default + + + CancelEdit + Default + + + Clone + Default + + + Delete + Default + + + Edit + Default + + + List + Default + + + New + Default + + + SaveEdit + Default + + + Tab + Default + + + View + Default + + false + Broker_Compact + Deployed + false + true + false + false + true + true + true + true + + + + Text + + Brokers + + ReadWrite + Public + diff --git a/test/snapshot/sampleProjects/singleCustomFieldRetrieve/force-app/main/default/objects/Broker__c/fields/Broker_Id__c.field-meta.xml b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/force-app/main/default/objects/Broker__c/fields/Broker_Id__c.field-meta.xml new file mode 100644 index 0000000000..97bae1d5f0 --- /dev/null +++ b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/force-app/main/default/objects/Broker__c/fields/Broker_Id__c.field-meta.xml @@ -0,0 +1,12 @@ + + + Broker_Id__c + true + + 18 + false + 0 + false + Number + false + diff --git a/test/snapshot/sampleProjects/singleCustomFieldRetrieve/mdapiOutput/objects/Broker__c.object b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/mdapiOutput/objects/Broker__c.object new file mode 100644 index 0000000000..273a497eb8 --- /dev/null +++ b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/mdapiOutput/objects/Broker__c.object @@ -0,0 +1,12 @@ + + + + Email__c + false + + false + false + Email + false + + diff --git a/test/snapshot/sampleProjects/singleCustomFieldRetrieve/mdapiOutput/package.xml b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/mdapiOutput/package.xml new file mode 100644 index 0000000000..4e6f102473 --- /dev/null +++ b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/mdapiOutput/package.xml @@ -0,0 +1,8 @@ + + + + Broker__c.Email__c + CustomField + + 59.0 + diff --git a/test/snapshot/sampleProjects/singleCustomFieldRetrieve/sfdx-project.json b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/sfdx-project.json new file mode 100644 index 0000000000..fc5278b51d --- /dev/null +++ b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/sfdx-project.json @@ -0,0 +1,9 @@ +{ + "packageDirectories": [ + { + "default": true, + "path": "force-app" + } + ], + "sourceApiVersion": "59.0" +} diff --git a/test/snapshot/sampleProjects/singleCustomFieldRetrieve/snapshots.test.ts b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/snapshots.test.ts new file mode 100644 index 0000000000..460b1ef722 --- /dev/null +++ b/test/snapshot/sampleProjects/singleCustomFieldRetrieve/snapshots.test.ts @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2023, salesforce.com, inc. + * All rights reserved. + * Licensed under the BSD 3-Clause license. + * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ +import * as fs from 'node:fs'; +import * as path from 'node:path'; +import { MetadataConverter } from '../../../../src/convert/metadataConverter'; +import { ComponentSetBuilder } from '../../../../src/collections/componentSetBuilder'; +import { FORCE_APP, MDAPI_OUT, fileSnap, dirEntsToPaths } from '../../helper/conversions'; + +// we don't want failing tests outputting over each other +/* eslint-disable no-await-in-loop */ + +const folder = 'singleCustomFieldRetrieve'; +const tmpFolder = `${folder}Tmp`; +const testOriginalDir = path.join('test', 'snapshot', 'sampleProjects', folder); +const testDir = testOriginalDir.replace(folder, tmpFolder); + +/** + * retrieving a single field retrieves the object, removes the field from it, and leaves a blank object. + * That blank object should NOT overwrite the existing object if it exists in the merge target + */ +describe('a single field in a CustomObject xml does not overwrite (blank) the existing Object', () => { + before(async () => { + // because we're applying changes over the existing source, move it to a new place + await fs.promises.cp(testOriginalDir, testDir, { + recursive: true, + force: true, + filter: (src) => !src.includes('__snapshots__'), + }); + }); + it('merge a single retrieved CustomField (Email__c) into project', async () => { + // SDR should match the original source + const cs = await ComponentSetBuilder.build({ + sourcepath: [path.join(testDir, MDAPI_OUT)], + }); + // a CS from the destination + const mergeWith = ( + await ComponentSetBuilder.build({ + sourcepath: [path.join(testDir, FORCE_APP)], + }) + ).getSourceComponents(); + + const converter = new MetadataConverter(); + + await converter.convert(cs, 'source', { + type: 'merge', + mergeWith, + defaultDirectory: path.resolve(path.join(testDir, FORCE_APP)), + }); + }); + + it(`verify ${FORCE_APP}`, async () => { + await validateSourceDir(FORCE_APP); + }); + + after(async () => { + await fs.promises.rm(testDir, { recursive: true, force: true }); + }); +}); + +const validateSourceDir = async (dir: string): Promise => { + const sourceFiles = dirEntsToPaths( + await fs.promises.readdir(path.join(testDir, dir), { + recursive: true, + withFileTypes: true, + }) + ); + for (const file of sourceFiles) { + await fileSnap(file, testOriginalDir, testDir); + } +}; diff --git a/yarn.lock b/yarn.lock index de6b1f8d1e..359e1f6e0b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -502,7 +502,7 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@jsforce/jsforce-node@^3.1.0", "@jsforce/jsforce-node@^3.2.0": +"@jsforce/jsforce-node@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@jsforce/jsforce-node/-/jsforce-node-3.2.0.tgz#4b104613fc9bb74e0e38d2c00936ea2b228ba73a" integrity sha512-3GjWNgWs0HFajVhIhwvBPb0B45o500wTBNEBYxy8XjeeRra+qw8A9xUrfVU7TAGev8kXuKhjJwaTiSzThpEnew== @@ -548,12 +548,12 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@salesforce/cli-plugins-testkit@^5.3.1": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@salesforce/cli-plugins-testkit/-/cli-plugins-testkit-5.3.1.tgz#6ff1d6a7d1923e7905a2ddd67905458e8f5bcb6d" - integrity sha512-UBTFfG0pxcqMSJjdf7xpRhv5TCC3cf3/CDijjWXzYH/JGryeb0XWZIRKoT8kXzXgEDW2s4O/dNdVvMGnZEN3Aw== +"@salesforce/cli-plugins-testkit@^5.3.2": + version "5.3.2" + resolved "https://registry.yarnpkg.com/@salesforce/cli-plugins-testkit/-/cli-plugins-testkit-5.3.2.tgz#39b12513baf230cbfa2a831d1e1ad567512dcb18" + integrity sha512-/0ZR9PrRpmbtYzkGee7Sc8b1qzNyojq1Smk0RY7gM439rDKS90Tqq8W3b9hNXtTzHNe98MxQUGq819mCxok+Mw== dependencies: - "@salesforce/core" "^7.3.1" + "@salesforce/core" "^7.3.3" "@salesforce/kit" "^3.1.1" "@salesforce/ts-types" "^2.0.9" "@types/shelljs" "^0.8.15" @@ -564,23 +564,23 @@ strip-ansi "6.0.1" ts-retry-promise "^0.8.0" -"@salesforce/core@^7.3.1": - version "7.3.1" - resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-7.3.1.tgz#cda324f7a5ff1be6d7381943b15b23dbe3cd5dec" - integrity sha512-jdc0GOUlV4xvyF9dPbBKNPDvQc06uj5YHFEHvdhCAFtCvqgtubpDzlyDppac2kdKujh4c7UH2KreboNvJ3LsoQ== +"@salesforce/core@^7.3.1", "@salesforce/core@^7.3.3", "@salesforce/core@^7.3.5": + version "7.3.5" + resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-7.3.5.tgz#0dccb4d8ddd36cde449d67a482dfb52e63de1c9f" + integrity sha512-9hkK4EyV1Z7T1mDyb/Rj1dO0Owp3f2PNGXSyQhCG2nozSCxAQlPeFFqn2L3d7kJJxdhlr58P4QXiFCoJVVvbLQ== dependencies: - "@jsforce/jsforce-node" "^3.1.0" + "@jsforce/jsforce-node" "^3.2.0" "@salesforce/kit" "^3.1.1" "@salesforce/schemas" "^1.7.0" "@salesforce/ts-types" "^2.0.9" - ajv "^8.12.0" + ajv "^8.13.0" change-case "^4.1.2" faye "^1.4.0" form-data "^4.0.0" js2xmlparser "^4.0.1" jsonwebtoken "9.0.2" jszip "3.10.1" - pino "^8.19.0" + pino "^8.21.0" pino-abstract-transport "^1.1.0" pino-pretty "^10.3.1" proper-lockfile "^4.1.2" @@ -1028,15 +1028,15 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.11.0, ajv@^8.12.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== +ajv@^8.11.0, ajv@^8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" + integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== dependencies: - fast-deep-equal "^3.1.1" + fast-deep-equal "^3.1.3" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" - uri-js "^4.2.2" + uri-js "^4.4.1" ansi-colors@4.1.1: version "4.1.1" @@ -4311,10 +4311,10 @@ picomatch@^3.0.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-3.0.1.tgz#817033161def55ec9638567a2f3bbc876b3e7516" integrity sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag== -pino-abstract-transport@^1.0.0, pino-abstract-transport@^1.1.0, pino-abstract-transport@v1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz#083d98f966262164504afb989bccd05f665937a8" - integrity sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA== +pino-abstract-transport@^1.0.0, pino-abstract-transport@^1.1.0, pino-abstract-transport@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz#97f9f2631931e242da531b5c66d3079c12c9d1b5" + integrity sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q== dependencies: readable-stream "^4.0.0" split2 "^4.0.0" @@ -4344,22 +4344,22 @@ pino-std-serializers@^6.0.0: resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz#d9a9b5f2b9a402486a5fc4db0a737570a860aab3" integrity sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA== -pino@^8.19.0: - version "8.19.0" - resolved "https://registry.yarnpkg.com/pino/-/pino-8.19.0.tgz#ccc15ef736f103ec02cfbead0912bc436dc92ce4" - integrity sha512-oswmokxkav9bADfJ2ifrvfHUwad6MLp73Uat0IkQWY3iAw5xTRoznXbXksZs8oaOUMpmhVWD+PZogNzllWpJaA== +pino@^8.21.0: + version "8.21.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-8.21.0.tgz#e1207f3675a2722940d62da79a7a55a98409f00d" + integrity sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q== dependencies: atomic-sleep "^1.0.0" fast-redact "^3.1.1" on-exit-leak-free "^2.1.0" - pino-abstract-transport v1.1.0 + pino-abstract-transport "^1.2.0" pino-std-serializers "^6.0.0" process-warning "^3.0.0" quick-format-unescaped "^4.0.3" real-require "^0.2.0" safe-stable-stringify "^2.3.1" sonic-boom "^3.7.0" - thread-stream "^2.0.0" + thread-stream "^2.6.0" pkg-dir@^4.1.0: version "4.2.0" @@ -5017,16 +5017,7 @@ 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== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.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== @@ -5085,14 +5076,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== @@ -5190,10 +5174,10 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -thread-stream@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-2.3.0.tgz#4fc07fb39eff32ae7bad803cb7dd9598349fed33" - integrity sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA== +thread-stream@^2.6.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-2.7.0.tgz#d8a8e1b3fd538a6cca8ce69dbe5d3d097b601e11" + integrity sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw== dependencies: real-require "^0.2.0" @@ -5459,7 +5443,7 @@ upper-case@^2.0.2: dependencies: tslib "^2.0.3" -uri-js@^4.2.2: +uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -5591,7 +5575,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== @@ -5609,15 +5593,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"