diff --git a/.circleci/config.yml b/.circleci/config.yml index 2770846927..aa13e2cf0c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -102,7 +102,8 @@ jobs: yarn install npm install shx -g shx rm -rf node_modules/@salesforce/kit - shx rm -rf node_modules/@salesforce/core + # until plugin is parking-orbited, they'll need 2 different major versions of core + # shx rm -rf node_modules/@salesforce/core shx rm -rf node_modules/@typescript-eslint shx rm -rf node_modules/eslint-plugin-header shx rm -rf node_modules/eslint-plugin-import diff --git a/METADATA_SUPPORT.md b/METADATA_SUPPORT.md index 15558f46b1..dd45b87e68 100644 --- a/METADATA_SUPPORT.md +++ b/METADATA_SUPPORT.md @@ -4,7 +4,7 @@ This list compares metadata types found in Salesforce v55 with the [metadata reg This repository is used by both the Salesforce CLIs and Salesforce's VSCode Extensions. -Currently, there are 458/491 supported metadata types. +Currently, there are 459/491 supported metadata types. For status on any existing gaps, please search or file an issue in the [Salesforce CLI issues only repo](https://github.com/forcedotcom/cli/issues). To contribute a new metadata type, please see the [Contributing Metadata Types to the Registry](./contributing/metadata.md) @@ -71,7 +71,7 @@ To contribute a new metadata type, please see the [Contributing Metadata Types t |BlockchainSettings|✅|| |Bot|✅|| |BotSettings|✅|| -|BotTemplate|❌|Not supported, but support could be added| +|BotTemplate|✅|| |BotVersion|✅|| |BranchManagementSettings|✅|| |BrandingSet|✅|| @@ -509,7 +509,8 @@ v56 introduces the following new types. Here's their current level of support |Metadata Type|Support|Notes| |:---|:---|:---| -|ForecastingColumnDefinition|❌|Not supported, but support could be added| +|CollectionsDashboardSettings|✅|| +|MfgServiceConsoleSettings|✅|| ## Additional Types diff --git a/messages/sdr.md b/messages/sdr.md new file mode 100644 index 0000000000..85528b1495 --- /dev/null +++ b/messages/sdr.md @@ -0,0 +1,191 @@ +# md_request_fail + +Metadata API request failed: %s + +# md_request_timeout + +Metadata API request timed out + +# registry_error_missing_type_definition + +Missing metadata type definition for %s + +# registry_error_file_not_found + +File not found %s + +# registry_error_missing_metadata_xml + +Metadata xml file missing for %s + +# registry_error_unsupported_type + +Types missing a defined suffix are currently unsupported + +# beta_tapi_mdcontainer_error + +Unexpected error creating metadata container + +# beta_tapi_membertype_error + +Unexpected error creating %s member + +# beta_tapi_car_error + +Unexpected error creating container async request + +# beta_tapi_queue_status + +The deploy is still in the queue + +# beta_tapi_membertype_unsupported_error + +'%s' type not supported + +# error_convert_invalid_format + +Invalid conversion format '%s' + +# error_convert_not_implemented + +%s format conversion not yet implemented for type %s + +# error_could_not_infer_type + +%s: Could not infer a metadata type + +# error_unexpected_child_type + +Unexpected child metadata [%s] found for parent type [%s] + +# error_expected_source_files + +%s: Expected source files for type '%s' + +# error_failed_convert + +Component conversion failed: %s + +# error_merge_metadata_target_unsupported + +Merge convert for metadata target format currently unsupported + +# error_in_tooling_retrieve + +Unexpected error while retrieving using Tooling API. Stack trace: %s + +# error_md_not_present_in_org + +%s was not found in org + +# error_missing_adapter + +Missing adapter '%s' for metadata type '%s' + +# error_missing_transformer + +Missing transformer '%s' for metadata type '%s' + +# error_missing_metadata_xml + +%s: Metadata xml file missing for '%s' + +# error_unsupported_content_metadata_xml + +%s: Unsupported content xml file for '%s' + +# error_missing_type_definition + +Missing metadata type definition in registry for id '%s'. + +# error_missing_child_type_definition + +Type %s does not have a child type definition %s. + +# error_no_metadata_xml_ignore + +Metadata xml file %s is forceignored but is required for %s. + +# error_no_source_ignore + +%s metadata types require source files, but %s is forceignored. + +# error_no_source_ignore.actions + +- Metadata types with content are composed of two files: a content file (ie MyApexClass.cls) and a -meta.xml file (i.e MyApexClass.cls-meta.xml). You must include both files in your .forceignore file. Or try appending “\*” to your existing .forceignore entry. + +# error_path_not_found + +%s: File or folder not found + +# tapi_retrieve_component_limit_error + +This retrieve method only supports retrieving one metadata component at a time + +# error_on_manifest_creation + +Unexpected error while creating manifest for '%s'. Stack trace: %s + +# error_creating_metadata_type + +Unexpected error creating '%s' + +# error_updating_metadata_type + +Unexpected error updating '%s' + +# error_parsing_metadata_file + +Error parsing metadata file + +# error_parsing_xml + +SourceComponent %s does not have an associated metadata xml to parse + +# error_expected_file_path + +%s: path is to a directory, expected a file + +# error_expected_directory_path + +%s: path is to a file, expected a directory + +# error_no_directory_stream + +%s doesn't support readable streams on directories. + +# error_no_source_to_deploy + +No source-backed components present in the package. + +# error_no_components_to_retrieve + +No components in the package to retrieve. + +# error_invalid_package + +The metadata package wasn't properly initialized. + +# error_static_resource_expected_archive_type + +A StaticResource directory must have a content type of application/zip or application/jar - found %s for %s. + +# error_static_resource_missing_resource_file + +A StaticResource must have an associated .resource file, missing %s.resource-meta.xml + +# error_no_job_id + +The %s operation is missing a job ID. Initialize an operation with an ID, or start a new job. + +# tapi_deploy_component_limit_error + +This deploy method only supports deploying one metadata component at a time + +# warn_unresolved_source_for_components + +The following components will not be deployed due to unresolved source: %s + +# invalid_xml_parsing + +error parsing %s due to:\n message: %s\n line: %s\n code: %s diff --git a/package.json b/package.json index f547c13a11..44653526ab 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@salesforce/source-deploy-retrieve", - "version": "5.15.0", + "version": "6.0.0", "description": "JavaScript library to run Salesforce metadata deploys and retrieves", "main": "lib/src/index.js", "author": "Salesforce", @@ -18,15 +18,16 @@ "retrieve" ], "files": [ - "lib/src" + "lib/src", + "messages" ], "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "dependencies": { - "@salesforce/core": "^2.37.1", + "@salesforce/core": "^3.19.0", "@salesforce/kit": "^1.5.41", - "@salesforce/ts-types": "^1.4.2", + "@salesforce/ts-types": "^1.5.20", "archiver": "^5.3.0", "fast-xml-parser": "^3.17.4", "graceful-fs": "^4.2.8", @@ -36,13 +37,12 @@ "xmldom-sfdx-encoding": "^0.1.29" }, "devDependencies": { - "@salesforce/dev-config": "^2.1.3", - "@salesforce/dev-scripts": "^1.0.2", + "@salesforce/dev-config": "^3.0.1", + "@salesforce/dev-scripts": "^2.0.1", "@salesforce/prettier-config": "^0.0.2", "@salesforce/ts-sinon": "^1.1.2", "@types/archiver": "^5.1.1", "@types/deep-equal-in-any-order": "^1.0.1", - "@types/jsforce": "^1.9.38", "@types/mime": "2.0.3", "@types/mkdirp": "0.5.2", "@types/shelljs": "^0.8.9", @@ -65,8 +65,9 @@ "eslint-plugin-prettier": "^4.0.0", "got": "^11.8.2", "husky": "^7.0.4", + "jsforce": "2.0.0-beta.10", "lint-staged": "^10.2.11", - "mocha": "^8.4.0", + "mocha": "^9.1.3", "mocha-junit-reporter": "^1.23.3", "nyc": "^15.1.0", "prettier": "^2.0.5", diff --git a/src/client/deployStrategies/baseDeploy.ts b/src/client/deployStrategies/baseDeploy.ts index 46b3c10ace..5f46adfb2b 100644 --- a/src/client/deployStrategies/baseDeploy.ts +++ b/src/client/deployStrategies/baseDeploy.ts @@ -6,15 +6,21 @@ */ /* eslint @typescript-eslint/no-unsafe-assignment:0, @typescript-eslint/no-unsafe-call:0, @typescript-eslint/no-unsafe-member-access:0 */ import { sep } from 'path'; -import { Connection } from '@salesforce/core'; +import { Connection, Messages, SfError } from '@salesforce/core'; import { readFileSync } from 'graceful-fs'; -import { DeployError } from '../../errors'; +import { SaveResult } from 'jsforce'; import { SourceComponent } from '../../resolve'; -import { SourceDeployResult, ToolingCreateResult } from '../types'; +import { SourceDeployResult } from '../types'; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-assignment const DOMParser = require('xmldom-sfdx-encoding').DOMParser; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_parsing_metadata_file', + 'error_creating_metadata_type', +]); + export abstract class BaseDeploy { private static readonly TOOLING_PATH_SEP = '/'; @@ -49,24 +55,21 @@ export abstract class BaseDeploy { ...(labelNode ? { label: labelNode.textContent } : {}), }; } catch (e) { - throw new DeployError('error_parsing_metadata_file'); + throw new SfError(messages.getMessage('error_parsing_metadata_file'), 'DeployError'); } } // If bundle already exists then use Id and update existing // else, create a new bundle - public async upsertBundle(Id?: string): Promise { + public async upsertBundle(Id?: string): Promise { const metadataContent = readFileSync(this.component.xml, 'utf8'); const metadataField = this.buildMetadataField(metadataContent); - let bundleResult: ToolingCreateResult; + let bundleResult: SaveResult; if (Id) { const bundleObject = { Id, Metadata: metadataField }; - bundleResult = (await this.connection.tooling.update( - this.component.type.name, - bundleObject - )) as ToolingCreateResult; + bundleResult = await this.connection.tooling.update(this.component.type.name, bundleObject); } else { const bundleObject = { FullName: this.component.fullName, @@ -77,14 +80,14 @@ export abstract class BaseDeploy { } if (!bundleResult.success) { - throw new DeployError('error_creating_metadata_type', this.component.type.name); + throw new SfError(messages.getMessage('error_creating_metadata_type', [this.component.type.name]), 'DeployError'); } return bundleResult; } - protected async toolingCreate(type: string, record: Record): Promise { - return (await this.connection.tooling.create(type, record)) as ToolingCreateResult; + protected async toolingCreate(type: string, record: Record): Promise { + return await this.connection.tooling.create(type, record); } protected getFormattedPaths(filepath: string): string[] { diff --git a/src/client/deployStrategies/containerDeploy.ts b/src/client/deployStrategies/containerDeploy.ts index ccb67db4ab..1cea3d8c45 100644 --- a/src/client/deployStrategies/containerDeploy.ts +++ b/src/client/deployStrategies/containerDeploy.ts @@ -6,9 +6,10 @@ */ import { readFileSync } from 'graceful-fs'; import { sleep } from '@salesforce/kit'; +import { Messages, SfError } from '@salesforce/core'; +import { SaveResult } from 'jsforce'; import { deployTypes } from '../toolingApi'; -import { DeployError } from '../../errors'; import { ComponentDeployment, ComponentStatus, @@ -17,13 +18,19 @@ import { QueryResult, RecordId, SourceDeployResult, - ToolingCreateResult, ToolingDeployStatus, } from '../types'; import { baseName } from '../../utils/path'; import { SourceComponent } from '../../resolve'; import { BaseDeploy } from './baseDeploy'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'beta_tapi_mdcontainer_error', + 'beta_tapi_car_error', + 'beta_tapi_membertype_error', +]); + export class ContainerDeploy extends BaseDeploy { private static readonly CONTAINER_ASYNC_REQUEST = 'ContainerAsyncRequest'; private static readonly METADATA_CONTAINER = 'MetadataContainer'; @@ -41,21 +48,18 @@ export class ContainerDeploy extends BaseDeploy { return this.buildSourceDeployResult(containerRequestStatus); } - public async createMetadataContainer(): Promise { + public async createMetadataContainer(): Promise { const metadataContainer = await this.toolingCreate(ContainerDeploy.METADATA_CONTAINER, { Name: `Deploy_MDC_${Date.now()}`, }); if (!metadataContainer.success) { - throw new DeployError('beta_tapi_mdcontainer_error'); + throw new SfError(messages.getMessage('beta_tapi_mdcontainer_error'), 'DeployError'); } return metadataContainer; } - public async createContainerMember( - outboundFiles: string[], - container: ToolingCreateResult - ): Promise { + public async createContainerMember(outboundFiles: string[], container: SaveResult): Promise { const id = container.id; const metadataContent = readFileSync(outboundFiles[1], 'utf8'); const metadataField = this.buildMetadataField(metadataContent); @@ -75,7 +79,7 @@ export class ContainerDeploy extends BaseDeploy { const containerMember = await this.toolingCreate(deployTypes.get(this.component.type.name), containerMemberObject); if (!containerMember.success) { - throw new DeployError('beta_tapi_membertype_error', this.component.type.name); + throw new SfError(messages.getMessage('beta_tapi_membertype_error', [this.component.type.name]), 'DeployError'); } return containerMember; } @@ -92,13 +96,13 @@ export class ContainerDeploy extends BaseDeploy { return queryResult && queryResult.records.length === 1 ? queryResult.records[0].Id : undefined; } - public async createContainerAsyncRequest(container: ToolingCreateResult): Promise { + public async createContainerAsyncRequest(container: SaveResult): Promise { const contAsyncRequest = await this.toolingCreate(ContainerDeploy.CONTAINER_ASYNC_REQUEST, { MetadataContainerId: container.id, }); if (!contAsyncRequest.success) { - throw new DeployError('beta_tapi_car_error'); + throw new SfError(messages.getMessage('beta_tapi_car_error'), 'DeployError'); } return contAsyncRequest; } @@ -126,31 +130,31 @@ export class ContainerDeploy extends BaseDeploy { diagnostics: [], }; - const messages: DeployMessage[] = []; + const deployMessages: DeployMessage[] = []; const { componentSuccesses, componentFailures } = containerRequest.DeployDetails; if (componentSuccesses) { if (Array.isArray(componentSuccesses)) { - messages.push(...componentSuccesses); + deployMessages.push(...componentSuccesses); } else { - messages.push(componentSuccesses); + deployMessages.push(componentSuccesses); } } if (componentFailures) { if (Array.isArray(componentFailures)) { - messages.push(...componentFailures); + deployMessages.push(...componentFailures); } else { - messages.push(componentFailures); + deployMessages.push(componentFailures); } } - for (const message of messages) { - if (message.changed) { + for (const message of deployMessages) { + if (message.changed === true || message.changed === 'true') { componentDeployment.status = ComponentStatus.Changed; - } else if (message.created) { + } else if (message.created === true || message.created === 'true') { componentDeployment.status = ComponentStatus.Created; - } else if (message.deleted) { + } else if (message.deleted === true || message.deleted === 'true') { componentDeployment.status = ComponentStatus.Deleted; - } else if (!message.success) { + } else if (message.success === false || message.success === 'false') { componentDeployment.status = ComponentStatus.Failed; componentDeployment.diagnostics.push({ error: message.problem, diff --git a/src/client/index.ts b/src/client/index.ts index 27c6da4edf..70583e8272 100644 --- a/src/client/index.ts +++ b/src/client/index.ts @@ -45,7 +45,6 @@ export { VFRecord, AuraRecord, LWCRecord, - ToolingCreateResult, AuraDefinition, LightningComponentResource, } from './types'; diff --git a/src/client/metadataApiDeploy.ts b/src/client/metadataApiDeploy.ts index ae3caf49ae..813514220d 100644 --- a/src/client/metadataApiDeploy.ts +++ b/src/client/metadataApiDeploy.ts @@ -8,13 +8,12 @@ import { basename, dirname, extname, join, posix, sep } from 'path'; import { isString } from '@salesforce/ts-types'; import { create as createArchive } from 'archiver'; import * as fs from 'graceful-fs'; -import { Lifecycle } from '@salesforce/core'; +import { Lifecycle, Messages, SfError } from '@salesforce/core'; import { MetadataConverter } from '../convert'; import { ComponentLike, SourceComponent } from '../resolve'; import { normalizeToArray } from '../utils'; import { ComponentSet } from '../collections'; import { registry } from '../registry'; -import { MissingJobIdError } from '../errors'; import { stream2buffer } from '../convert/streams'; import { MetadataTransfer, MetadataTransferOptions } from './metadataTransfer'; import { @@ -27,6 +26,10 @@ import { MetadataTransferResult, } from './types'; import { DiagnosticUtil } from './diagnosticUtil'; + +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_no_job_id']); + export class DeployResult implements MetadataTransferResult { public readonly response: MetadataApiDeployStatus; public readonly components: ComponentSet; @@ -43,26 +46,26 @@ export class DeployResult implements MetadataTransferResult { // this involves FS operations, so only perform once! if (!this.fileResponses) { // TODO: Log when messages can't be mapped to components - const messages = this.getDeployMessages(this.response); + const responseMessages = this.getDeployMessages(this.response); const fileResponses: FileResponse[] = []; if (this.components) { for (const deployedComponent of this.components.getSourceComponents()) { if (deployedComponent.type.children) { for (const child of deployedComponent.getChildren()) { - const childMessages = messages.get(this.key(child)); + const childMessages = responseMessages.get(this.key(child)); if (childMessages) { fileResponses.push(...this.createResponses(child, childMessages)); } } } - const componentMessages = messages.get(this.key(deployedComponent)); + const componentMessages = responseMessages.get(this.key(deployedComponent)); if (componentMessages) { fileResponses.push(...this.createResponses(deployedComponent, componentMessages)); } } - this.fileResponses = fileResponses.concat(this.deleteNotFoundToFileResponses(messages)); + this.fileResponses = fileResponses.concat(this.deleteNotFoundToFileResponses(responseMessages)); } else { // if no this.components, this was likely a metadata format deploy so we need to process // the componentSuccesses and componentFailures instead. @@ -90,11 +93,11 @@ export class DeployResult implements MetadataTransferResult { return this.fileResponses; } - private createResponses(component: SourceComponent, messages: DeployMessage[]): FileResponse[] { + private createResponses(component: SourceComponent, responseMessages: DeployMessage[]): FileResponse[] { const { fullName, type, xml, content } = component; const responses: FileResponse[] = []; - for (const message of messages) { + for (const message of responseMessages) { const baseResponse: Partial = { fullName, type: type.name, @@ -126,13 +129,13 @@ export class DeployResult implements MetadataTransferResult { } private getState(message: DeployMessage): ComponentStatus { - if (message.created === 'true') { + if (message.created === 'true' || message.created === true) { return ComponentStatus.Created; - } else if (message.changed === 'true') { + } else if (message.changed === 'true' || message.changed === true) { return ComponentStatus.Changed; - } else if (message.deleted === 'true') { + } else if (message.deleted === 'true' || message.deleted === true) { return ComponentStatus.Deleted; - } else if (message.success === 'false') { + } else if (message.success === 'false' || message.success === false) { return ComponentStatus.Failed; } return ComponentStatus.Unchanged; @@ -192,9 +195,9 @@ export class DeployResult implements MetadataTransferResult { */ private deleteNotFoundToFileResponses(messageMap: Map): FileResponse[] { const fileResponses: FileResponse[] = []; - messageMap.forEach((messages, key) => { + messageMap.forEach((responseMessages, key) => { if (key.includes('destructiveChanges') && key.endsWith('.xml')) { - messages.forEach((message) => { + responseMessages.forEach((message) => { if (message.problemType === 'Warning' && message.problem.startsWith(`No ${message.componentType} named: `)) { const fullName = message.problem.replace(`No ${message.componentType} named: `, '').replace(' found', ''); this.components @@ -273,7 +276,6 @@ export class MetadataApiDeploy extends MetadataTransfer { if (!this.id) { - throw new MissingJobIdError('deploy'); + throw new SfError(messages.getMessage('error_no_job_id', ['deploy']), 'MissingJobIdError'); } + const conn = await this.getConnection(); const response = (await conn.deployRecentValidation({ id: this.id, @@ -320,7 +323,7 @@ export class MetadataApiDeploy extends MetadataTransfer { if (!this.id) { - throw new MissingJobIdError('deploy'); + throw new SfError(messages.getMessage('error_no_job_id', ['deploy']), 'MissingJobIdError'); } const connection = await this.getConnection(); // Recasting to use the project's version of the type @@ -335,34 +338,26 @@ export class MetadataApiDeploy extends MetadataTransfer { if (!this.id) { - throw new MissingJobIdError('deploy'); + throw new SfError(messages.getMessage('error_no_job_id', ['deploy']), 'MissingJobIdError'); } const connection = await this.getConnection(); - await new Promise((resolve, reject) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,no-underscore-dangle - connection.metadata - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore _invoke is private on the jsforce metadata object, and cancelDeploy is not an exposed method - ._invoke('cancelDeploy', { id: this.id }) - .thenCall((result: unknown) => { - // this does not return CancelDeployResult as documented in the API. - // a null result seems to indicate the request was successful - if (result) { - reject(result); - } else { - resolve(result); - } - }); - }); + // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,no-underscore-dangle + await connection.metadata._invoke('cancelDeploy', { id: this.id }); } protected async pre(): Promise { - const zipBuffer = await this.getZipBuffer(); - const connection = await this.getConnection(); - await this.maybeSaveTempDirectory('metadata'); - return connection.deploy(zipBuffer, this.options.apiOptions); + const [zipBuffer, connection] = await Promise.all([ + this.getZipBuffer(), + this.getConnection(), + this.maybeSaveTempDirectory('metadata'), + ]); + // SDR modifies what the mdapi expects by adding a rest param + const { rest, ...optionsWithoutRest } = this.options.apiOptions; + return this.isRestDeploy + ? connection.metadata.deployRest(zipBuffer, optionsWithoutRest) + : connection.metadata.deploy(zipBuffer, optionsWithoutRest); } // eslint-disable-next-line @typescript-eslint/require-await diff --git a/src/client/metadataApiRetrieve.ts b/src/client/metadataApiRetrieve.ts index f22515a901..fab10de816 100644 --- a/src/client/metadataApiRetrieve.ts +++ b/src/client/metadataApiRetrieve.ts @@ -8,10 +8,10 @@ import * as path from 'path'; import * as fs from 'graceful-fs'; import * as unzipper from 'unzipper'; import { asBoolean, isString } from '@salesforce/ts-types'; +import { Messages, SfError } from '@salesforce/core'; import { ConvertOutputConfig, MetadataConverter } from '../convert'; import { ComponentSet } from '../collections'; import { SourceComponent, ZipTreeContainer } from '../resolve'; -import { MetadataApiRetrieveError, MissingJobIdError } from '../errors'; import { normalizeToArray } from '../utils'; import { RegistryAccess } from '../registry'; import { MetadataTransfer, MetadataTransferOptions } from './metadataTransfer'; @@ -28,6 +28,12 @@ import { RetrieveRequest, } from './types'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_no_job_id', + 'error_no_components_to_retrieve', +]); + export type MetadataApiRetrieveOptions = MetadataTransferOptions & RetrieveOptions & { registry?: RegistryAccess }; export class RetrieveResult implements MetadataTransferResult { @@ -125,7 +131,7 @@ export class MetadataApiRetrieve extends MetadataTransfer { if (!this.id) { - throw new MissingJobIdError('retrieve'); + throw new SfError(messages.getMessage('error_no_job_id', ['retrieve']), 'MissingJobIdError'); } const coerceBoolean = (field: unknown): boolean => { @@ -191,13 +197,13 @@ export class MetadataApiRetrieve extends MetadataTransfer { let retrieveResult: SourceRetrieveResult; if (options.components.size > 1) { - const retrieveError = new Error(); - retrieveError.message = nls.localize('tapi_retrieve_component_limit_error'); - retrieveError.name = 'MetadataRetrieveLimit'; - throw retrieveError; + throw new SfError(messages.getMessage('tapi_retrieve_component_limit_error'), 'MetadataRetrieveLimit'); } const mdComponent: SourceComponent = options.components.getSourceComponents().first(); if (!retrieveTypes.has(mdComponent.type.name)) { - const retrieveError = new Error(); - retrieveError.message = nls.localize('beta_tapi_membertype_unsupported_error', mdComponent.type.name); - retrieveError.name = 'MetadataTypeUnsupported'; - throw retrieveError; + throw new SfError( + messages.getMessage('beta_tapi_membertype_unsupported_error', [mdComponent.type.name]), + 'MetadataTypeUnsupported' + ); } try { @@ -86,7 +90,7 @@ export class ToolingApi { fullName: mdComponent.fullName, type: mdComponent.type, }, - message: nls.localize('error_md_not_present_in_org', mdComponent.fullName), + message: messages.getMessage('error_md_not_present_in_org', [mdComponent.fullName]), }, ], }; @@ -102,7 +106,8 @@ export class ToolingApi { failures: [], }; } catch (err) { - throw new Error(nls.localize('error_in_tooling_retrieve', err)); + const error = err as Error; + throw new SfError(messages.getMessage('error_in_tooling_retrieve'), error.name, [], err, err); } return retrieveResult; @@ -115,8 +120,7 @@ export class ToolingApi { let mdComponent: SourceComponent; if (Array.isArray(components)) { if (components.length > 1) { - const deployError = new SourceClientError('tapi_deploy_component_limit_error'); - throw deployError; + throw new SfError(messages.getMessage('tapi_deploy_component_limit_error'), 'SourceClientError'); } mdComponent = components[0]; } else { @@ -125,7 +129,10 @@ export class ToolingApi { const metadataType = mdComponent.type.name; if (!deployTypes.get(metadataType)) { - throw new SourceClientError('beta_tapi_membertype_unsupported_error', metadataType); + throw new SfError( + messages.getMessage('beta_tapi_membertype_unsupported_error', [metadataType]), + 'SourceClientError' + ); } const deployStrategy = getDeployStrategy(metadataType, this.connection); diff --git a/src/client/types.ts b/src/client/types.ts index d031a45e09..3f0e58f846 100644 --- a/src/client/types.ts +++ b/src/client/types.ts @@ -4,6 +4,7 @@ * Licensed under the BSD 3-Clause license. * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ +import { SaveResult } from 'jsforce'; import { ComponentSet } from '../collections'; import { PackageTypeMembers } from '../collections/types'; import { SourcePath } from '../common/types'; @@ -446,13 +447,11 @@ export interface ListMetadataQuery { folder?: string; } -export interface ToolingCreateResult { +export type ToolingCreateResult = SaveResult & { id: string; - success: boolean; - errors: string[]; name: string; message: string; -} +}; export interface AuraDefinition { FilePath: string; diff --git a/src/collections/componentSet.ts b/src/collections/componentSet.ts index cc5ce01048..13f26927eb 100644 --- a/src/collections/componentSet.ts +++ b/src/collections/componentSet.ts @@ -6,7 +6,7 @@ */ /* eslint @typescript-eslint/unified-signatures:0 */ import { j2xParser } from 'fast-xml-parser'; -import { AuthInfo, Connection, Logger } from '@salesforce/core'; +import { AuthInfo, Connection, Logger, Messages, SfError } from '@salesforce/core'; import { MetadataApiDeploy, MetadataApiDeployOptions, @@ -14,7 +14,6 @@ import { MetadataApiRetrieveOptions, } from '../client'; import { XML_DECL, XML_NS_KEY, XML_NS_URL } from '../common'; -import { ComponentSetError } from '../errors'; import { ComponentLike, ManifestResolver, @@ -25,7 +24,7 @@ import { SourceComponent, TreeContainer, } from '../resolve'; -import { MetadataType, RegistryAccess } from '../registry'; +import { getCurrentApiVersion, MetadataType, RegistryAccess } from '../registry'; import { DestructiveChangesType, FromManifestOptions, @@ -36,6 +35,9 @@ import { } from './types'; import { LazyCollection } from './lazyCollection'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_no_source_to_deploy']); + export type DeploySetOptions = Omit; export type RetrieveSetOptions = Omit; @@ -79,7 +81,6 @@ export class ComponentSet extends LazyCollection { public constructor(components: Iterable = [], registry = new RegistryAccess()) { super(); this.registry = registry; - this.apiVersion = this.registry.apiVersion; this.logger = Logger.childFromRoot(this.constructor.name); for (const component of components) { @@ -281,7 +282,7 @@ export class ComponentSet extends LazyCollection { const toDeploy = Array.from(this.getSourceComponents()); if (toDeploy.length === 0) { - throw new ComponentSetError('error_no_source_to_deploy'); + throw new SfError(messages.getMessage('error_no_source_to_deploy'), 'ComponentSetError'); } const operationOptions = Object.assign({}, options, { @@ -289,6 +290,9 @@ export class ComponentSet extends LazyCollection { registry: this.registry, apiVersion: this.apiVersion, }); + if (!options.apiVersion && !this.apiVersion && !this.sourceApiVersion) { + operationOptions.apiVersion = `${await getCurrentApiVersion()}.0`; + } const mdapiDeploy = new MetadataApiDeploy(operationOptions); await mdapiDeploy.start(); @@ -320,7 +324,9 @@ export class ComponentSet extends LazyCollection { * @param destructiveType Optional value for generating objects representing destructive change manifests * @returns Object representation of a package manifest */ - public getObject(destructiveType?: DestructiveChangesType): PackageManifestObject { + public async getObject(destructiveType?: DestructiveChangesType): Promise { + const version = this.sourceApiVersion ?? this.apiVersion ?? `${await getCurrentApiVersion()}.0`; + // If this ComponentSet has components marked for delete, we need to // only include those components in a destructiveChanges.xml and // all other components in the regular manifest. @@ -374,17 +380,16 @@ export class ComponentSet extends LazyCollection { typeMembers.push({ members: members.sort(), name: typeName }); } - const pkg: PackageManifestObject = { + const pkg = { Package: { - types: typeMembers.sort((a, b) => (a.name > b.name ? 1 : -1)), - version: this.sourceApiVersion || this.apiVersion, + ...{ + types: typeMembers.sort((a, b) => (a.name > b.name ? 1 : -1)), + version, + }, + ...(this.fullName ? { fullName: this.fullName } : {}), }, }; - if (this.fullName) { - pkg.Package.fullName = this.fullName; - } - return pkg; } @@ -397,13 +402,13 @@ export class ComponentSet extends LazyCollection { * @param indentation Number of spaces to indent lines by. * @param forDestructiveChanges Whether to build a manifest for destructive changes. */ - public getPackageXml(indentation = 4, destructiveType?: DestructiveChangesType): string { + public async getPackageXml(indentation = 4, destructiveType?: DestructiveChangesType): Promise { const j2x = new j2xParser({ format: true, indentBy: new Array(indentation + 1).join(' '), ignoreAttributes: false, }); - const toParse = this.getObject(destructiveType); + const toParse = await this.getObject(destructiveType); toParse.Package[XML_NS_KEY] = XML_NS_URL; return XML_DECL.concat(j2x.parse(toParse)); } diff --git a/src/collections/componentSetBuilder.ts b/src/collections/componentSetBuilder.ts index 0343e02c08..1901a5e8c2 100644 --- a/src/collections/componentSetBuilder.ts +++ b/src/collections/componentSetBuilder.ts @@ -8,7 +8,7 @@ /* eslint complexity: ["error", 22] */ import * as path from 'path'; -import { Aliases, Logger, SfdxError } from '@salesforce/core'; +import { GlobalInfo, Logger, SfError } from '@salesforce/core'; import * as fs from 'graceful-fs'; import { ComponentSet } from '../collections'; import { RegistryAccess } from '../registry'; @@ -59,7 +59,7 @@ export class ComponentSetBuilder { logger.debug(`Building ComponentSet from sourcepath: ${sourcepath.join(', ')}`); const fsPaths: string[] = sourcepath.map((filepath) => { if (!fs.existsSync(filepath)) { - throw new SfdxError(`The sourcepath "${filepath}" is not a valid source file path.`); + throw new SfError(`The sourcepath "${filepath}" is not a valid source file path.`); } return path.resolve(filepath); }); @@ -123,7 +123,7 @@ export class ComponentSetBuilder { logger.debug(`Building ComponentSet from targetUsername: ${org.username}`); const fromConnection = await ComponentSet.fromConnection({ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment - usernameOrConnection: (await Aliases.fetch(org.username)) || org.username, + usernameOrConnection: (await GlobalInfo.getInstance()).aliases.getUsername(org.username) || org.username, // exclude components based on the results of componentFilter function // components with namespacePrefix where org.exclude includes manageableState (to exclude managed packages) // components with namespacePrefix where manageableState equals undefined (to exclude components e.g. InstalledPackage) @@ -140,7 +140,7 @@ export class ComponentSetBuilder { // to remain generic to catch missing metadata types regardless of parameters, split on ' // example message : Missing metadata type definition in registry for id 'NonExistentType' const issueType = (e as Error).message.split("'")[1]; - throw new SfdxError(`The specified metadata type is unsupported: [${issueType}]`); + throw new SfError(`The specified metadata type is unsupported: [${issueType}]`); } else { throw e; } diff --git a/src/convert/metadataConverter.ts b/src/convert/metadataConverter.ts index f0378a0296..f7a241bac1 100644 --- a/src/convert/metadataConverter.ts +++ b/src/convert/metadataConverter.ts @@ -5,16 +5,22 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import { dirname, join, normalize } from 'path'; +import { Messages, SfError } from '@salesforce/core'; import { promises } from 'graceful-fs'; import { SourceComponent } from '../resolve'; import { ensureDirectoryExists } from '../utils/fileSystemHandler'; -import { ConversionError, LibraryError } from '../errors'; import { SourcePath } from '../common'; import { ComponentSet, DestructiveChangesType } from '../collections'; import { RegistryAccess } from '../registry'; -import { ComponentConverter, ComponentReader, ComponentWriter, pipeline, StandardWriter, ZipWriter } from './streams'; +import { ComponentConverter, ComponentReader, pipeline, StandardWriter, ZipWriter } from './streams'; import { ConvertOutputConfig, ConvertResult, DirectoryConfig, SfdxFileFormat, ZipConfig } from './types'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_failed_convert', + 'error_merge_metadata_target_unsupported', +]); + export class MetadataConverter { public static readonly PACKAGE_XML_FILE = 'package.xml'; public static readonly DESTRUCTIVE_CHANGES_POST_XML_FILE = 'destructiveChangesPost.xml'; @@ -39,9 +45,9 @@ export class MetadataConverter { let manifestContents; const isSource = targetFormat === 'source'; - const tasks = []; + const tasks: Array> = []; - let writer: ComponentWriter; + let writer: StandardWriter | ZipWriter; let mergeSet: ComponentSet; let packagePath: SourcePath; let defaultDirectory: SourcePath; @@ -51,53 +57,48 @@ export class MetadataConverter { if (output.packageName) { cs.fullName = output.packageName; } - manifestContents = cs.getPackageXml(); + manifestContents = await cs.getPackageXml(); packagePath = this.getPackagePath(output); defaultDirectory = packagePath; writer = new StandardWriter(packagePath); if (!isSource) { const manifestPath = join(packagePath, MetadataConverter.PACKAGE_XML_FILE); - tasks.push(promises.writeFile(manifestPath, manifestContents)); - // For deploying destructive changes - const destructiveChangesTypes = cs.getTypesOfDestructiveChanges(); - if (destructiveChangesTypes.length) { - // for each of the destructive changes in the component set, convert and write the correct metadata - // to each manifest - destructiveChangesTypes.map((destructiveChangesType) => { - const file = this.getDestructiveManifest(destructiveChangesType); - const destructiveManifestContents = cs.getPackageXml(4, destructiveChangesType); - const destructiveManifestPath = join(packagePath, file); - tasks.push(promises.writeFile(destructiveManifestPath, destructiveManifestContents)); - }); - } + tasks.push( + promises.writeFile(manifestPath, manifestContents), + ...cs.getTypesOfDestructiveChanges().map(async (destructiveChangesType) => + // for each of the destructive changes in the component set, convert and write the correct metadata + // to each manifest + promises.writeFile( + join(packagePath, this.getDestructiveManifest(destructiveChangesType)), + await cs.getPackageXml(4, destructiveChangesType) + ) + ) + ); } break; case 'zip': if (output.packageName) { cs.fullName = output.packageName; } - manifestContents = cs.getPackageXml(); + manifestContents = await cs.getPackageXml(); packagePath = this.getPackagePath(output); defaultDirectory = packagePath; writer = new ZipWriter(packagePath); if (!isSource) { - (writer as ZipWriter).addToZip(manifestContents, MetadataConverter.PACKAGE_XML_FILE); - // For deploying destructive changes - const destructiveChangesTypes = cs.getTypesOfDestructiveChanges(); - if (destructiveChangesTypes.length) { - // for each of the destructive changes in the component set, convert and write the correct metadata - // to each manifest - destructiveChangesTypes.map((destructiveChangeType) => { - const file = this.getDestructiveManifest(destructiveChangeType); - const destructiveManifestContents = cs.getPackageXml(4, destructiveChangeType); - (writer as ZipWriter).addToZip(destructiveManifestContents, file); - }); + writer.addToZip(manifestContents, MetadataConverter.PACKAGE_XML_FILE); + // for each of the destructive changes in the component set, convert and write the correct metadata + // to each manifest + for (const destructiveChangeType of cs.getTypesOfDestructiveChanges()) { + writer.addToZip( + await cs.getPackageXml(4, destructiveChangeType), + this.getDestructiveManifest(destructiveChangeType) + ); } } break; case 'merge': if (!isSource) { - throw new LibraryError('error_merge_metadata_target_unsupported'); + throw new SfError(messages.getMessage('error_merge_metadata_target_unsupported')); } defaultDirectory = output.defaultDirectory; mergeSet = new ComponentSet(); @@ -115,8 +116,7 @@ export class MetadataConverter { new ComponentConverter(targetFormat, this.registry, mergeSet, defaultDirectory), writer ); - tasks.push(conversionPipeline); - await Promise.all(tasks); + await Promise.all([conversionPipeline, ...tasks]); const result: ConvertResult = { packagePath }; if (output.type === 'zip' && !packagePath) { @@ -126,7 +126,12 @@ export class MetadataConverter { } return result; } catch (e) { - throw new ConversionError(e); + throw new SfError( + messages.getMessage('error_failed_convert', [(e as Error).message]), + 'ConversionError', + [], + e as Error + ); } } diff --git a/src/convert/streams.ts b/src/convert/streams.ts index ecca267114..3104214d77 100644 --- a/src/convert/streams.ts +++ b/src/convert/streams.ts @@ -7,6 +7,7 @@ import { basename, dirname, isAbsolute, join } from 'path'; import { pipeline as cbPipeline, Readable, Stream, Transform, Writable } from 'stream'; import { promisify } from 'util'; +import { Messages, SfError } from '@salesforce/core'; import { Archiver, create as createArchive } from 'archiver'; import { createWriteStream, existsSync } from 'graceful-fs'; import { JsonMap } from '@salesforce/ts-types'; @@ -15,13 +16,15 @@ import { Logger } from '@salesforce/core'; import { MetadataResolver, SourceComponent } from '../resolve'; import { SourcePath, XML_DECL } from '../common'; import { ComponentSet } from '../collections'; -import { LibraryError } from '../errors'; import { RegistryAccess } from '../registry'; import { ensureFileExists } from '../utils/fileSystemHandler'; import { MetadataTransformerFactory } from './transformers'; import { ConvertContext } from './convertContext'; import { SfdxFileFormat, WriteInfo, WriterFormat } from './types'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_convert_invalid_format']); + export const pipeline = promisify(cbPipeline); export const stream2buffer = async (stream: Stream): Promise => { @@ -109,7 +112,7 @@ export class ComponentConverter extends Transform { converts.push(transformer.toMetadataFormat(chunk)); break; default: - throw new LibraryError('error_convert_invalid_format', this.targetFormat); + throw new SfError(messages.getMessage('error_convert_invalid_format', [this.targetFormat]), 'LibraryError'); } // could maybe improve all this with lazy async collections... (await Promise.all(converts)).forEach((infos) => writeInfos.push(...infos)); diff --git a/src/convert/transformers/metadataTransformerFactory.ts b/src/convert/transformers/metadataTransformerFactory.ts index f410e53ac0..f5731a01a4 100644 --- a/src/convert/transformers/metadataTransformerFactory.ts +++ b/src/convert/transformers/metadataTransformerFactory.ts @@ -4,7 +4,7 @@ * Licensed under the BSD 3-Clause license. * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { RegistryError } from '../../errors'; +import { Messages, SfError } from '@salesforce/core'; import { MetadataTransformer } from '../types'; import { SourceComponent } from '../../resolve/sourceComponent'; import { ConvertContext } from '../convertContext'; @@ -14,6 +14,9 @@ import { DecomposedMetadataTransformer } from './decomposedMetadataTransformer'; import { StaticResourceMetadataTransformer } from './staticResourceMetadataTransformer'; import { NonDecomposedMetadataTransformer } from './nonDecomposedMetadataTransformer'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_missing_transformer']); + export class MetadataTransformerFactory { private registry: RegistryAccess; private context: ConvertContext; @@ -38,7 +41,10 @@ export class MetadataTransformerFactory { case TransformerStrategy.NonDecomposed: return new NonDecomposedMetadataTransformer(this.registry, this.context); default: - throw new RegistryError('error_missing_transformer', [type.name, transformerId]); + throw new SfError( + messages.getMessage('error_missing_transformer', [type.name, transformerId]), + 'RegistryError' + ); } } } diff --git a/src/convert/transformers/staticResourceMetadataTransformer.ts b/src/convert/transformers/staticResourceMetadataTransformer.ts index 2db82444ec..67021a2684 100644 --- a/src/convert/transformers/staticResourceMetadataTransformer.ts +++ b/src/convert/transformers/staticResourceMetadataTransformer.ts @@ -11,15 +11,21 @@ import { getExtension } from 'mime'; import { Open } from 'unzipper'; import { JsonMap } from '@salesforce/ts-types'; import { createWriteStream } from 'graceful-fs'; +import { Messages, SfError } from '@salesforce/core'; import { baseName } from '../../utils'; import { WriteInfo } from '..'; -import { LibraryError } from '../../errors'; import { SourceComponent } from '../../resolve'; import { SourcePath } from '../../common'; import { ensureFileExists } from '../../utils/fileSystemHandler'; import { pipeline } from '../streams'; import { BaseMetadataTransformer } from './baseMetadataTransformer'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_static_resource_expected_archive_type', + 'error_static_resource_missing_resource_file', +]); + export class StaticResourceMetadataTransformer extends BaseMetadataTransformer { public static readonly ARCHIVE_MIME_TYPES = new Set([ 'application/zip', @@ -143,7 +149,10 @@ export class StaticResourceMetadataTransformer extends BaseMetadataTransformer { if (StaticResourceMetadataTransformer.ARCHIVE_MIME_TYPES.has(contentType)) { return true; } - throw new LibraryError('error_static_resource_expected_archive_type', [contentType, component.name]); + throw new SfError( + messages.getMessage('error_static_resource_expected_archive_type', [contentType, component.name]), + 'LibraryError' + ); } return false; } @@ -152,7 +161,10 @@ export class StaticResourceMetadataTransformer extends BaseMetadataTransformer { const resource = (await component.parseXml()).StaticResource as JsonMap; if (!resource || !Object.prototype.hasOwnProperty.call(resource, 'contentType')) { - throw new LibraryError('error_static_resource_missing_resource_file', [join('staticresources', component.name)]); + throw new SfError( + messages.getMessage('error_static_resource_missing_resource_file', [join('staticresources', component.name)]), + 'LibraryError' + ); } return resource.contentType as string; diff --git a/src/errors/index.ts b/src/errors/index.ts deleted file mode 100644 index c587c39e29..0000000000 --- a/src/errors/index.ts +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2020, 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 { nls } from '../i18n'; -import { SourcePath } from '../common'; -import { MetadataType } from '../registry'; - -export class LibraryError extends Error { - public constructor(messageKey: string, args?: string | string[]) { - super(nls.localize(messageKey, args)); - this.name = this.constructor.name; - Error.captureStackTrace(this, this.constructor); - } -} - -export class RegistryError extends LibraryError { - public constructor(messageKey: string, args?: string | string[]) { - super(messageKey, args); - } -} - -export class TypeInferenceError extends RegistryError { - public constructor(messageKey: string, args?: string | string[]) { - super(messageKey, args); - } -} - -export class ExpectedSourceFilesError extends RegistryError { - public constructor(type: MetadataType, originalPath: SourcePath, messageKey = 'error_expected_source_files') { - super(messageKey, [originalPath, type.name]); - } -} - -export class UnexpectedForceIgnore extends RegistryError { - public constructor(messageKey: string, args?: string | string[]) { - super(messageKey, args); - } -} - -export class SourceClientError extends LibraryError { - public constructor(messageKey: string, args?: string | string[]) { - super(messageKey, args); - } -} - -export class DeployError extends SourceClientError { - public constructor(messageKey: string, args?: string | string[]) { - super(messageKey, args); - } -} - -export class MetadataTransferError extends LibraryError { - public constructor(messageKey: string, args?: string | string[]) { - super(messageKey, args); - } -} - -/** - * A wrapper for any errors thrown in the conversion pipeline - */ -export class ConversionError extends LibraryError { - public constructor(originalError: Error) { - super('error_failed_convert', originalError.message); - this.stack = originalError.stack; - } -} - -export class ComponentSetError extends LibraryError { - public constructor(messageKey: string, args?: string | string[]) { - super(messageKey, args); - } -} - -export class MetadataApiRetrieveError extends LibraryError { - public constructor(messageKey: string, args?: string | string[]) { - super(messageKey, args); - } -} - -export class MissingJobIdError extends LibraryError { - public constructor(operation: string) { - super('error_no_job_id', [operation]); - } -} diff --git a/src/i18n/i18n.ts b/src/i18n/i18n.ts deleted file mode 100644 index 69e89af08a..0000000000 --- a/src/i18n/i18n.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2020, salesforce.com, inc. - * All rights reserved. - * Licensed under the BSD 3-Clause license. - * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause - */ -/* eslint camelcase: 0 */ -/** - * Conventions: - * _message: is for unformatted text that will be shown as-is to - * the user. - * _text: is for text that will appear in the UI, possibly with - * decorations, e.g., $(x) uses the https://octicons.github.com/ and should not - * be localized - * - * If ommitted, we will assume _message. - */ -export const messages = { - md_request_fail: 'Metadata API request failed: %s', - md_request_timeout: 'Metadata API request timed out', - registry_error_missing_type_definition: 'Missing metadata type definition for %s', - registry_error_file_not_found: 'File not found %s', - registry_error_missing_metadata_xml: 'Metadata xml file missing for %s', - registry_error_unsupported_type: 'Types missing a defined suffix are currently unsupported', - beta_tapi_mdcontainer_error: 'Unexpected error creating metadata container', - beta_tapi_membertype_error: 'Unexpected error creating %s member', - beta_tapi_car_error: 'Unexpected error creating container async request', - beta_tapi_queue_status: 'The deploy is still in the queue', - beta_tapi_membertype_unsupported_error: "'%s' type not supported", - error_convert_invalid_format: "Invalid conversion format '%s'", - error_convert_not_implemented: '%s format conversion not yet implemented for type %s', - error_could_not_infer_type: '%s: Could not infer a metadata type', - error_unexpected_child_type: 'Unexpected child metadata [%s] found for parent type [%s]', - error_expected_source_files: "%s: Expected source files for type '%s'", - error_failed_convert: 'Component conversion failed: %s', - error_merge_metadata_target_unsupported: 'Merge convert for metadata target format currently unsupported', - error_in_tooling_retrieve: 'Unexpected error while retrieving using Tooling API. Stack trace: %s', - error_md_not_present_in_org: '%s was not found in org', - error_missing_adapter: "Missing adapter '%s' for metadata type '%s'", - error_missing_transformer: "Missing transformer '%s' for metadata type '%s'", - error_missing_metadata_xml: "%s: Metadata xml file missing for '%s'", - error_unsupported_content_metadata_xml: "%s: Unsupported content xml file for '%s'", - error_missing_type_definition: "Missing metadata type definition in registry for id '%s'.", - error_missing_child_type_definition: 'Type %s does not have a child type definition %s.', - error_no_metadata_xml_ignore: 'Metadata xml file %s is forceignored but is required for %s.', - error_no_source_ignore: - '%s metadata types require source files, but %s is forceignored. \n\tACTION: Metadata types with content are composed of two files: a content file (ie MyApexClass.cls) and a -meta.xml file (i.e MyApexClass.cls-meta.xml). You must include both files in your .forceignore file. Or try appending “*” to your existing .forceignore entry.', - error_path_not_found: '%s: File or folder not found', - tapi_retrieve_component_limit_error: 'This retrieve method only supports retrieving one metadata component at a time', - error_on_manifest_creation: "Unexpected error while creating manifest for '%s'. Stack trace: %s", - error_creating_metadata_type: "Unexpected error creating '%s'", - error_updating_metadata_type: "Unexpected error updating '%s'", - error_parsing_metadata_file: 'Error parsing metadata file', - error_parsing_xml: 'SourceComponent %s does not have an associated metadata xml to parse', - error_expected_file_path: '%s: path is to a directory, expected a file', - error_expected_directory_path: '%s: path is to a file, expected a directory', - error_no_directory_stream: "%s doesn't support readable streams on directories.", - error_no_source_to_deploy: 'No source-backed components present in the package.', - error_no_components_to_retrieve: 'No components in the package to retrieve.', - error_invalid_package: "The metadata package wasn't properly initialized.", - error_static_resource_expected_archive_type: - 'A StaticResource directory must have a content type of application/zip or application/jar - found %s for %s.', - error_static_resource_missing_resource_file: - 'A StaticResource must have an associated .resource file, missing %s.resource-meta.xml', - error_no_job_id: 'The %s operation is missing a job ID. Initialize an operation with an ID, or start a new job.', - tapi_deploy_component_limit_error: 'This deploy method only supports deploying one metadata component at a time', - warn_unresolved_source_for_components: 'The following components will not be deployed due to unresolved source: %s', - invalid_xml_parsing: 'error parsing %s due to:\n message: %s\n line: %s\n code: %s', -}; diff --git a/src/i18n/index.ts b/src/i18n/index.ts deleted file mode 100644 index ea6f2e25d0..0000000000 --- a/src/i18n/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2020, 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 { messages } from './i18n'; -import { Localization, Message } from './localization'; - -function loadMessageBundle(): Message { - try { - return new Message(messages); - } catch (e) { - process.emitWarning('Cannot find messages in i18n module'); - } -} - -export const nls = new Localization(loadMessageBundle()); -export { Localization, Message } from './localization'; diff --git a/src/i18n/localization.ts b/src/i18n/localization.ts deleted file mode 100644 index cf69c7fee8..0000000000 --- a/src/i18n/localization.ts +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2020, 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 util from 'util'; - -const MISSING_LABEL_MSG = '!!! MISSING LABEL !!!'; -// tslint:disable: no-any -export interface LocalizationProvider { - localize(label: string, args?: string | string[]): string; -} - -export class Localization implements LocalizationProvider { - private readonly delegate: Message; - - public constructor(delegate: Message) { - this.delegate = delegate; - } - - public localize(label: string, args?: string | string[]): string { - return this.delegate.localize(label, args); - } -} - -export type MessageBundle = { - readonly [index: string]: string; -}; - -export class Message implements LocalizationProvider { - private readonly messages: MessageBundle; - - public constructor(messages: MessageBundle) { - this.messages = messages; - } - - public localize(label: string, args?: string | string[]): string { - let possibleLabel = this.getLabel(label); - - if (typeof args === 'undefined' && possibleLabel) { - return possibleLabel; - } - - // Note: We are getting an array of arrays when we want to consume the ...args param - // e.g. [['value1', 'value2']] - if (typeof args !== 'undefined' && Array.isArray(args)) { - args = args[0].constructor === Array ? args[0] : args; - } else if (typeof args !== 'undefined' && !Array.isArray(args)) { - args = [args]; - } - - if (!possibleLabel) { - process.emitWarning(`Missing label for key: ${label}`); - possibleLabel = `${MISSING_LABEL_MSG} ${label}`; - - if (Array.isArray(args) && args.length >= 1) { - args.forEach((arg) => { - possibleLabel += ` (${arg})`; - }); - } - return possibleLabel; - } - - if (Array.isArray(args) && args.length >= 1) { - const expectedNumArgs = possibleLabel.split('%s').length - 1; - if (args.length !== expectedNumArgs) { - // just log it, we might want to hide some in some languages on purpose - process.emitWarning( - `Arguments do not match for label '${label}', got ${args.length} but want ${expectedNumArgs}` - ); - } - - args.unshift(possibleLabel); - // eslint-disable-next-line prefer-spread,@typescript-eslint/no-unsafe-return - return util.format.apply(util, args); - } - - return possibleLabel; - } - - private getLabel(label: string): string | undefined { - if (this.messages[label]) { - return this.messages[label]; - } else { - return undefined; - } - } -} diff --git a/src/index.ts b/src/index.ts index 0c94eff258..a809c48095 100644 --- a/src/index.ts +++ b/src/index.ts @@ -50,7 +50,6 @@ export { VFRecord, AuraRecord, LWCRecord, - ToolingCreateResult, AuraDefinition, LightningComponentResource, } from './client'; @@ -101,6 +100,7 @@ export { export { RegistryAccess, registry, + getCurrentApiVersion, MetadataRegistry, MetadataType, DecompositionStrategy, diff --git a/src/registry/index.ts b/src/registry/index.ts index 4213d0e22f..f214188211 100644 --- a/src/registry/index.ts +++ b/src/registry/index.ts @@ -7,6 +7,7 @@ export { registry } from './registry'; export { standardValueSet } from './standardvalueset'; export { RegistryAccess } from './registryAccess'; +export { getCurrentApiVersion } from './coverage'; export { MetadataRegistry, MetadataType, diff --git a/src/registry/metadataRegistry.json b/src/registry/metadataRegistry.json index eff4b944f8..272c1d46ca 100644 --- a/src/registry/metadataRegistry.json +++ b/src/registry/metadataRegistry.json @@ -1684,7 +1684,7 @@ "suffix": "xml", "directoryName": "emailservices", "inFolder": false, - "strictDirectoryName": false + "strictDirectoryName": true }, "integrationhubsettingstype": { "id": "integrationhubsettingstype", @@ -3376,7 +3376,8 @@ "fieldRestrictionRules": "fieldrestrictionrule", "siteDotComSites": "sitedotcom", "appointmentSchedulingPolicies": "appointmentschedulingpolicy", - "appointmentAssignmentPolicies": "appointmentassignmentpolicy" + "appointmentAssignmentPolicies": "appointmentassignmentpolicy", + "emailservices": "emailservicesfunction" }, "childTypes": { "customlabel": "customlabels", @@ -3412,6 +3413,5 @@ "customfieldtranslation": "customobjecttranslation", "datamappingfielddefinition": "datamappingobjectdefinition", "mktdatatranfield": "mktdatatranobject" - }, - "apiVersion": "54.0" + } } diff --git a/src/registry/registryAccess.ts b/src/registry/registryAccess.ts index 44eaa34310..c0a8dd7bc6 100644 --- a/src/registry/registryAccess.ts +++ b/src/registry/registryAccess.ts @@ -4,13 +4,20 @@ * 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 { RegistryError } from '../errors'; +import { Messages, SfError } from '@salesforce/core'; import { registry as defaultRegistry } from './registry'; import { MetadataRegistry, MetadataType } from './types'; /** * Container for querying metadata registry data. */ + +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_missing_child_type_definition', + 'error_missing_type_definition', +]); + export class RegistryAccess { private registry: MetadataRegistry; @@ -36,10 +43,13 @@ export class RegistryAccess { if (childType) { return childType; } - throw new RegistryError('error_missing_child_type_definition', [parentTypeId, lower]); + throw new SfError( + messages.getMessage('error_missing_child_type_definition', [parentTypeId, lower]), + 'RegistryError' + ); } if (!this.registry.types[lower]) { - throw new RegistryError('error_missing_type_definition', lower); + throw new SfError(messages.getMessage('error_missing_type_definition', [lower]), 'RegistryError'); } // redirect via alias return this.registry.types[lower].aliasFor @@ -119,8 +129,4 @@ export class RegistryAccess { } return this.aliasTypes; } - - public get apiVersion(): string { - return this.registry.apiVersion; - } } diff --git a/src/registry/types.ts b/src/registry/types.ts index 958b195e50..454b14b178 100644 --- a/src/registry/types.ts +++ b/src/registry/types.ts @@ -18,7 +18,6 @@ export interface MetadataRegistry { childTypes: { [childTypeId: string]: string; }; - apiVersion: string; } /** diff --git a/src/resolve/adapters/baseSourceAdapter.ts b/src/resolve/adapters/baseSourceAdapter.ts index e77e7789e8..c29844b35f 100644 --- a/src/resolve/adapters/baseSourceAdapter.ts +++ b/src/resolve/adapters/baseSourceAdapter.ts @@ -5,15 +5,18 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import { basename, dirname, sep } from 'path'; +import { Messages, SfError } from '@salesforce/core'; import { MetadataXml, SourceAdapter } from '../types'; import { parseMetadataXml, parseNestedFullName } from '../../utils'; -import { UnexpectedForceIgnore } from '../../errors'; import { ForceIgnore } from '../forceIgnore'; import { NodeFSTreeContainer, TreeContainer } from '../treeContainers'; import { SourceComponent } from '../sourceComponent'; import { SourcePath } from '../../common'; import { MetadataType, RegistryAccess } from '../../registry'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_no_metadata_xml_ignore']); + export abstract class BaseSourceAdapter implements SourceAdapter { protected type: MetadataType; protected registry: RegistryAccess; @@ -48,7 +51,10 @@ export abstract class BaseSourceAdapter implements SourceAdapter { } } if (rootMetadata && this.forceIgnore.denies(rootMetadata.path)) { - throw new UnexpectedForceIgnore('error_no_metadata_xml_ignore', [rootMetadata.path, path]); + throw new SfError( + messages.getMessage('error_no_metadata_xml_ignore', [rootMetadata.path, path]), + 'UnexpectedForceIgnore' + ); } let component: SourceComponent; diff --git a/src/resolve/adapters/decomposedSourceAdapter.ts b/src/resolve/adapters/decomposedSourceAdapter.ts index 771166ec39..49da57c976 100644 --- a/src/resolve/adapters/decomposedSourceAdapter.ts +++ b/src/resolve/adapters/decomposedSourceAdapter.ts @@ -4,13 +4,16 @@ * 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 { Messages, SfError } from '@salesforce/core'; import { SourcePath } from '../../common'; import { SourceComponent } from '../sourceComponent'; import { baseName, parentName, parseMetadataXml } from '../../utils'; import { DecompositionStrategy } from '../../registry'; -import { TypeInferenceError } from '../../errors'; import { MixedContentSourceAdapter } from './mixedContentSourceAdapter'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_unexpected_child_type']); + /** * Handles decomposed types. A flavor of mixed content where a component can * have additional -meta.xml files that represent child components of the main @@ -112,7 +115,10 @@ export class DecomposedSourceAdapter extends MixedContentSourceAdapter { if (!component) { // This is most likely metadata found within a CustomObject folder that is not a // child type of CustomObject. E.g., Layout, SharingRules, ApexClass. - throw new TypeInferenceError('error_unexpected_child_type', [trigger, this.type.name]); + throw new SfError( + messages.getMessage('error_unexpected_child_type', [trigger, this.type.name]), + 'TypeInferenceError' + ); } } if (component) { diff --git a/src/resolve/adapters/matchingContentSourceAdapter.ts b/src/resolve/adapters/matchingContentSourceAdapter.ts index e57bec8513..b8ffd57230 100644 --- a/src/resolve/adapters/matchingContentSourceAdapter.ts +++ b/src/resolve/adapters/matchingContentSourceAdapter.ts @@ -4,12 +4,19 @@ * 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 { ExpectedSourceFilesError, UnexpectedForceIgnore } from '../../errors'; +import { Messages, SfError } from '@salesforce/core'; + import { SourcePath, META_XML_SUFFIX } from '../../common'; import { extName } from '../../utils/path'; import { SourceComponent } from '../sourceComponent'; import { BaseSourceAdapter } from './baseSourceAdapter'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_no_source_ignore', + 'error_expected_source_files', +]); + /** * Handles types with a single content file with a matching file extension. * @@ -43,9 +50,16 @@ export class MatchingContentSourceAdapter extends BaseSourceAdapter { } if (!sourcePath) { - throw new ExpectedSourceFilesError(this.type, trigger); + throw new SfError( + messages.getMessage('error_expected_source_files', [trigger, this.type.name]), + 'ExpectedSourceFilesError' + ); + // throw new ExpectedSourceFilesError(this.type, trigger); } else if (this.forceIgnore.denies(sourcePath)) { - throw new UnexpectedForceIgnore('error_no_source_ignore', [this.type.name, sourcePath]); + throw new SfError( + messages.getMessage('error_no_source_ignore', [this.type.name, sourcePath]), + 'UnexpectedForceIgnore' + ); } component.content = sourcePath; diff --git a/src/resolve/adapters/mixedContentSourceAdapter.ts b/src/resolve/adapters/mixedContentSourceAdapter.ts index 6a6b82b564..ead45d14e3 100644 --- a/src/resolve/adapters/mixedContentSourceAdapter.ts +++ b/src/resolve/adapters/mixedContentSourceAdapter.ts @@ -5,12 +5,14 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import { dirname, basename, sep } from 'path'; -import { ExpectedSourceFilesError } from '../../errors'; +import { Messages, SfError } from '@salesforce/core'; import { baseName } from '../../utils/path'; import { SourcePath } from '../../common'; import { SourceComponent } from '../sourceComponent'; import { BaseSourceAdapter } from './baseSourceAdapter'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_expected_source_files']); /** * Handles types with mixed content. Mixed content means there are one or more additional * file(s) associated with a component with any file extension. Even an entire folder @@ -51,7 +53,10 @@ export class MixedContentSourceAdapter extends BaseSourceAdapter { } if (!this.tree.exists(contentPath)) { - throw new ExpectedSourceFilesError(this.type, trigger); + throw new SfError( + messages.getMessage('error_expected_source_files', [trigger, this.type.name]), + 'ExpectedSourceFilesError' + ); } if (component) { diff --git a/src/resolve/adapters/sourceAdapterFactory.ts b/src/resolve/adapters/sourceAdapterFactory.ts index 929e022396..7cfe7c60f6 100644 --- a/src/resolve/adapters/sourceAdapterFactory.ts +++ b/src/resolve/adapters/sourceAdapterFactory.ts @@ -4,8 +4,8 @@ * Licensed under the BSD 3-Clause license. * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ +import { Messages, SfError } from '@salesforce/core'; import { SourceAdapter } from '../types'; -import { RegistryError } from '../../errors'; import { ForceIgnore } from '../forceIgnore'; import { MetadataType, RegistryAccess } from '../../registry'; import { TreeContainer } from '../treeContainers'; @@ -23,6 +23,9 @@ enum AdapterId { MixedContent = 'mixedContent', } +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_missing_adapter']); + export class SourceAdapterFactory { private registry: RegistryAccess; private tree: TreeContainer; @@ -48,7 +51,7 @@ export class SourceAdapterFactory { case undefined: return new DefaultSourceAdapter(type, this.registry, forceIgnore, this.tree); default: - throw new RegistryError('error_missing_adapter', [adapterId, type.name]); + throw new SfError(messages.getMessage('error_missing_adapter', [adapterId, type.name]), 'RegistryError'); } } } diff --git a/src/resolve/metadataResolver.ts b/src/resolve/metadataResolver.ts index b3bcf26277..c9fbbd816a 100644 --- a/src/resolve/metadataResolver.ts +++ b/src/resolve/metadataResolver.ts @@ -5,8 +5,7 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import { basename, dirname, join, sep } from 'path'; -import { Lifecycle } from '@salesforce/core'; -import { TypeInferenceError } from '../errors'; +import { Lifecycle, Messages, SfError } from '@salesforce/core'; import { extName, parentName, parseMetadataXml } from '../utils'; import { MetadataType, RegistryAccess } from '../registry'; import { ComponentSet } from '../collections'; @@ -16,6 +15,12 @@ import { ForceIgnore } from './forceIgnore'; import { SourceComponent } from './sourceComponent'; import { NodeFSTreeContainer, TreeContainer } from './treeContainers'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_path_not_found', + 'error_could_not_infer_type', +]); + /** * Resolver for metadata type and component objects. * @@ -48,7 +53,7 @@ export class MetadataResolver { */ public getComponentsFromPath(fsPath: string, inclusiveFilter?: ComponentSet): SourceComponent[] { if (!this.tree.exists(fsPath)) { - throw new TypeInferenceError('error_path_not_found', fsPath); + throw new SfError(messages.getMessage('error_path_not_found', [fsPath]), 'TypeInferenceError'); } // use the default ignore if we aren't using a real one @@ -143,7 +148,7 @@ export class MetadataResolver { function: 'resolveComponent', path: fsPath, }); - throw new TypeInferenceError('error_could_not_infer_type', fsPath); + throw new SfError(messages.getMessage('error_could_not_infer_type', [fsPath]), 'TypeInferenceError'); } /** diff --git a/src/resolve/sourceComponent.ts b/src/resolve/sourceComponent.ts index 3337c79b9e..ddef6b7fbc 100644 --- a/src/resolve/sourceComponent.ts +++ b/src/resolve/sourceComponent.ts @@ -5,19 +5,25 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import { basename, join } from 'path'; +import { Messages, SfError } from '@salesforce/core'; import { parse, validate } from 'fast-xml-parser'; import { get, getString, JsonMap } from '@salesforce/ts-types'; import { baseName, normalizeToArray, parseMetadataXml, trimUntil } from '../utils'; import { DEFAULT_PACKAGE_ROOT_SFDX } from '../common'; import { SfdxFileFormat } from '../convert'; import { MetadataType } from '../registry'; -import { LibraryError, TypeInferenceError } from '../errors'; import { DestructiveChangesType } from '../collections'; import { filePathsFromMetadataComponent } from '../utils/filePathGenerator'; import { MetadataComponent, VirtualDirectory } from './types'; import { NodeFSTreeContainer, TreeContainer, VirtualTreeContainer } from './treeContainers'; import { ForceIgnore } from './forceIgnore'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_unexpected_child_type', + 'invalid_xml_parsing', +]); + export type ComponentProperties = { name: string; type: MetadataType; @@ -105,7 +111,10 @@ export class SourceComponent implements MetadataComponent { // Ensure only valid child types are included with the parent. if (!validChildTypes.includes(child.type?.id)) { const filePath = child.xml || child.content; - throw new TypeInferenceError('error_unexpected_child_type', [filePath, this.type.name]); + throw new SfError( + messages.getMessage('error_unexpected_child_type', [filePath, this.type.name]), + 'TypeInferenceError' + ); } } return children; @@ -240,12 +249,15 @@ export class SourceComponent implements MetadataComponent { // only attempt validating once there's an error to avoid the performance hit of validating every file const validation = validate(contents); if (validation !== true) { - throw new LibraryError('invalid_xml_parsing', [ - path, - validation.err.msg, - validation.err.line.toString(), - validation.err.code, - ]); + throw new SfError( + messages.getMessage('invalid_xml_parsing', [ + path, + validation.err.msg, + validation.err.line.toString(), + validation.err.code, + ]), + 'LibraryError' + ); } throw e; } diff --git a/src/resolve/treeContainers.ts b/src/resolve/treeContainers.ts index c9d8bdd1c5..9888efb91e 100644 --- a/src/resolve/treeContainers.ts +++ b/src/resolve/treeContainers.ts @@ -8,10 +8,19 @@ import { join, dirname, basename, normalize, sep } from 'path'; import { Readable } from 'stream'; import { statSync, existsSync, readdirSync, createReadStream, readFileSync } from 'graceful-fs'; import * as unzipper from 'unzipper'; +import { Messages, SfError } from '@salesforce/core'; import { baseName, parseMetadataXml } from '../utils'; -import { LibraryError } from '../errors'; import { SourcePath } from '../common'; import { VirtualDirectory } from './types'; + +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_no_directory_stream', + 'error_expected_file_path', + 'error_expected_directory_path', + 'error_path_not_found', +]); + /** * A container for interacting with a file system. Operations such as component resolution, * conversion, and packaging perform I/O against `TreeContainer` abstractions. @@ -149,21 +158,21 @@ export class ZipTreeContainer extends TreeContainer { if (this.exists(fsPath)) { return Array.isArray(this.tree.get(fsPath)); } - throw new LibraryError('error_path_not_found', fsPath); + throw new SfError(messages.getMessage('error_path_not_found', [fsPath]), 'LibraryError'); } public readDirectory(fsPath: string): string[] { if (this.isDirectory(fsPath)) { return (this.tree.get(fsPath) as ZipEntry[]).map((entry) => basename(entry.path)); } - throw new LibraryError('error_expected_directory_path', fsPath); + throw new SfError(messages.getMessage('error_expected_directory_path', [fsPath]), 'LibraryError'); } public readFile(fsPath: string): Promise { if (!this.isDirectory(fsPath)) { return (this.tree.get(fsPath) as ZipEntry).buffer(); } - throw new LibraryError('error_expected_file_path', fsPath); + throw new SfError(messages.getMessage('error_expected_file_path', [fsPath]), 'LibraryError'); } // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -175,7 +184,7 @@ export class ZipTreeContainer extends TreeContainer { if (!this.isDirectory(fsPath)) { return (this.tree.get(fsPath) as ZipEntry).stream(); } - throw new LibraryError('error_no_directory_stream', this.constructor.name); + throw new SfError(messages.getMessage('error_no_directory_stream', [this.constructor.name]), 'LibraryError'); } private populate(directory: unzipper.CentralDirectory): void { @@ -243,7 +252,7 @@ export class VirtualTreeContainer extends TreeContainer { if (this.exists(fsPath)) { return this.tree.has(fsPath); } - throw new LibraryError('error_path_not_found', fsPath); + throw new SfError(messages.getMessage('error_path_not_found', [fsPath]), 'LibraryError'); } public exists(fsPath: string): boolean { @@ -256,7 +265,7 @@ export class VirtualTreeContainer extends TreeContainer { if (this.isDirectory(fsPath)) { return Array.from(this.tree.get(fsPath)).map((p) => basename(p)); } - throw new LibraryError('error_expected_directory_path', fsPath); + throw new SfError(messages.getMessage('error_expected_directory_path', [fsPath]), 'LibraryError'); } public readFile(fsPath: SourcePath): Promise { @@ -272,7 +281,7 @@ export class VirtualTreeContainer extends TreeContainer { } return data; } - throw new LibraryError('error_path_not_found', fsPath); + throw new SfError(messages.getMessage('error_path_not_found', [fsPath]), 'LibraryError'); } // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/test/client/deployStrategies/auraDeploy.test.ts b/test/client/deployStrategies/auraDeploy.test.ts index c59d05e725..656184ab4f 100644 --- a/test/client/deployStrategies/auraDeploy.test.ts +++ b/test/client/deployStrategies/auraDeploy.test.ts @@ -10,16 +10,19 @@ import { AuthInfo, Connection } from '@salesforce/core'; import { MockTestOrgData, testSetup } from '@salesforce/core/lib/testSetup'; import { expect } from 'chai'; import * as fs from 'graceful-fs'; -import { RecordResult } from 'jsforce'; +import { SaveError, SaveResult } from 'jsforce'; import { createSandbox, SinonSandbox } from 'sinon'; -import { nls } from '../../../src/i18n'; -import { ToolingDeployStatus, ComponentStatus } from '../../../src/client'; +import { AnyJson } from '@salesforce/ts-types'; +import { Messages } from '@salesforce/core'; +import { ComponentStatus, ToolingDeployStatus } from '../../../src/client'; import { AuraDeploy } from '../../../src/client/deployStrategies'; -import { ToolingCreateResult, AuraDefinition } from '../../../src/client/types'; -import { auraContents, auraComponent, auraFiles, testAuraList } from './auraDeployMocks'; - +import { AuraDefinition, ToolingCreateResult } from '../../../src/client/types'; +import { auraComponent, auraContents, auraFiles, testAuraList } from './auraDeployMocks'; const $$ = testSetup(); +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_creating_metadata_type']); + describe('Aura Deploy Strategy', () => { const testMetadataField = { apiVersion: '32.0', @@ -36,9 +39,13 @@ describe('Aura Deploy Strategy', () => { beforeEach(async () => { sandboxStub = createSandbox(); - $$.setConfigStubContents('AuthInfoConfig', { - contents: await testData.getConfig(), - }); + $$.configStubs.GlobalInfo = { + contents: { + orgs: Object.assign($$.configStubs.GlobalInfo?.contents?.orgs || {}, { + [testData.username]: testData as unknown as AnyJson, + }), + }, + }; mockConnection = await Connection.create({ authInfo: await AuthInfo.create({ username: testData.username, @@ -74,7 +81,7 @@ describe('Aura Deploy Strategy', () => { success: true, id: '1dcxxx000000060', errors: [], - } as RecordResult); + } as SaveResult); const auraDeploy = new AuraDeploy(mockConnection); auraDeploy.component = auraComponent; @@ -162,7 +169,7 @@ describe('Aura Deploy Strategy', () => { success: true, id: '1dcxxx000000034', errors: [], - } as RecordResult); + } as SaveResult); sandboxStub.stub(AuraDeploy.prototype, 'buildMetadataField').returns(testMetadataField); const auraDeploy = new AuraDeploy(mockConnection); @@ -183,7 +190,7 @@ describe('Aura Deploy Strategy', () => { success: true, id: '1dcxxx000000034', errors: [], - } as RecordResult); + } as SaveResult); sandboxStub.stub(AuraDeploy.prototype, 'buildMetadataField').returns(testMetadataField); const auraDeploy = new AuraDeploy(mockConnection); @@ -202,8 +209,8 @@ describe('Aura Deploy Strategy', () => { sandboxStub.stub(mockConnection.tooling, 'create').resolves({ success: false, id: '', - errors: ['Unexpected error while creating record'], - } as RecordResult); + errors: [{ message: 'Unexpected error while creating record', errorCode: '1' } as SaveError], + } as SaveResult); sandboxStub.stub(AuraDeploy.prototype, 'buildMetadataField').returns(testMetadataField); const auraDeploy = new AuraDeploy(mockConnection); @@ -212,7 +219,7 @@ describe('Aura Deploy Strategy', () => { await auraDeploy.upsertBundle(); expect.fail('Should have failed'); } catch (e) { - expect(e.message).to.equal(nls.localize('error_creating_metadata_type', 'AuraDefinitionBundle')); + expect(e.message).to.equal(messages.getMessage('error_creating_metadata_type', ['AuraDefinitionBundle'])); expect(e.name).to.be.equal('DeployError'); } }); @@ -223,7 +230,7 @@ describe('Aura Deploy Strategy', () => { success: true, id: '1dcxxx000000034', errors: [], - } as RecordResult); + } as SaveResult); sandboxStub.stub(AuraDeploy.prototype, 'buildMetadataField').returns(testMetadataField); diff --git a/test/client/deployStrategies/baseDeploy.test.ts b/test/client/deployStrategies/baseDeploy.test.ts index 795efaf92d..1a865bc7ee 100644 --- a/test/client/deployStrategies/baseDeploy.test.ts +++ b/test/client/deployStrategies/baseDeploy.test.ts @@ -5,13 +5,16 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { AuthInfo, Connection } from '@salesforce/core'; +import { AuthInfo, Connection, Messages } from '@salesforce/core'; import { MockTestOrgData, testSetup } from '@salesforce/core/lib/testSetup'; import { assert, expect } from 'chai'; import * as fs from 'graceful-fs'; import { createSandbox, SinonSandbox } from 'sinon'; +import { AnyJson } from '@salesforce/ts-types'; import { ContainerDeploy } from '../../../src/client/deployStrategies'; -import { nls } from '../../../src/i18n'; + +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_parsing_metadata_file']); const $$ = testSetup(); @@ -27,14 +30,19 @@ describe('Base Deploy Strategy', () => { beforeEach(async () => { sandboxStub = createSandbox(); - $$.setConfigStubContents('AuthInfoConfig', { - contents: await testData.getConfig(), - }); + $$.configStubs.GlobalInfo = { + contents: { + orgs: Object.assign($$.configStubs.GlobalInfo?.contents?.orgs || {}, { + [testData.username]: testData as unknown as AnyJson, + }), + }, + }; mockConnection = await Connection.create({ authInfo: await AuthInfo.create({ username: testData.username, }), }); + const mockFS = sandboxStub.stub(fs, 'readFileSync'); mockFS.withArgs('file/path/one.cls', 'utf8').returns('public with sharing class TestAPI {}'); @@ -76,6 +84,9 @@ describe('Base Deploy Strategy', () => { const deployLibrary = new ContainerDeploy(mockConnection); const metaXMLString = 'Incorrect metadata file'; - assert.throws(() => deployLibrary.buildMetadataField(metaXMLString), nls.localize('error_parsing_metadata_file')); + assert.throws( + () => deployLibrary.buildMetadataField(metaXMLString), + messages.getMessage('error_parsing_metadata_file') + ); }); }); diff --git a/test/client/deployStrategies/containerDeploy.test.ts b/test/client/deployStrategies/containerDeploy.test.ts index 1138f9265e..e0be7fb3e0 100644 --- a/test/client/deployStrategies/containerDeploy.test.ts +++ b/test/client/deployStrategies/containerDeploy.test.ts @@ -5,18 +5,25 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { AuthInfo, Connection } from '@salesforce/core'; +import { AuthInfo, Connection, Messages } from '@salesforce/core'; import { MockTestOrgData, testSetup } from '@salesforce/core/lib/testSetup'; import { expect } from 'chai'; import * as fs from 'graceful-fs'; -import { Record, RecordResult } from 'jsforce'; +import { Record, SaveError, SaveResult } from 'jsforce'; import { createSandbox, SinonSandbox } from 'sinon'; +import { AnyJson } from '@salesforce/ts-types'; import { ContainerDeploy } from '../../../src/client/deployStrategies'; -import { nls } from '../../../src/i18n'; -import { QueryResult, ToolingDeployStatus, ComponentStatus, ToolingCreateResult } from '../../../src/client/types'; +import { ComponentStatus, QueryResult, ToolingCreateResult, ToolingDeployStatus } from '../../../src/client/types'; import { SourceComponent } from '../../../src/resolve'; import { registry } from '../../../src'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'beta_tapi_car_error', + 'beta_tapi_mdcontainer_error', + 'beta_tapi_membertype_error', +]); + const $$ = testSetup(); describe('Container Deploy Strategy', () => { @@ -28,7 +35,7 @@ describe('Container Deploy Strategy', () => { const successfulContainerResult: ToolingCreateResult = { success: true, id: '1dcxxx000000034', - errors: [], + errors: undefined, name: 'VSCode_MDC_', message: '', }; @@ -62,14 +69,19 @@ describe('Container Deploy Strategy', () => { beforeEach(async () => { sandboxStub = createSandbox(); - $$.setConfigStubContents('AuthInfoConfig', { - contents: await testData.getConfig(), - }); + $$.configStubs.GlobalInfo = { + contents: { + orgs: Object.assign($$.configStubs.GlobalInfo?.contents?.orgs || {}, { + [testData.username]: testData as unknown as AnyJson, + }), + }, + }; mockConnection = await Connection.create({ authInfo: await AuthInfo.create({ username: testData.username, }), }); + const mockFS = sandboxStub.stub(fs, 'readFileSync'); mockFS.withArgs('file/path/one.cls', 'utf8').returns('public with sharing class TestAPI {}'); @@ -91,7 +103,7 @@ describe('Container Deploy Strategy', () => { success: true, id: '1dcxxx000000034', errors: [], - } as RecordResult); + } as SaveResult); const container = await deployLibrary.createMetadataContainer(); @@ -108,13 +120,13 @@ describe('Container Deploy Strategy', () => { sandboxStub.stub(mockConnection.tooling, 'create').resolves({ success: false, id: '', - errors: ['Unexpected error while creating record'], - } as RecordResult); + errors: [{ message: 'Unexpected error while creating record', errorCode: '1' } as SaveError], + } as SaveResult); try { await deployLibrary.createMetadataContainer(); expect.fail('Should have failed'); } catch (e) { - expect(e.message).to.equal(nls.localize('beta_tapi_mdcontainer_error')); + expect(e.message).to.equal(messages.getMessage('beta_tapi_mdcontainer_error')); expect(e.name).to.be.equal('DeployError'); } }); @@ -144,7 +156,7 @@ describe('Container Deploy Strategy', () => { success: true, id: '400xxx000000034', errors: [], - } as RecordResult); + } as SaveResult); deployLibrary.component = apexClassCmp; const containerMember = await deployLibrary.createContainerMember( @@ -165,7 +177,7 @@ describe('Container Deploy Strategy', () => { success: true, id: '400xxx000000034', errors: [], - } as RecordResult); + } as SaveResult); deployLibrary.component = apexTriggerCmp; const containerMember = await deployLibrary.createContainerMember( @@ -186,7 +198,7 @@ describe('Container Deploy Strategy', () => { success: true, id: '400xxx000000034', errors: [], - } as RecordResult); + } as SaveResult); deployLibrary.component = apexPageCmp; const containerMember = await deployLibrary.createContainerMember( @@ -207,7 +219,7 @@ describe('Container Deploy Strategy', () => { success: true, id: '400xxx000000034', errors: [], - } as RecordResult); + } as SaveResult); deployLibrary.component = apexComponent; const containerMember = await deployLibrary.createContainerMember( @@ -228,7 +240,7 @@ describe('Container Deploy Strategy', () => { success: true, id: '400xxx000000034', errors: [], - } as RecordResult); + } as SaveResult); deployLibrary.component = apexClassCmp; await deployLibrary.createContainerMember( @@ -261,7 +273,7 @@ describe('Container Deploy Strategy', () => { success: true, id: '400xxx000000034', errors: [], - } as RecordResult); + } as SaveResult); deployLibrary.component = apexClassCmp; await deployLibrary.createContainerMember( @@ -293,8 +305,8 @@ describe('Container Deploy Strategy', () => { sandboxStub.stub(mockConnection.tooling, 'create').resolves({ success: false, id: '', - errors: ['Unexpected error while creating record'], - } as RecordResult); + errors: [{ message: 'Unexpected error while creating record', errorCode: '1' } as SaveError], + } as SaveResult); deployLibrary.component = apexClassCmp; try { @@ -304,7 +316,7 @@ describe('Container Deploy Strategy', () => { ); expect.fail('Should have failed'); } catch (e) { - expect(e.message).to.equal(nls.localize('beta_tapi_membertype_error', 'ApexClass')); + expect(e.message).to.equal(messages.getMessage('beta_tapi_membertype_error', ['ApexClass'])); expect(e.name).to.be.equal('DeployError'); } }); @@ -315,7 +327,7 @@ describe('Container Deploy Strategy', () => { success: true, id: '1drxxx000000034', errors: [], - } as RecordResult); + } as SaveResult); const car = await deployLibrary.createContainerAsyncRequest(successfulContainerResult); expect(car.id).to.equal('1drxxx000000034'); @@ -333,14 +345,14 @@ describe('Container Deploy Strategy', () => { sandboxStub.stub(mockConnection.tooling, 'create').resolves({ success: false, id: '', - errors: ['Unexpected error while creating record'], - } as RecordResult); + errors: [{ message: 'Unexpected error while creating record', errorCode: '1' } as SaveError], + } as SaveResult); try { await deployLibrary.createContainerAsyncRequest(successfulContainerResult); expect.fail('Should have failed'); } catch (e) { - expect(e.message).to.equal(nls.localize('beta_tapi_car_error')); + expect(e.message).to.equal(messages.getMessage('beta_tapi_car_error')); expect(e.name).to.be.equal('DeployError'); } }); @@ -383,7 +395,7 @@ describe('Container Deploy Strategy', () => { const asyncRequestMock: ToolingCreateResult = { success: true, id: '1drxxx000000034', - errors: [], + errors: undefined, name: 'TestCAR', message: '', }; @@ -399,7 +411,7 @@ describe('Container Deploy Strategy', () => { success: true, id: '1dcxxx000000034', errors: [], - } as RecordResult); + } as SaveResult); // mock tooling query const mockToolingQuery = sandboxStub.stub(mockConnection.tooling, 'query'); @@ -417,14 +429,14 @@ describe('Container Deploy Strategy', () => { success: true, id: '400xxx000000034', errors: [], - } as RecordResult); + } as SaveResult); // mock container async request creation mockToolingCreate.onCall(2).resolves({ success: true, id: '1drxxx000000034', errors: [], - } as RecordResult); + } as SaveResult); // mock status check sandboxStub.stub(mockConnection.tooling, 'retrieve').resolves({ diff --git a/test/client/deployStrategies/lwcDeploy.test.ts b/test/client/deployStrategies/lwcDeploy.test.ts index 51cd8a2cf6..dacd84d31c 100644 --- a/test/client/deployStrategies/lwcDeploy.test.ts +++ b/test/client/deployStrategies/lwcDeploy.test.ts @@ -5,20 +5,23 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { join, basename } from 'path'; -import { AuthInfo, Connection } from '@salesforce/core'; +import { basename, join } from 'path'; +import { AuthInfo, Connection, Messages } from '@salesforce/core'; import { MockTestOrgData, testSetup } from '@salesforce/core/lib/testSetup'; import { expect } from 'chai'; import * as fs from 'graceful-fs'; -import { RecordResult } from 'jsforce'; +import { SaveError, SaveResult } from 'jsforce'; import { createSandbox, SinonSandbox } from 'sinon'; -import { nls } from '../../../src/i18n'; +import { AnyJson } from '@salesforce/ts-types'; import { LwcDeploy } from '../../../src/client/deployStrategies'; import { LightningComponentResource, ToolingCreateResult } from '../../../src/client/types'; import { SourceComponent, VirtualTreeContainer } from '../../../src/resolve'; -import { ToolingDeployStatus, ComponentStatus } from '../../../src/client'; +import { ComponentStatus, ToolingDeployStatus } from '../../../src/client'; import { registry } from '../../../src'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_creating_metadata_type']); + const $$ = testSetup(); describe('LWC Deploy Strategy', () => { @@ -84,9 +87,13 @@ describe('LWC Deploy Strategy', () => { beforeEach(async () => { sandboxStub = createSandbox(); - $$.setConfigStubContents('AuthInfoConfig', { - contents: await testData.getConfig(), - }); + $$.configStubs.GlobalInfo = { + contents: { + orgs: Object.assign($$.configStubs.GlobalInfo?.contents?.orgs || {}, { + [testData.username]: testData as unknown as AnyJson, + }), + }, + }; mockConnection = await Connection.create({ authInfo: await AuthInfo.create({ username: testData.username, @@ -113,7 +120,7 @@ describe('LWC Deploy Strategy', () => { success: true, id: '1dcxxx000000060', errors: [], - } as RecordResult); + } as SaveResult); const lwcDeploy = new LwcDeploy(mockConnection); lwcDeploy.component = lwcComponent; @@ -189,7 +196,7 @@ describe('LWC Deploy Strategy', () => { success: true, id: '1dcxxx000000034', errors: [], - } as RecordResult); + } as SaveResult); sandboxStub.stub(LwcDeploy.prototype, 'buildMetadataField').returns(testMetadataField); const lwcDeploy = new LwcDeploy(mockConnection); @@ -210,7 +217,7 @@ describe('LWC Deploy Strategy', () => { success: true, id: '1dcxxx000000034', errors: [], - } as RecordResult); + } as SaveResult); sandboxStub.stub(LwcDeploy.prototype, 'buildMetadataField').returns(testMetadataField); const lwcDeploy = new LwcDeploy(mockConnection); @@ -229,8 +236,8 @@ describe('LWC Deploy Strategy', () => { sandboxStub.stub(mockConnection.tooling, 'create').resolves({ success: false, id: '', - errors: ['Unexpected error while creating record'], - } as RecordResult); + errors: [{ message: 'Unexpected error while creating record', errorCode: '1' } as SaveError], + } as SaveResult); sandboxStub.stub(LwcDeploy.prototype, 'buildMetadataField').returns(testMetadataField); const lwcDeploy = new LwcDeploy(mockConnection); @@ -239,7 +246,7 @@ describe('LWC Deploy Strategy', () => { await lwcDeploy.upsertBundle(); expect.fail('Should have failed'); } catch (e) { - expect(e.message).to.equal(nls.localize('error_creating_metadata_type', 'LightningComponentBundle')); + expect(e.message).to.equal(messages.getMessage('error_creating_metadata_type', ['LightningComponentBundle'])); expect(e.name).to.be.equal('DeployError'); } }); @@ -250,7 +257,7 @@ describe('LWC Deploy Strategy', () => { success: true, id: '1dcxxx000000034', errors: [], - } as RecordResult); + } as SaveResult); sandboxStub.stub(LwcDeploy.prototype, 'buildMetadataField').returns(testMetadataField); @@ -288,7 +295,7 @@ describe('LWC Deploy Strategy', () => { success: true, id: '1dcxxx000000034', errors: [], - } as RecordResult); + } as SaveResult); sandboxStub .stub(mockConnection.tooling, 'update') diff --git a/test/client/metadataApiDeploy.test.ts b/test/client/metadataApiDeploy.test.ts index 05d1698dee..29d5b842bb 100644 --- a/test/client/metadataApiDeploy.test.ts +++ b/test/client/metadataApiDeploy.test.ts @@ -5,10 +5,10 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import { basename, join } from 'path'; -import { createSandbox } from 'sinon'; +import { testSetup } from '@salesforce/core/lib/testSetup'; import { assert, expect } from 'chai'; import { AnyJson, getString } from '@salesforce/ts-types'; -import { PollingClient, StatusResult } from '@salesforce/core'; +import { PollingClient, StatusResult, Messages } from '@salesforce/core'; import { Duration } from '@salesforce/kit'; import { ComponentSet, @@ -35,21 +35,25 @@ import { DECOMPOSED_COMPONENT, } from '../mock/type-constants/customObjectConstant'; import { COMPONENT } from '../mock/type-constants/apexClassConstant'; -import { MissingJobIdError } from '../../src/errors'; -const env = createSandbox(); +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_no_job_id']); +const expectedError = { + name: 'MissingJobIdError', + message: messages.getMessage('error_no_job_id', ['deploy']), +}; describe('MetadataApiDeploy', () => { - afterEach(() => env.restore()); + const $$ = testSetup(); describe('Lifecycle', () => { describe('start', () => { - it('should not convert zip, but read from fs', async () => {}); - it('should not mdapiDir, but generate zip buffer from it', async () => {}); + it('should not convert zip, but read from fs'); + it('should not mdapiDir, but generate zip buffer from it'); it('should convert to metadata format and create zip', async () => { const components = new ComponentSet([matchingContentFile.COMPONENT]); - const { operation, convertStub } = await stubMetadataDeploy(env, { + const { operation, convertStub } = await stubMetadataDeploy($$, { components, }); @@ -60,7 +64,7 @@ describe('MetadataApiDeploy', () => { it('should call deploy with zip', async () => { const components = new ComponentSet([matchingContentFile.COMPONENT]); - const { operation, convertStub, deployStub } = await stubMetadataDeploy(env, { + const { operation, convertStub, deployStub } = await stubMetadataDeploy($$, { components, }); @@ -71,11 +75,11 @@ describe('MetadataApiDeploy', () => { expect(deployStub.firstCall.args[0]).to.equal(zipBuffer); }); - it('should save the temp directory if the enviornment variable is set', async () => { + it('should save the temp directory if the environment variable is set', async () => { try { process.env.SFDX_MDAPI_TEMP_DIR = 'test'; const components = new ComponentSet([matchingContentFile.COMPONENT]); - const { operation, convertStub, deployStub } = await stubMetadataDeploy(env, { + const { operation, convertStub, deployStub } = await stubMetadataDeploy($$, { components, }); @@ -90,9 +94,9 @@ describe('MetadataApiDeploy', () => { } }); - it('should NOT save the temp directory if the enviornment variable is NOT set', async () => { + it('should NOT save the temp directory if the environment variable is NOT set', async () => { const components = new ComponentSet([matchingContentFile.COMPONENT]); - const { operation, convertStub } = await stubMetadataDeploy(env, { + const { operation, convertStub } = await stubMetadataDeploy($$, { components, }); @@ -105,7 +109,7 @@ describe('MetadataApiDeploy', () => { it('should return an AsyncResult', async () => { const component = matchingContentFile.COMPONENT; const deployedComponents = new ComponentSet([component]); - const { operation } = await stubMetadataDeploy(env, { + const { operation } = await stubMetadataDeploy($$, { components: deployedComponents, }); @@ -117,7 +121,7 @@ describe('MetadataApiDeploy', () => { it('should set the deploy ID', async () => { const component = matchingContentFile.COMPONENT; const deployedComponents = new ComponentSet([component]); - const { operation, response } = await stubMetadataDeploy(env, { + const { operation, response } = await stubMetadataDeploy($$, { components: deployedComponents, }); @@ -131,7 +135,7 @@ describe('MetadataApiDeploy', () => { it('should construct a result object with deployed components', async () => { const component = matchingContentFile.COMPONENT; const deployedComponents = new ComponentSet([component]); - const { operation, response } = await stubMetadataDeploy(env, { + const { operation, response } = await stubMetadataDeploy($$, { components: deployedComponents, }); @@ -143,7 +147,7 @@ describe('MetadataApiDeploy', () => { }); it('should stop polling when checkStatus returns done = true', async () => { - const { operation, checkStatusStub } = await stubMetadataDeploy(env); + const { operation, checkStatusStub } = await stubMetadataDeploy($$); checkStatusStub.withArgs(MOCK_ASYNC_RESULT.id, true).resolves({ done: true }); await operation.start(); @@ -155,7 +159,7 @@ describe('MetadataApiDeploy', () => { it('should override timeout and frequency by number', async () => { const component = matchingContentFile.COMPONENT; const deployedComponents = new ComponentSet([component]); - const { operation, pollingClientSpy } = await stubMetadataDeploy(env, { + const { operation, pollingClientSpy } = await stubMetadataDeploy($$, { components: deployedComponents, }); const frequency = Duration.milliseconds(500); @@ -171,7 +175,7 @@ describe('MetadataApiDeploy', () => { it('should override polling client options', async () => { const deployedComponents = new ComponentSet([matchingContentFile.COMPONENT]); - const { operation, pollingClientSpy } = await stubMetadataDeploy(env, { + const { operation, pollingClientSpy } = await stubMetadataDeploy($$, { components: deployedComponents, }); const frequency = Duration.milliseconds(500); @@ -195,12 +199,11 @@ describe('MetadataApiDeploy', () => { describe('checkStatus', () => { it('should throw an error when a job ID is not set', async () => { - const { operation } = await stubMetadataDeploy(env); + const { operation } = await stubMetadataDeploy($$); try { await operation.checkStatus(); assert.fail('should have thrown an error'); } catch (e) { - const expectedError = new MissingJobIdError('deploy'); expect(e.name).to.equal(expectedError.name); expect(e.message).to.equal(expectedError.message); } @@ -209,7 +212,7 @@ describe('MetadataApiDeploy', () => { describe('deployRecentValidation', () => { it('should return new ID for SOAP version', async () => { - const { operation } = await stubMetadataDeploy(env, { + const { operation } = await stubMetadataDeploy($$, { id: '1234', components: new ComponentSet(), }); @@ -219,7 +222,7 @@ describe('MetadataApiDeploy', () => { }); it('should return new ID for REST version', async () => { - const { operation } = await stubMetadataDeploy(env, { + const { operation } = await stubMetadataDeploy($$, { id: '1234', components: new ComponentSet(), }); @@ -229,12 +232,11 @@ describe('MetadataApiDeploy', () => { }); it('should throw an error when a job ID is not set', async () => { - const { operation } = await stubMetadataDeploy(env); + const { operation } = await stubMetadataDeploy($$); try { await operation.deployRecentValidation(false); assert.fail('should have thrown an error'); } catch (e) { - const expectedError = new MissingJobIdError('deploy'); expect(e.name).to.equal(expectedError.name); expect(e.message).to.equal(expectedError.message); } @@ -243,7 +245,7 @@ describe('MetadataApiDeploy', () => { describe('cancel', () => { it('should send cancelDeploy request to org if cancel is called', async () => { - const { operation, invokeStub } = await stubMetadataDeploy(env, { + const { operation, invokeStub } = await stubMetadataDeploy($$, { id: MOCK_ASYNC_RESULT.id, components: new ComponentSet(), }); @@ -255,12 +257,11 @@ describe('MetadataApiDeploy', () => { }); it('should throw an error when a job ID is not set', async () => { - const { operation } = await stubMetadataDeploy(env); + const { operation } = await stubMetadataDeploy($$); try { await operation.cancel(); assert.fail('should have thrown an error'); } catch (e) { - const expectedError = new MissingJobIdError('deploy'); expect(e.name).to.equal(expectedError.name); expect(e.message).to.equal(expectedError.message); } @@ -785,7 +786,7 @@ describe('MetadataApiDeploy', () => { }; const result = new DeployResult(apiStatus as MetadataApiDeployStatus, deployedSet); // @ts-ignore testing private property - const spy = env.spy(result, 'getDeployMessages'); + const spy = $$.SANDBOX.spy(result, 'getDeployMessages'); result.getFileResponses(); expect(spy.callCount).to.equal(1); diff --git a/test/client/metadataApiRetrieve.test.ts b/test/client/metadataApiRetrieve.test.ts index 8c0637775e..f5679afc8a 100644 --- a/test/client/metadataApiRetrieve.test.ts +++ b/test/client/metadataApiRetrieve.test.ts @@ -6,11 +6,13 @@ */ import { fail } from 'assert'; import { join } from 'path'; +import { Messages } from '@salesforce/core'; import { expect } from 'chai'; import * as unzipper from 'unzipper'; import { createSandbox, match, SinonStub } from 'sinon'; import { getString } from '@salesforce/ts-types'; import * as fs from 'graceful-fs'; +import { testSetup } from '@salesforce/core/lib/testSetup'; import { ComponentSet, ComponentStatus, @@ -23,20 +25,34 @@ import { SourceComponent, VirtualTreeContainer, } from '../../src'; -import { MetadataApiRetrieveError, MissingJobIdError } from '../../src/errors'; -import { nls } from '../../src/i18n'; import { MOCK_ASYNC_RESULT, MOCK_DEFAULT_OUTPUT, stubMetadataRetrieve } from '../mock/client/transferOperations'; import { xmlInFolder } from '../mock'; import { COMPONENT } from '../mock/type-constants/apexClassConstant'; import { DECOMPOSED_COMPONENT } from '../mock/type-constants/customObjectConstant'; +import { mockConnection } from '../mock/client'; +import * as coverage from '../../src/registry/coverage'; +import { testApiVersion } from '../mock/manifestConstants'; const env = createSandbox(); +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_no_job_id', + 'error_no_components_to_retrieve', +]); + describe('MetadataApiRetrieve', () => { + beforeEach(() => { + env.stub(coverage, 'getCurrentApiVersion').resolves(testApiVersion); + }); afterEach(() => env.restore()); describe('Lifecycle', () => { describe('start', () => { + const expectedError = { + name: 'MetadataApiRetrieveError', + message: messages.getMessage('error_no_components_to_retrieve'), + }; it('should throw error if there are no components to retrieve', async () => { const toRetrieve = new ComponentSet([]); const { operation } = await stubMetadataRetrieve(env, { @@ -48,8 +64,8 @@ describe('MetadataApiRetrieve', () => { await operation.start(); fail('should have thrown an error'); } catch (e) { - expect(e.name).to.equal(MetadataApiRetrieveError.name); - expect(e.message).to.equal(nls.localize('error_no_components_to_retrieve')); + expect(e.name).to.equal(expectedError.name); + expect(e.message).to.equal(expectedError.message); } }); @@ -65,8 +81,8 @@ describe('MetadataApiRetrieve', () => { await operation.start(); fail('should have thrown an error'); } catch (e) { - expect(e.name).to.equal(MetadataApiRetrieveError.name); - expect(e.message).to.equal(nls.localize('error_no_components_to_retrieve')); + expect(e.name).to.equal(expectedError.name); + expect(e.message).to.equal(expectedError.message); } }); @@ -82,8 +98,8 @@ describe('MetadataApiRetrieve', () => { expect(retrieveStub.calledOnce).to.be.true; expect(retrieveStub.firstCall.args[0]).to.deep.equal({ - apiVersion: toRetrieve.apiVersion, - unpackaged: toRetrieve.getObject().Package, + apiVersion: (await mockConnection(testSetup())).getApiVersion(), + unpackaged: (await toRetrieve.getObject()).Package, }); }); @@ -100,9 +116,9 @@ describe('MetadataApiRetrieve', () => { expect(retrieveStub.calledOnce).to.be.true; expect(retrieveStub.firstCall.args[0]).to.deep.equal({ - apiVersion: toRetrieve.apiVersion, + apiVersion: (await mockConnection(testSetup())).getApiVersion(), packageNames: options.packageOptions, - unpackaged: toRetrieve.getObject().Package, + unpackaged: (await toRetrieve.getObject()).Package, }); }); @@ -119,9 +135,9 @@ describe('MetadataApiRetrieve', () => { expect(retrieveStub.calledOnce).to.be.true; expect(retrieveStub.firstCall.args[0]).to.deep.equal({ - apiVersion: toRetrieve.apiVersion, + apiVersion: (await mockConnection(testSetup())).getApiVersion(), packageNames: [options.packageOptions[0].name], - unpackaged: toRetrieve.getObject().Package, + unpackaged: (await toRetrieve.getObject()).Package, }); }); @@ -138,9 +154,9 @@ describe('MetadataApiRetrieve', () => { expect(retrieveStub.calledOnce).to.be.true; expect(retrieveStub.firstCall.args[0]).to.deep.equal({ - apiVersion: toRetrieve.apiVersion, + apiVersion: (await mockConnection(testSetup())).getApiVersion(), packageNames: [options.packageOptions[0].name], - unpackaged: toRetrieve.getObject().Package, + unpackaged: (await toRetrieve.getObject()).Package, }); }); @@ -292,7 +308,7 @@ describe('MetadataApiRetrieve', () => { merge: true, successes: toRetrieve, }); - env.stub(fs, 'writeFileSync'); + env.stub(fs.promises, 'writeFile'); await operation.start(); await operation.pollStatus(); @@ -404,7 +420,10 @@ describe('MetadataApiRetrieve', () => { await operation.checkStatus(); chai.assert.fail('the above should throw an error'); } catch (e) { - const expectedError = new MissingJobIdError('retrieve'); + const expectedError = { + name: 'MissingJobIdError', + message: messages.getMessage('error_no_job_id', ['retrieve']), + }; expect(e.name).to.equal(expectedError.name); expect(e.message).to.equal(expectedError.message); } @@ -629,7 +648,7 @@ describe('MetadataApiRetrieve', () => { /** * This is tested on the assumption that the ComponentWriter result directly - * includes children in the returned set, so we don't need to eagrly resolve + * includes children in the returned set, so we don't need to eagerly resolve * the children of a parent. */ it('should not report content files if component type has children', () => { diff --git a/test/client/metadataTransfer.test.ts b/test/client/metadataTransfer.test.ts index d1a568aca9..5b74c2b11d 100644 --- a/test/client/metadataTransfer.test.ts +++ b/test/client/metadataTransfer.test.ts @@ -6,16 +6,18 @@ */ import { fail } from 'assert'; import { createSandbox, SinonStub } from 'sinon'; -import { MockTestOrgData, testSetup } from '@salesforce/core/lib/testSetup'; -import { AuthInfo, Connection, PollingClient } from '@salesforce/core'; +import { testSetup } from '@salesforce/core/lib/testSetup'; +import { AuthInfo, Connection, PollingClient, Messages } from '@salesforce/core'; import { expect } from 'chai'; import { Duration, sleep } from '@salesforce/kit'; import { ComponentSet } from '../../src'; import { MetadataTransfer } from '../../src/client/metadataTransfer'; import { MetadataRequestStatus, MetadataTransferResult, RequestStatus } from '../../src/client/types'; -import { MetadataTransferError } from '../../src/errors'; import { mockConnection } from '../mock/client'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['md_request_fail']); + const $$ = testSetup(); const env = createSandbox(); @@ -95,14 +97,13 @@ describe('MetadataTransfer', () => { return this.lifecycle.pre(connection); } } - const testData = new MockTestOrgData(); - $$.setConfigStubContents('AuthInfoConfig', { contents: await testData.getConfig() }); - const authInfo = await AuthInfo.create({ username: 'foo@example.com' }); - env.stub(AuthInfo, 'create').withArgs({ username: 'foo@example.com' }).resolves(authInfo); + const username = connection.getUsername(); + const authInfo = await AuthInfo.create({ username }); + env.stub(AuthInfo, 'create').withArgs({ username }).resolves(authInfo); env.stub(Connection, 'create').withArgs({ authInfo }).resolves(connection); operation = new TestTransferConnection({ components: new ComponentSet(), - usernameOrConnection: 'foo@example.com', + usernameOrConnection: username, }); await operation.start(); @@ -118,15 +119,15 @@ describe('MetadataTransfer', () => { } } const apiVersion = '50.0'; - const testData = new MockTestOrgData(); - $$.setConfigStubContents('AuthInfoConfig', { contents: await testData.getConfig() }); - const authInfo = await AuthInfo.create({ username: 'foo@example.com' }); - env.stub(AuthInfo, 'create').withArgs({ username: 'foo@example.com' }).resolves(authInfo); + const username = connection.getUsername(); + + const authInfo = await AuthInfo.create({ username }); + env.stub(AuthInfo, 'create').withArgs({ username }).resolves(authInfo); env.stub(Connection, 'create').withArgs({ authInfo }).resolves(connection); const setApiVersionSpy = env.spy(Connection.prototype, 'setApiVersion'); operation = new TestTransferConnection({ components: new ComponentSet(), - usernameOrConnection: 'foo@example.com', + usernameOrConnection: username, apiVersion, }); @@ -274,7 +275,10 @@ describe('MetadataTransfer', () => { it('should emit wrapped error if something goes wrong', async () => { const { checkStatus } = operation.lifecycle; const originalError = new Error('whoops'); - const expectedError = new MetadataTransferError('md_request_fail', originalError.message); + const expectedError = { + name: 'MetadataTransferError', + message: messages.getMessage('md_request_fail', [originalError.message]), + }; checkStatus.throws(originalError); let error: Error; operation.onError((e) => (error = e)); @@ -299,7 +303,10 @@ describe('MetadataTransfer', () => { it('should throw wrapped error if there are no error listeners', async () => { const { checkStatus } = operation.lifecycle; const originalError = new Error('whoops'); - const expectedError = new MetadataTransferError('md_request_fail', originalError.message); + const expectedError = { + name: 'MetadataTransferError', + message: messages.getMessage('md_request_fail', [originalError.message]), + }; checkStatus.throws(originalError); try { diff --git a/test/client/retrieve.test.ts b/test/client/retrieve.test.ts index e08015943b..458caa7c04 100644 --- a/test/client/retrieve.test.ts +++ b/test/client/retrieve.test.ts @@ -8,17 +8,24 @@ import * as path from 'path'; import * as stream from 'stream'; import { fail } from 'assert'; -import { AuthInfo, Connection } from '@salesforce/core'; +import { AuthInfo, Connection, Messages } from '@salesforce/core'; import { MockTestOrgData, testSetup } from '@salesforce/core/lib/testSetup'; import { expect } from 'chai'; import * as fs from 'graceful-fs'; import { createSandbox, SinonSandbox } from 'sinon'; +import { AnyJson } from '@salesforce/ts-types'; import { ToolingApi } from '../../src/client'; import { MetadataResolver, SourceComponent } from '../../src/resolve'; import { QueryResult, RequestStatus, SourceRetrieveResult } from '../../src/client/types'; -import { nls } from '../../src/i18n'; import { ComponentSet, registry } from '../../src'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_md_not_present_in_org', + 'beta_tapi_membertype_unsupported_error', + 'tapi_retrieve_component_limit_error', +]); + const $$ = testSetup(); describe('Tooling Retrieve', () => { const testData = new MockTestOrgData(); @@ -58,14 +65,19 @@ describe('Tooling Retrieve', () => { beforeEach(async () => { sandboxStub = createSandbox(); - $$.setConfigStubContents('AuthInfoConfig', { - contents: await testData.getConfig(), - }); + $$.configStubs.GlobalInfo = { + contents: { + orgs: Object.assign($$.configStubs.GlobalInfo?.contents?.orgs || {}, { + [testData.username]: testData as unknown as AnyJson, + }), + }, + }; mockConnection = await Connection.create({ authInfo: await AuthInfo.create({ username: testData.username, }), }); + sandboxStub.stub(fs, 'existsSync').returns(true); // @ts-ignore sandboxStub.stub(fs, 'statSync').returns({ isDirectory: () => false }); @@ -238,7 +250,7 @@ describe('Tooling Retrieve', () => { fullName: mdComponents[0].fullName, type: mdComponents[0].type, }, - message: nls.localize('error_md_not_present_in_org', 'myTestClass'), + message: messages.getMessage('error_md_not_present_in_org', ['myTestClass']), }, ], }); @@ -262,7 +274,7 @@ describe('Tooling Retrieve', () => { }); fail('Retrieve should have thrown an error'); } catch (e) { - expect(e.message).to.equals(nls.localize('tapi_retrieve_component_limit_error')); + expect(e.message).to.equals(messages.getMessage('tapi_retrieve_component_limit_error')); expect(e.name).to.equals('MetadataRetrieveLimit'); } }); @@ -291,7 +303,7 @@ describe('Tooling Retrieve', () => { }); fail('Retrieve should have thrown an error'); } catch (e) { - expect(e.message).to.equals(nls.localize('beta_tapi_membertype_unsupported_error', 'FancyType')); + expect(e.message).to.equals(messages.getMessage('beta_tapi_membertype_unsupported_error', ['FancyType'])); expect(e.name).to.equals('MetadataTypeUnsupported'); } }); diff --git a/test/client/toolingApi.test.ts b/test/client/toolingApi.test.ts index b2fc28c1c4..a8f1310f27 100644 --- a/test/client/toolingApi.test.ts +++ b/test/client/toolingApi.test.ts @@ -5,16 +5,19 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { AuthInfo, Connection } from '@salesforce/core'; +import { AuthInfo, Connection, Messages } from '@salesforce/core'; import { MockTestOrgData, testSetup } from '@salesforce/core/lib/testSetup'; import { expect } from 'chai'; import { createSandbox, SinonSandbox } from 'sinon'; +import { AnyJson } from '@salesforce/ts-types'; import { MetadataResolver, SourceComponent } from '../../src/resolve'; import { ComponentStatus, ToolingApi, ToolingDeployStatus } from '../../src/client'; import { ContainerDeploy } from '../../src/client/deployStrategies'; -import { nls } from '../../src/i18n'; import { registry } from '../../src'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['beta_tapi_membertype_unsupported_error']); + const $$ = testSetup(); describe('Tooling API tests', () => { @@ -29,9 +32,13 @@ describe('Tooling API tests', () => { beforeEach(async () => { sandboxStub = createSandbox(); - $$.setConfigStubContents('AuthInfoConfig', { - contents: await testData.getConfig(), - }); + $$.configStubs.GlobalInfo = { + contents: { + orgs: Object.assign($$.configStubs.GlobalInfo?.contents?.orgs || {}, { + [testData.username]: testData as unknown as AnyJson, + }), + }, + }; mockConnection = await Connection.create({ authInfo: await AuthInfo.create({ username: testData.username, @@ -85,7 +92,7 @@ describe('Tooling API tests', () => { await deployLibrary.deployWithPaths('file/path/myTestClass.flexipage'); expect.fail('Should have failed'); } catch (e) { - expect(e.message).to.equal(nls.localize('beta_tapi_membertype_unsupported_error', 'FlexiPage')); + expect(e.message).to.equal(messages.getMessage('beta_tapi_membertype_unsupported_error', ['FlexiPage'])); expect(e.name).to.be.equal('SourceClientError'); } }); diff --git a/test/collections/componentSet.test.ts b/test/collections/componentSet.test.ts index 5c14b783e0..ccdac82fc4 100644 --- a/test/collections/componentSet.test.ts +++ b/test/collections/componentSet.test.ts @@ -6,9 +6,11 @@ */ import { fail } from 'assert'; import { join } from 'path'; -import { testSetup } from '@salesforce/core/lib/testSetup'; +import { MockTestOrgData, testSetup } from '@salesforce/core/lib/testSetup'; import { expect } from 'chai'; import { createSandbox, SinonStub } from 'sinon'; +import { AnyJson } from '@salesforce/ts-types'; +import { AuthInfo, Connection, Messages } from '@salesforce/core'; import { ComponentSet, ConnectionResolver, @@ -23,12 +25,13 @@ import { RegistryAccess, SourceComponent, } from '../../src'; -import { ComponentSetError } from '../../src/errors'; -import { nls } from '../../src/i18n'; import { mockConnection } from '../mock/client'; import { decomposedtoplevel, matchingContentFile, mixedContentSingleFile } from '../mock'; import { MATCHING_RULES_COMPONENT } from '../mock/type-constants/customlabelsConstant'; import * as manifestFiles from '../mock/manifestConstants'; +import { testApiVersionAsString } from '../mock/manifestConstants'; +import * as coverage from '../../src/registry/coverage'; +import { testApiVersion } from '../mock/manifestConstants'; const env = createSandbox(); const $$ = testSetup(env); @@ -120,7 +123,7 @@ describe('ComponentSet', () => { ]; const resolveStub = env.stub(ManifestResolver.prototype, 'resolve').resolves({ components: expected, - apiVersion: registry.apiVersion, + apiVersion: testApiVersionAsString, }); env.stub(RegistryAccess.prototype, 'getTypeByName').returns(registry.types.apexclass); const manifest = manifestFiles.ONE_FOLDER_MEMBER; @@ -253,7 +256,7 @@ describe('ComponentSet', () => { ]; const resolveStub = env.stub(ConnectionResolver.prototype, 'resolve').resolves({ components: expected, - apiVersion: registry.apiVersion, + apiVersion: testApiVersionAsString, }); env.stub(RegistryAccess.prototype, 'getTypeByName').returns(registry.types.apexclass); const set = await ComponentSet.fromConnection({ usernameOrConnection: connection }); @@ -276,8 +279,18 @@ describe('ComponentSet', () => { apiVersion: '50.0', }); env.stub(RegistryAccess.prototype, 'getTypeByName').returns(registry.types.apexclass); + const testData = new MockTestOrgData(); + const username = 'test@foobar.com'; + + $$.configStubs.GlobalInfo = { + contents: { + orgs: Object.assign($$.configStubs.GlobalInfo?.contents?.orgs || {}, { + [username]: testData as unknown as AnyJson, + }), + }, + }; const set = await ComponentSet.fromConnection({ - usernameOrConnection: 'test@foobar.com', + usernameOrConnection: username, apiVersion: '50.0', }); @@ -288,13 +301,27 @@ describe('ComponentSet', () => { }); it('should initialize using an username', async () => { - const connection = await mockConnection($$); + const testData = new MockTestOrgData(); + const username = 'test@foobar.com'; + $$.configStubs.GlobalInfo = { + contents: { + orgs: Object.assign($$.configStubs.GlobalInfo?.contents?.orgs || {}, { + [username]: testData as unknown as AnyJson, + }), + }, + }; + const connection = await Connection.create({ + authInfo: await AuthInfo.create({ + username: 'test@foobar.com', + }), + }); const expected: MetadataComponent[] = [ { fullName: 'Test', type: registry.types.apexclass, }, ]; + const resolveStub = env.stub(ConnectionResolver.prototype, 'resolve').resolves({ components: expected, apiVersion: connection.getApiVersion(), @@ -340,13 +367,17 @@ describe('ComponentSet', () => { }); describe('getObject', () => { - it('should return an object representing the package manifest', () => { + beforeEach(() => { + env.stub(coverage, 'getCurrentApiVersion').resolves(testApiVersion); + }); + + it('should return an object representing the package manifest', async () => { const set = ComponentSet.fromSource({ fsPaths: ['.'], registry: registryAccess, tree: manifestFiles.TREE, }); - expect(set.getObject()).to.deep.equal({ + expect(await set.getObject()).to.deep.equal({ Package: { types: [ { @@ -358,19 +389,43 @@ describe('ComponentSet', () => { members: ['b', 'c'], }, ], - version: registryAccess.apiVersion, + version: testApiVersionAsString, }, }); }); - it('should return an object representing destructive changes manifest', () => { + it('should allow the componentSet to set the apiVersion', async () => { + const set = ComponentSet.fromSource({ + fsPaths: ['.'], + registry: registryAccess, + tree: manifestFiles.TREE, + }); + set.apiVersion = testApiVersionAsString; + expect(await set.getObject()).to.deep.equal({ + Package: { + types: [ + { + name: registry.types.customobjecttranslation.name, + members: ['a'], + }, + { + name: registry.types.staticresource.name, + members: ['b', 'c'], + }, + ], + version: testApiVersionAsString, + }, + }); + }); + + it('should return an object representing destructive changes manifest', async () => { const set = ComponentSet.fromSource({ fsPaths: [], registry: registryAccess, tree: manifestFiles.TREE, fsDeletePaths: ['.'], }); - expect(set.getObject(DestructiveChangesType.POST)).to.deep.equal({ + expect(await set.getObject(DestructiveChangesType.POST)).to.deep.equal({ Package: { types: [ { @@ -382,19 +437,19 @@ describe('ComponentSet', () => { members: ['b', 'c'], }, ], - version: registryAccess.apiVersion, + version: testApiVersionAsString, }, }); }); - it('should return an object representing the package manifest with fullName', () => { + it('should return an object representing the package manifest with fullName', async () => { const set = ComponentSet.fromSource({ fsPaths: ['.'], registry: registryAccess, tree: manifestFiles.TREE, }); set.fullName = 'testFullName'; - expect(set.getObject()).to.deep.equal({ + expect(await set.getObject()).to.deep.equal({ Package: { fullName: 'testFullName', types: [ @@ -407,19 +462,19 @@ describe('ComponentSet', () => { members: ['b', 'c'], }, ], - version: registryAccess.apiVersion, + version: testApiVersionAsString, }, }); }); - it('should return an object representing the package manifest with sourceApiVersion', () => { + it('should return an object representing the package manifest with sourceApiVersion', async () => { const set = ComponentSet.fromSource({ fsPaths: ['.'], registry: registryAccess, tree: manifestFiles.TREE, }); set.sourceApiVersion = '45.0'; - expect(set.getObject()).to.deep.equal({ + expect(await set.getObject()).to.deep.equal({ Package: { types: [ { @@ -436,12 +491,12 @@ describe('ComponentSet', () => { }); }); - it('should interpret folder components as members of the type they are a container for', () => { + it('should interpret folder components as members of the type they are a container for', async () => { const member = { fullName: 'Test_Folder', type: 'Document' }; const set = new ComponentSet([member], registryAccess); expect(set.has(member)).to.be.true; - expect(set.getObject().Package.types).to.deep.equal([ + expect((await set.getObject()).Package.types).to.deep.equal([ { name: registry.types.document.name, members: ['Test_Folder'], @@ -449,44 +504,44 @@ describe('ComponentSet', () => { ]); }); - it('should include required child types as defined in the registry', () => { + it('should include required child types as defined in the registry', async () => { const set = new ComponentSet([MATCHING_RULES_COMPONENT]); - expect(set.getObject().Package.types).to.deep.equal([ + expect((await set.getObject()).Package.types).to.deep.equal([ { name: 'MatchingRule', members: ['MatchingRules.My_Account_Matching_Rule'] }, { name: MATCHING_RULES_COMPONENT.type.name, members: [MATCHING_RULES_COMPONENT.name] }, ]); }); - it('should exclude components that are not addressable as defined in the registry', () => { + it('should exclude components that are not addressable as defined in the registry', async () => { const type = registry.types.customobjecttranslation.children.types.customfieldtranslation; const set = new ComponentSet(); set.add(new SourceComponent({ name: type.name, type })); - expect(set.getObject().Package.types).to.deep.equal([]); + expect((await set.getObject()).Package.types).to.deep.equal([]); }); - it('should write wildcards and names of types with supportsWildcardAndName=true, regardless of order', () => { + it('should write wildcards and names of types with supportsWildcardAndName=true, regardless of order', async () => { const type = registry.types.customobject; const set = new ComponentSet(); set.add(new SourceComponent({ name: 'myType', type })); set.add(new SourceComponent({ name: '*', type })); set.add(new SourceComponent({ name: 'myType2', type })); set.add(new SourceComponent({ name: 'myType', type })); - expect(set.getObject().Package.types).to.deep.equal([ + expect((await set.getObject()).Package.types).to.deep.equal([ { members: ['*', 'myType', 'myType2'], name: 'CustomObject' }, ]); }); - it('should overwrite a singular name with wildcard when supportsWildcardAndName=false', () => { + it('should overwrite a singular name with wildcard when supportsWildcardAndName=false', async () => { const type = registry.types.apexclass; const set = new ComponentSet(); set.add(new SourceComponent({ name: 'myType', type })); set.add(new SourceComponent({ name: '*', type })); set.add(new SourceComponent({ name: 'myType2', type })); set.add(new SourceComponent({ name: 'myType', type })); - expect(set.getObject().Package.types).to.deep.equal([{ members: ['*'], name: 'ApexClass' }]); + expect((await set.getObject()).Package.types).to.deep.equal([{ members: ['*'], name: 'ApexClass' }]); }); - it('should exclude child components that are not addressable as defined in the registry', () => { + it('should exclude child components that are not addressable as defined in the registry', async () => { const childType = registry.types.customobjecttranslation.children.types.customfieldtranslation; const type = registry.types.customobjecttranslation; const set = new ComponentSet(); @@ -494,7 +549,7 @@ describe('ComponentSet', () => { const childComp = new SourceComponent({ name: childType.name, type: childType }); $$.SANDBOX.stub(testComp, 'getChildren').returns([childComp]); set.add(testComp); - expect(set.getObject().Package.types).to.deep.equal([ + expect((await set.getObject()).Package.types).to.deep.equal([ { name: 'CustomObjectTranslation', members: ['CustomObjectTranslation'], @@ -505,10 +560,10 @@ describe('ComponentSet', () => { /** * If component set keys are incorrectly handled, child component names may not be returned properly. */ - it('should correctly return addressable child components', () => { + it('should correctly return addressable child components', async () => { const set = new ComponentSet([{ fullName: 'MyParent__c.Child__c', type: 'customfield' }], registryAccess); - expect(set.getObject().Package.types).to.deep.equal([ + expect((await set.getObject()).Package.types).to.deep.equal([ { name: 'CustomField', members: ['MyParent__c.Child__c'], @@ -518,6 +573,9 @@ describe('ComponentSet', () => { }); describe('getPackageXml', () => { + beforeEach(() => { + env.stub(coverage, 'getCurrentApiVersion').resolves(testApiVersion); + }); it('should return manifest string when initialized from manifest file', async () => { const manifest = manifestFiles.ONE_OF_EACH; const set = await ComponentSet.fromManifest({ @@ -526,29 +584,29 @@ describe('ComponentSet', () => { tree: manifestFiles.TREE, }); - const result = set.getPackageXml(); + const result = await set.getPackageXml(); const expected = manifest.data.toString(); expect(result).to.equal(expected); }); - it('should return manifest string when initialized from source', () => { + it('should return manifest string when initialized from source', async () => { const set = ComponentSet.fromSource({ fsPaths: ['.'], registry: registryAccess, tree: manifestFiles.TREE, }); - expect(set.getPackageXml(4).toString()).to.equal(manifestFiles.BASIC.data.toString()); + expect((await set.getPackageXml(4)).toString()).to.equal(manifestFiles.BASIC.data.toString()); }); - it('should return destructive changes manifest string when initialized from source', () => { + it('should return destructive changes manifest string when initialized from source', async () => { const set = ComponentSet.fromSource({ fsPaths: [], registry: registryAccess, tree: manifestFiles.TREE, fsDeletePaths: ['.'], }); - expect(set.getPackageXml(4, DestructiveChangesType.POST)).to.equal(manifestFiles.BASIC.data.toString()); + expect(await set.getPackageXml(4, DestructiveChangesType.POST)).to.equal(manifestFiles.BASIC.data.toString()); }); }); @@ -639,8 +697,11 @@ describe('ComponentSet', () => { await set.deploy({ usernameOrConnection: 'test@foobar.com' }); fail('should have thrown an error'); } catch (e) { - expect(e.name).to.equal(ComponentSetError.name); - expect(e.message).to.equal(nls.localize('error_no_source_to_deploy')); + Messages.importMessagesDirectory(__dirname); + const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_no_source_to_deploy']); + + expect(e.name).to.equal('ComponentSetError'); + expect(e.message).to.equal(messages.getMessage('error_no_source_to_deploy')); } }); }); diff --git a/test/collections/componentSetBuilder.test.ts b/test/collections/componentSetBuilder.test.ts index ca3f2f951c..18fe27a3f2 100644 --- a/test/collections/componentSetBuilder.test.ts +++ b/test/collections/componentSetBuilder.test.ts @@ -10,7 +10,7 @@ import * as fs from 'graceful-fs'; import * as sinon from 'sinon'; import { assert, expect } from 'chai'; import { stubMethod } from '@salesforce/ts-sinon'; -import { SfdxError } from '@salesforce/core'; +import { SfError } from '@salesforce/core'; import { ComponentSet, ComponentSetBuilder, FromSourceOptions } from '../../src'; describe('ComponentSetBuilder', () => { @@ -132,9 +132,9 @@ describe('ComponentSetBuilder', () => { manifest: undefined, metadata: undefined, }); - assert(false, 'should have thrown SfdxError'); + assert(false, 'should have thrown SfError'); } catch (e: unknown) { - const err = e as SfdxError; + const err = e as SfError; expect(fromSourceStub.notCalled).to.equal(true); expect(err.message).to.include(sourcepath[0]); } diff --git a/test/convert/metadataConverter.test.ts b/test/convert/metadataConverter.test.ts index 0ed407d29e..0098e952a3 100644 --- a/test/convert/metadataConverter.test.ts +++ b/test/convert/metadataConverter.test.ts @@ -6,6 +6,7 @@ */ import { dirname, join } from 'path'; import { fail } from 'assert'; +import { Messages, SfError } from '@salesforce/core'; import { createSandbox, SinonStub } from 'sinon'; import * as fs from 'graceful-fs'; import { assert, expect } from 'chai'; @@ -13,14 +14,20 @@ import { xmlInFolder } from '../mock'; import * as streams from '../../src/convert/streams'; import { ComponentReader } from '../../src/convert/streams'; import * as fsUtil from '../../src/utils/fileSystemHandler'; -import { ConversionError, LibraryError } from '../../src/errors'; import { COMPONENTS } from '../mock/type-constants/documentFolderConstant'; import { ComponentSet, DestructiveChangesType, MetadataConverter, registry, SourceComponent } from '../../src'; +import * as coverage from '../../src/registry/coverage'; import { DECOMPOSED_CHILD_COMPONENT_1, DECOMPOSED_CHILD_COMPONENT_2, } from '../mock/type-constants/customObjectConstant'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_failed_convert', + 'error_merge_metadata_target_unsupported', +]); + const env = createSandbox(); describe('MetadataConverter', () => { @@ -33,6 +40,7 @@ describe('MetadataConverter', () => { const packageName = 'test'; const outputDirectory = join('path', 'to', 'output'); const packageOutput = join(outputDirectory, packageName); + const testApiversion = '50.0'; /* eslint-disable-next-line @typescript-eslint/no-explicit-any */ function validatePipelineArgs(pipelineArgs: any[], targetFormat = 'metadata'): void { @@ -47,6 +55,7 @@ describe('MetadataConverter', () => { pipelineStub = env.stub(streams, 'pipeline').resolves(); writeFileStub = env.stub(fs.promises, 'writeFile').resolves(); env.stub(fs, 'createWriteStream'); + env.stub(coverage, 'getCurrentApiVersion').resolves(50); }); afterEach(() => env.restore()); @@ -76,7 +85,12 @@ describe('MetadataConverter', () => { it('should throw ConversionError when an error occurs', async () => { const error = new Error('whoops!'); - const expectedError = new ConversionError(error); + const expectedError = new SfError( + messages.getMessage('error_failed_convert', [error.message]), + 'ConversionError', + [], + error + ); pipelineStub.rejects(error); try { @@ -143,7 +157,7 @@ describe('MetadataConverter', () => { const timestamp = 123456; const packagePath = join(outputDirectory, `${MetadataConverter.DEFAULT_PACKAGE_PREFIX}_${timestamp}`); env.stub(Date, 'now').returns(timestamp); - const expectedContents = new ComponentSet(components).getPackageXml(); + const expectedContents = await new ComponentSet(components).getPackageXml(); await converter.convert(components, 'metadata', { type: 'directory', outputDirectory }); @@ -170,8 +184,8 @@ describe('MetadataConverter', () => { xml: DECOMPOSED_CHILD_COMPONENT_2.xml, }); const compSet = new ComponentSet([component1, component2]); - const expectedDestructiveContents = compSet.getPackageXml(undefined, DestructiveChangesType.POST); - const expectedContents = compSet.getPackageXml(); + const expectedDestructiveContents = await compSet.getPackageXml(undefined, DestructiveChangesType.POST); + const expectedContents = await compSet.getPackageXml(); await converter.convert(compSet, 'metadata', { type: 'directory', outputDirectory }); @@ -203,8 +217,8 @@ describe('MetadataConverter', () => { }); const compSet = new ComponentSet([component1, component2]); compSet.setDestructiveChangesType(DestructiveChangesType.PRE); - const expectedDestructiveContents = compSet.getPackageXml(undefined, DestructiveChangesType.PRE); - const expectedContents = compSet.getPackageXml(); + const expectedDestructiveContents = await compSet.getPackageXml(undefined, DestructiveChangesType.PRE); + const expectedContents = await compSet.getPackageXml(); await converter.convert(compSet, 'metadata', { type: 'directory', outputDirectory }); @@ -224,8 +238,8 @@ describe('MetadataConverter', () => { const packagePath = join(outputDirectory, `${MetadataConverter.DEFAULT_PACKAGE_PREFIX}_${timestamp}`); env.stub(Date, 'now').returns(timestamp); const compSet = new ComponentSet(components); - compSet.sourceApiVersion = '45.0'; - const expectedContents = compSet.getPackageXml(); + compSet.sourceApiVersion = testApiversion; + const expectedContents = await compSet.getPackageXml(); await converter.convert(compSet, 'metadata', { type: 'directory', outputDirectory }); @@ -234,7 +248,7 @@ describe('MetadataConverter', () => { join(packagePath, MetadataConverter.PACKAGE_XML_FILE), expectedContents, ]); - expect(expectedContents).to.contain(`${compSet.sourceApiVersion}`); + expect(expectedContents).to.contain(`${testApiversion}`); }); it('should write the fullName entry when packageName is provided', async () => { @@ -244,7 +258,7 @@ describe('MetadataConverter', () => { env.stub(Date, 'now').returns(timestamp); const cs = new ComponentSet(components); cs.fullName = packageName; - const expectedContents = cs.getPackageXml(); + const expectedContents = await cs.getPackageXml(); await converter.convert(components, 'metadata', { type: 'directory', @@ -334,7 +348,7 @@ describe('MetadataConverter', () => { }); it('should write manifest for metadata format conversion', async () => { - const expectedContents = new ComponentSet(components).getPackageXml(); + const expectedContents = await new ComponentSet(components).getPackageXml(); const addToZipStub = env.stub(streams.ZipWriter.prototype, 'addToZip'); await converter.convert(components, 'metadata', { type: 'zip' }); @@ -356,8 +370,10 @@ describe('MetadataConverter', () => { xml: DECOMPOSED_CHILD_COMPONENT_2.xml, }); const compSet = new ComponentSet([component1, component2]); - const expectedDestructiveContents = compSet.getPackageXml(undefined, DestructiveChangesType.POST); - const expectedContents = compSet.getPackageXml(); + compSet.apiVersion = testApiversion; + + const expectedDestructiveContents = await compSet.getPackageXml(undefined, DestructiveChangesType.POST); + const expectedContents = await compSet.getPackageXml(); const addToZipStub = env.stub(streams.ZipWriter.prototype, 'addToZip'); await converter.convert(compSet, 'metadata', { type: 'zip' }); @@ -383,9 +399,10 @@ describe('MetadataConverter', () => { xml: DECOMPOSED_CHILD_COMPONENT_2.xml, }); const compSet = new ComponentSet([component1, component2]); + compSet.apiVersion = testApiversion; compSet.setDestructiveChangesType(DestructiveChangesType.PRE); - const expectedDestructiveContents = compSet.getPackageXml(4, DestructiveChangesType.PRE); - const expectedContents = compSet.getPackageXml(); + const expectedDestructiveContents = await compSet.getPackageXml(4, DestructiveChangesType.PRE); + const expectedContents = await compSet.getPackageXml(); const addToZipStub = env.stub(streams.ZipWriter.prototype, 'addToZip'); await converter.convert(compSet, 'metadata', { type: 'zip' }); @@ -411,7 +428,14 @@ describe('MetadataConverter', () => { const defaultDirectory = join('path', 'to', 'default'); it('should throw error if merge config provided for metadata target format', async () => { - const expectedError = new ConversionError(new LibraryError('error_merge_metadata_target_unsupported')); + const errorToWrap = new SfError(messages.getMessage('error_merge_metadata_target_unsupported')); + const expectedError = new SfError( + messages.getMessage('error_failed_convert', [errorToWrap.message]), + 'ConversionError', + [], + errorToWrap + ); + try { await converter.convert(components, 'metadata', { type: 'merge', @@ -420,7 +444,7 @@ describe('MetadataConverter', () => { }); fail(`should have thrown a ${expectedError.name} error`); } catch (e) { - expect(e.name).to.equal(ConversionError.name); + expect(e.name).to.equal('ConversionError'); expect(e.message).to.equal(expectedError.message); } }); diff --git a/test/convert/streams.test.ts b/test/convert/streams.test.ts index 8b43c83761..7e1473f8f3 100644 --- a/test/convert/streams.test.ts +++ b/test/convert/streams.test.ts @@ -9,14 +9,13 @@ import { basename, join, sep } from 'path'; import { Readable, Writable } from 'stream'; import * as fs from 'graceful-fs'; import * as archiver from 'archiver'; -import { Logger } from '@salesforce/core'; +import { Logger, SfError, Messages } from '@salesforce/core'; import { expect } from 'chai'; import { createSandbox, SinonStub } from 'sinon'; import * as streams from '../../src/convert/streams'; import * as fsUtil from '../../src/utils/fileSystemHandler'; import { ComponentSet, MetadataResolver, RegistryAccess, SourceComponent, WriteInfo, WriterFormat } from '../../src'; import { MetadataTransformerFactory } from '../../src/convert/transformers'; -import { LibraryError } from '../../src/errors'; import { COMPONENTS } from '../mock/type-constants/reportConstant'; import { XML_DECL, XML_NS_KEY, XML_NS_URL } from '../../src/common'; import { COMPONENT, CONTENT_NAMES, TYPE_DIRECTORY, XML_NAMES } from '../mock/type-constants/apexClassConstant'; @@ -25,6 +24,9 @@ import { BaseMetadataTransformer } from '../../src/convert/transformers/baseMeta const env = createSandbox(); const registryAccess = new RegistryAccess(); +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_convert_invalid_format']); + class TestTransformer extends BaseMetadataTransformer { // eslint-disable-next-line @typescript-eslint/no-unused-vars public async toMetadataFormat(component: SourceComponent): Promise { @@ -67,7 +69,10 @@ describe('Streams', () => { it('should throw error for unexpected conversion format', (done) => { // @ts-ignore constructor argument invalid const converter = new streams.ComponentConverter('badformat'); - const expectedError = new LibraryError('error_convert_invalid_format', 'badformat'); + const expectedError = new SfError( + messages.getMessage('error_convert_invalid_format', ['badformat']), + 'LibraryError' + ); // convert overrides node's Transform _transform method // eslint-disable-next-line no-underscore-dangle converter._transform(component, '', (err: Error) => { diff --git a/test/convert/transformers/decomposedMetadataTransformer.test.ts b/test/convert/transformers/decomposedMetadataTransformer.test.ts index b8861e7542..2c86314d1b 100644 --- a/test/convert/transformers/decomposedMetadataTransformer.test.ts +++ b/test/convert/transformers/decomposedMetadataTransformer.test.ts @@ -8,6 +8,7 @@ import { join } from 'path'; import { expect } from 'chai'; import { createSandbox } from 'sinon'; +import { Messages } from '@salesforce/core'; import { assert } from '@salesforce/ts-types'; import { decomposed, matchingContentFile } from '../../mock'; import { DecomposedMetadataTransformer } from '../../../src/convert/transformers/decomposedMetadataTransformer'; @@ -17,12 +18,13 @@ import { DECOMPOSED_TOP_LEVEL_COMPONENT } from '../../mock/type-constants/custom import { ComponentSet, ForceIgnore, registry, RegistryAccess, SourceComponent } from '../../../src'; import { XML_NS_KEY, XML_NS_URL } from '../../../src/common'; import { ConvertContext } from '../../../src/convert/convertContext'; -import { TypeInferenceError } from '../../../src/errors'; -import { nls } from '../../../src/i18n'; const env = createSandbox(); const registryAccess = new RegistryAccess(); +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_unexpected_child_type']); + describe('DecomposedMetadataTransformer', () => { const component = decomposed.DECOMPOSED_COMPONENT; @@ -110,9 +112,8 @@ describe('DecomposedMetadataTransformer', () => { await transformer.toMetadataFormat(parentComponent); assert(false, 'expected TypeInferenceError to be thrown'); } catch (err) { - expect(err).to.be.instanceOf(TypeInferenceError); - const msg = nls.localize('error_unexpected_child_type', [fsPath, component.type.name]); - expect(err.message).to.equal(msg); + expect(err.name).to.equal('TypeInferenceError'); + expect(err.message).to.equal(messages.getMessage('error_unexpected_child_type', [fsPath, component.type.name])); } }); }); @@ -474,9 +475,10 @@ describe('DecomposedMetadataTransformer', () => { await transformer.toSourceFormat(component, parentComponent); assert(false, 'expected TypeInferenceError to be thrown'); } catch (err) { - expect(err).to.be.instanceOf(TypeInferenceError); - const msg = nls.localize('error_unexpected_child_type', [fsPath, component.type.name]); - expect(err.message).to.equal(msg); + expect(err.name).to.equal('TypeInferenceError'); + expect(err.message).to.equal( + messages.getMessage('error_unexpected_child_type', [fsPath, component.type.name]) + ); } }); diff --git a/test/convert/transformers/metadataTransformerFactory.test.ts b/test/convert/transformers/metadataTransformerFactory.test.ts index 0732e038fd..06e98ad5ae 100644 --- a/test/convert/transformers/metadataTransformerFactory.test.ts +++ b/test/convert/transformers/metadataTransformerFactory.test.ts @@ -6,6 +6,7 @@ */ import { assert, expect } from 'chai'; +import { Messages, SfError } from '@salesforce/core'; import { RegistryAccess, SourceComponent, registry } from '../../../src'; import { ConvertContext } from '../../../src/convert/convertContext'; import { MetadataTransformerFactory } from '../../../src/convert/transformers'; @@ -16,8 +17,9 @@ import { StaticResourceMetadataTransformer } from '../../../src/convert/transfor import { matchingContentFile, mixedContentSingleFile } from '../../mock'; import { DECOMPOSED_COMPONENT } from '../../mock/type-constants/customObjectConstant'; import { COMPONENT_1 } from '../../mock/type-constants/customlabelsConstant'; -import { RegistryError } from '../../../src/errors'; -import { nls } from '../../../src/i18n'; + +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_missing_transformer']); const registryAccess = new RegistryAccess(); @@ -70,8 +72,8 @@ describe('MetadataTransformerFactory', () => { const factory = new MetadataTransformerFactory(registryAccess); assert.throws( () => factory.getTransformer(component), - RegistryError, - nls.localize('error_missing_transformer', [type.name, type.strategies.transformer]) + SfError, + messages.getMessage('error_missing_transformer', [type.name, type.strategies.transformer]) ); }); }); diff --git a/test/convert/transformers/staticResourceMetadataTransformer.test.ts b/test/convert/transformers/staticResourceMetadataTransformer.test.ts index d25056661e..6af2fae8b1 100644 --- a/test/convert/transformers/staticResourceMetadataTransformer.test.ts +++ b/test/convert/transformers/staticResourceMetadataTransformer.test.ts @@ -6,7 +6,7 @@ */ import { basename, join } from 'path'; import deepEqualInAnyOrder = require('deep-equal-in-any-order'); - +import { Messages } from '@salesforce/core'; import * as archiver from 'archiver'; import { expect } from 'chai'; import { createSandbox } from 'sinon'; @@ -14,8 +14,6 @@ import { CentralDirectory, Entry, Open } from 'unzipper'; import chai = require('chai'); import { registry, SourceComponent, VirtualTreeContainer, WriteInfo } from '../../../src'; import { StaticResourceMetadataTransformer } from '../../../src/convert/transformers/staticResourceMetadataTransformer'; -import { LibraryError } from '../../../src/errors'; -import { nls } from '../../../src/i18n'; import { baseName } from '../../../src/utils'; import { mixedContentSingleFile } from '../../mock'; import { @@ -29,6 +27,12 @@ chai.use(deepEqualInAnyOrder); const env = createSandbox(); +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_static_resource_expected_archive_type', + 'error_static_resource_missing_resource_file', +]); + describe('StaticResourceMetadataTransformer', () => { const transformer = new StaticResourceMetadataTransformer(); transformer.defaultDirectory = 'test'; @@ -109,9 +113,9 @@ describe('StaticResourceMetadataTransformer', () => { try { await transformer.toMetadataFormat(component); } catch (e) { - expect(e.name).to.equal(LibraryError.name); + expect(e.name).to.equal('LibraryError'); expect(e.message).to.equal( - nls.localize('error_static_resource_expected_archive_type', [contentType, component.name]) + messages.getMessage('error_static_resource_expected_archive_type', [contentType, component.name]) ); } }); @@ -129,7 +133,7 @@ describe('StaticResourceMetadataTransformer', () => { await transformer.toMetadataFormat(component); } catch (e) { expect(e.message).to.deep.equalInAnyOrder( - nls.localize('error_static_resource_missing_resource_file', [join('staticresources', component.name)]) + messages.getMessage('error_static_resource_missing_resource_file', [join('staticresources', component.name)]) ); } }); diff --git a/test/i18n/i18n.ts b/test/i18n/i18n.ts deleted file mode 100644 index b9158c08bb..0000000000 --- a/test/i18n/i18n.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright (c) 2020, salesforce.com, inc. - * All rights reserved. - * Licensed under the BSD 3-Clause license. - * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause - */ -/* eslint camelcase: 0 */ -export const messages = { - key_1: 'Hello', - key_2: 'Bye', - key_3_with_args: 'Hello %s', -}; diff --git a/test/i18n/localization.test.ts b/test/i18n/localization.test.ts deleted file mode 100644 index 930d3244d2..0000000000 --- a/test/i18n/localization.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2020, 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 { expect } from 'chai'; -import { Localization, Message } from '../../src/i18n'; -import * as i18n from './i18n'; - -/** - * This snippet of code needs to be copied/generated to all localization points. - */ -function loadMessageBundle(): Message { - return new Message(i18n.messages); -} - -describe('Localization tests', () => { - it('Should handle default locale', () => { - const nls = new Localization(loadMessageBundle()); - expect(nls.localize('key_1')).to.be.equals('Hello'); - }); - - it('Should not fail if a key is missing in default locale', () => { - const nls = new Localization(loadMessageBundle()); - expect(nls.localize('non_existent_key')).to.be.equals('!!! MISSING LABEL !!! non_existent_key'); - }); - - it('Should not error if arg counts do no match', () => { - const nls = new Localization(loadMessageBundle()); - expect(() => nls.localize('key_3')).to.not.throw(); - }); - - it('Should perform substitution in default locale if args >=1', () => { - const nls = new Localization(loadMessageBundle()); - expect(nls.localize('key_3_with_args', 'John')).to.be.equals('Hello John'); - }); - - it('Should perform substitution in default locale if args >=1 with an array', () => { - const nls = new Localization(loadMessageBundle()); - expect(nls.localize('key_3_with_args', ['John'])).to.be.equals('Hello John'); - }); - - it('Should append args for missing label', () => { - const nls = new Localization(loadMessageBundle()); - expect(nls.localize('non_existent_key', 'John')).to.be.equals('!!! MISSING LABEL !!! non_existent_key (John)'); - }); -}); diff --git a/test/mock/client/index.ts b/test/mock/client/index.ts index bb17dd11da..23d1b1f663 100644 --- a/test/mock/client/index.ts +++ b/test/mock/client/index.ts @@ -4,11 +4,12 @@ * 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 { Writable, pipeline } from 'stream'; +import { pipeline, Writable } from 'stream'; import { promisify } from 'util'; -import { Connection, AuthInfo } from '@salesforce/core'; +import { AuthInfo, Connection } from '@salesforce/core'; import { MockTestOrgData, TestContext } from '@salesforce/core/lib/testSetup'; import { create as createArchive } from 'archiver'; +import { AnyJson } from '@salesforce/ts-types'; export async function createMockZip(entries: string[]): Promise { const archive = createArchive('zip'); @@ -28,9 +29,13 @@ export async function createMockZip(entries: string[]): Promise { export async function mockConnection($$: TestContext): Promise { const testData = new MockTestOrgData(); - $$.setConfigStubContents('AuthInfoConfig', { - contents: await testData.getConfig(), - }); + $$.configStubs.GlobalInfo = { + contents: { + orgs: Object.assign($$.configStubs.GlobalInfo?.contents?.orgs || {}, { + [testData.username]: testData as unknown as AnyJson, + }), + }, + }; return Connection.create({ authInfo: await AuthInfo.create({ username: testData.username, diff --git a/test/mock/client/transferOperations.ts b/test/mock/client/transferOperations.ts index 635ebc167a..2cd5b6553c 100644 --- a/test/mock/client/transferOperations.ts +++ b/test/mock/client/transferOperations.ts @@ -6,10 +6,10 @@ */ import { join, sep } from 'path'; -import { testSetup } from '@salesforce/core/lib/testSetup'; +import { testSetup, TestContext } from '@salesforce/core/lib/testSetup'; import { PollingClient } from '@salesforce/core'; import { match, SinonSandbox, SinonSpy, SinonStub } from 'sinon'; -import { AsyncResult, DeployResultLocator } from 'jsforce'; +import { AsyncResult } from 'jsforce/lib/api/metadata'; import { ComponentSet, ConvertOutputConfig, @@ -32,7 +32,7 @@ import { ComponentProperties } from '../../../src/resolve/sourceComponent'; import { normalizeToArray } from '../../../src/utils'; import { createMockZip, mockConnection } from '.'; -export const MOCK_ASYNC_RESULT = { id: '1234', state: RequestStatus.Pending, done: false }; +export const MOCK_ASYNC_RESULT: AsyncResult = { id: '1234', state: RequestStatus.Pending, done: false }; export const MOCK_DEFAULT_OUTPUT = sep + 'test'; export const MOCK_RECENTLY_VALIDATED_ID_REST = { id: '1234567890' }; export const MOCK_RECENTLY_VALIDATED_ID_SOAP = '0987654321'; @@ -60,19 +60,21 @@ interface DeployOperationLifecycle { } export async function stubMetadataDeploy( - sandbox: SinonSandbox, + context: TestContext, options: DeployStubOptions = { components: new ComponentSet() } ): Promise { + const sandbox = context.SANDBOX; const zipBuffer = Buffer.from('1234'); - const connection = await mockConnection(testSetup()); + const connection = await mockConnection(context); - const deployStub = sandbox.stub(connection, 'deploy'); + const deployStub = sandbox.stub(connection.metadata, 'deploy'); + const deployRestStub = sandbox.stub(connection.metadata, 'deployRest'); const pollingClientSpy = sandbox.spy(PollingClient, 'create'); - deployStub - .withArgs(zipBuffer, options.apiOptions ?? MetadataApiDeploy.DEFAULT_OPTIONS.apiOptions) - // overriding return type to match API - .resolves(MOCK_ASYNC_RESULT as unknown as DeployResultLocator); + const { rest, ...defaultOptions } = MetadataApiDeploy.DEFAULT_OPTIONS.apiOptions; + deployRestStub.withArgs(zipBuffer, options.apiOptions ?? defaultOptions).resolves(MOCK_ASYNC_RESULT); + + deployStub.withArgs(zipBuffer, options.apiOptions ?? defaultOptions).resolves(MOCK_ASYNC_RESULT); const deployRecentlyValidatedIdStub = sandbox.stub(connection, 'deployRecentValidation'); deployRecentlyValidatedIdStub @@ -117,7 +119,8 @@ export async function stubMetadataDeploy( const invokeStub = sandbox.stub(connection.metadata, '_invoke'); const invokeResultStub = sandbox.stub(); invokeStub.returns({ - thenCall: (f: (result: unknown | null) => void) => { + // @ts-ignore + then: (f: (result: unknown | null) => void) => { return f(invokeResultStub()); }, }); diff --git a/test/mock/manifestConstants.ts b/test/mock/manifestConstants.ts index cc060d09fc..5482b96b3d 100644 --- a/test/mock/manifestConstants.ts +++ b/test/mock/manifestConstants.ts @@ -8,6 +8,9 @@ import { join } from 'path'; import { registry, VirtualFile, VirtualTreeContainer } from '../../src'; +export const testApiVersion = 50; +export const testApiVersionAsString = `${testApiVersion}.0`; + export const BASIC: VirtualFile = { name: 'basic.xml', data: Buffer.from(` @@ -21,7 +24,7 @@ export const BASIC: VirtualFile = { c ${registry.types.staticresource.name} - ${registry.apiVersion} + ${testApiVersionAsString} \n`), }; @@ -37,7 +40,7 @@ export const ONE_OF_EACH: VirtualFile = { b ${registry.types.staticresource.name} - ${registry.apiVersion} + ${testApiVersionAsString} \n`), }; @@ -49,7 +52,7 @@ export const ONE_FOLDER_MEMBER: VirtualFile = { Test_Folder ${registry.types.documentfolder.name} - ${registry.apiVersion} + ${testApiVersionAsString} \n`), }; @@ -63,7 +66,7 @@ export const IN_FOLDER_WITH_CONTENT: VirtualFile = { Test_Folder/report2 ${registry.types.documentfolder.name} - ${registry.apiVersion} + ${testApiVersionAsString} \n`), }; @@ -75,7 +78,7 @@ export const ONE_WILDCARD: VirtualFile = { * ${registry.types.staticresource.name} - ${registry.apiVersion} + ${testApiVersionAsString} \n`), }; diff --git a/test/registry/registryAccess.test.ts b/test/registry/registryAccess.test.ts index 41ffee2f79..bf73e17ccc 100644 --- a/test/registry/registryAccess.test.ts +++ b/test/registry/registryAccess.test.ts @@ -5,15 +5,14 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import { assert, expect } from 'chai'; -import { RegistryError } from '../../src/errors'; -import { nls } from '../../src/i18n'; +import { Messages, SfError } from '@salesforce/core'; import { MetadataRegistry, MetadataType, registry, RegistryAccess } from '../../src'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_missing_type_definition']); + describe('RegistryAccess', () => { const registryAccess = new RegistryAccess(); - it('should return apiVersion of the registry', () => { - expect(registryAccess.apiVersion).to.equal(registry.apiVersion); - }); describe('getTypeByName', () => { it('should return alias of a type when one exists', () => { @@ -37,8 +36,8 @@ describe('RegistryAccess', () => { it('should throw an error if type definition missing', () => { assert.throws( () => registryAccess.getTypeByName('TypeWithoutDef'), - RegistryError, - nls.localize('error_missing_type_definition', 'typewithoutdef') + SfError, + messages.getMessage('error_missing_type_definition', ['typewithoutdef']) ); }); }); diff --git a/test/registry/registryValidation.test.ts b/test/registry/registryValidation.test.ts index a0073edd71..27f32f2d0f 100644 --- a/test/registry/registryValidation.test.ts +++ b/test/registry/registryValidation.test.ts @@ -337,4 +337,15 @@ describe('Registry Validation', () => { }); }); }); + + describe('thou shalt not use .xml as a suffix without strictDir', () => { + // this causes lots of cases of mistaken identity + const xmlIsMySuffix = Object.values(registry.types).filter((type) => type.suffix === '.xml'); + + xmlIsMySuffix.forEach((type) => { + it(`${type.name} has strictDir: true`, () => { + expect(type.strictDirectoryName).to.equal(true); + }); + }); + }); }); diff --git a/test/resolve/adapters/baseSourceAdapter.test.ts b/test/resolve/adapters/baseSourceAdapter.test.ts index 05ad4ceb5e..973e57db29 100644 --- a/test/resolve/adapters/baseSourceAdapter.test.ts +++ b/test/resolve/adapters/baseSourceAdapter.test.ts @@ -5,15 +5,18 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import { join } from 'path'; +import { Messages, SfError } from '@salesforce/core'; + import { assert, expect } from 'chai'; import { decomposed, matchingContentFile, mixedContentSingleFile, nestedTypes, xmlInFolder } from '../../mock'; import { BaseSourceAdapter, DefaultSourceAdapter } from '../../../src/resolve/adapters'; import { META_XML_SUFFIX } from '../../../src/common'; -import { UnexpectedForceIgnore } from '../../../src/errors'; -import { nls } from '../../../src/i18n'; import { RegistryTestUtil } from '../registryTestUtil'; import { ForceIgnore, registry, SourceComponent } from '../../../src'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_no_metadata_xml_ignore']); + class TestAdapter extends BaseSourceAdapter { public readonly component: SourceComponent; @@ -67,10 +70,11 @@ describe('BaseSourceAdapter', () => { deny: [path], }); const adapter = new TestAdapter(matchingContentFile.COMPONENT, forceIgnore); + assert.throws( () => adapter.getComponent(path), - UnexpectedForceIgnore, - nls.localize('error_no_metadata_xml_ignore', [path, path]) + SfError, + messages.getMessage('error_no_metadata_xml_ignore', [path, path]) ); testUtil.restore(); }); diff --git a/test/resolve/adapters/matchingContentSourceAdapter.test.ts b/test/resolve/adapters/matchingContentSourceAdapter.test.ts index dff01550ac..eb5d045248 100644 --- a/test/resolve/adapters/matchingContentSourceAdapter.test.ts +++ b/test/resolve/adapters/matchingContentSourceAdapter.test.ts @@ -6,13 +6,18 @@ */ import { join } from 'path'; import { assert, expect } from 'chai'; +import { Messages, SfError } from '@salesforce/core'; import { MatchingContentSourceAdapter } from '../../../src/resolve/adapters'; import { matchingContentFile } from '../../mock'; -import { ExpectedSourceFilesError, UnexpectedForceIgnore } from '../../../src/errors'; import { RegistryTestUtil } from '../registryTestUtil'; -import { nls } from '../../../src/i18n'; import { registry, RegistryAccess, SourceComponent, VirtualTreeContainer } from '../../../src'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_no_source_ignore', + 'error_expected_source_files', +]); + describe('MatchingContentSourceAdapter', () => { const registryAccess = new RegistryAccess(); const type = registry.types.apexclass; @@ -36,12 +41,20 @@ describe('MatchingContentSourceAdapter', () => { it('Should throw an ExpectedSourceFilesError if no source is found from xml', () => { const path = join(TYPE_DIRECTORY, 'b.xyz-meta.xml'); - assert.throws(() => adapter.getComponent(path), ExpectedSourceFilesError); + assert.throws( + () => adapter.getComponent(path), + SfError, + messages.getMessage('error_expected_source_files', [path, type.name]) + ); }); it('Should throw an ExpectedSourceFilesError if source and suffix not found', () => { const path = join(TYPE_DIRECTORY, 'b.xyz'); - assert.throws(() => adapter.getComponent(path), ExpectedSourceFilesError); + assert.throws( + () => adapter.getComponent(path), + SfError, + messages.getMessage('error_expected_source_files', [path, type.name]) + ); }); it('Should throw an error if content file is forceignored', () => { @@ -54,8 +67,8 @@ describe('MatchingContentSourceAdapter', () => { const adapter = new MatchingContentSourceAdapter(type, registryAccess, forceIgnore, tree); assert.throws( () => adapter.getComponent(path), - UnexpectedForceIgnore, - nls.localize('error_no_source_ignore', [type.name, path]) + SfError, + messages.getMessage('error_no_source_ignore', [type.name, path]) ); testUtil.restore(); }); diff --git a/test/resolve/adapters/mixedContentSourceAdapter.test.ts b/test/resolve/adapters/mixedContentSourceAdapter.test.ts index 9c82791100..02c29b27e7 100644 --- a/test/resolve/adapters/mixedContentSourceAdapter.test.ts +++ b/test/resolve/adapters/mixedContentSourceAdapter.test.ts @@ -6,8 +6,8 @@ */ import { assert, expect } from 'chai'; +import { Messages, SfError } from '@salesforce/core'; import { MixedContentSourceAdapter } from '../../../src/resolve/adapters'; -import { ExpectedSourceFilesError } from '../../../src/errors'; import { registry, RegistryAccess, SourceComponent, VirtualTreeContainer } from '../../../src'; import { MIXED_CONTENT_DIRECTORY_CONTENT_PATH, @@ -15,6 +15,8 @@ import { } from '../../mock/type-constants/staticresourceConstant'; import { mixedContentDirectory, mixedContentSingleFile } from '../../mock'; +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_expected_source_files']); + describe('MixedContentSourceAdapter', () => { const registryAccess = new RegistryAccess(); it('Should throw ExpectedSourceFilesError if content does not exist', () => { @@ -26,7 +28,11 @@ describe('MixedContentSourceAdapter', () => { }, ]); const adapter = new MixedContentSourceAdapter(type, registryAccess, undefined, tree); - assert.throws(() => adapter.getComponent(mixedContentSingleFile.COMPONENT.content), ExpectedSourceFilesError); + assert.throws( + () => adapter.getComponent(mixedContentSingleFile.COMPONENT.content), + SfError, + messages.getMessage('error_expected_source_files', [mixedContentSingleFile.CONTENT_PATHS[0], type.name]) + ); }); describe('File Content', () => { diff --git a/test/resolve/adapters/sourceAdapterFactory.test.ts b/test/resolve/adapters/sourceAdapterFactory.test.ts index 81eba63da8..ef223d8332 100644 --- a/test/resolve/adapters/sourceAdapterFactory.test.ts +++ b/test/resolve/adapters/sourceAdapterFactory.test.ts @@ -5,6 +5,7 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import { assert, expect } from 'chai'; +import { Messages, SfError } from '@salesforce/core'; import { MetadataType, registry, RegistryAccess, VirtualTreeContainer } from '../../../src'; import { BundleSourceAdapter, @@ -14,8 +15,9 @@ import { MixedContentSourceAdapter, } from '../../../src/resolve/adapters'; import { SourceAdapterFactory } from '../../../src/resolve/adapters/sourceAdapterFactory'; -import { RegistryError } from '../../../src/errors'; -import { nls } from '../../../src/i18n'; + +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_missing_adapter']); /** * The types being passed to getAdapter don't really matter in these tests. We're @@ -73,8 +75,8 @@ describe('SourceAdapterFactory', () => { assert.throws( () => factory.getAdapter(type), - RegistryError, - nls.localize('error_missing_adapter', [type.strategies.adapter, type.name]) + SfError, + messages.getMessage('error_missing_adapter', [type.strategies.adapter, type.name]) ); }); }); diff --git a/test/resolve/manifestResolver.test.ts b/test/resolve/manifestResolver.test.ts index 576ddde17e..30d9387fbf 100644 --- a/test/resolve/manifestResolver.test.ts +++ b/test/resolve/manifestResolver.test.ts @@ -64,7 +64,6 @@ describe('ManifestResolver', () => { ]; expect(result.components).to.deep.equal(expected); - expect(result.apiVersion).to.equal(registry.apiVersion); }); it('should interpret a member of a type in folders with no delimiter as its corresponding folder type', async () => { diff --git a/test/resolve/metadataResolver.test.ts b/test/resolve/metadataResolver.test.ts index 501095e995..a81b22c452 100644 --- a/test/resolve/metadataResolver.test.ts +++ b/test/resolve/metadataResolver.test.ts @@ -7,6 +7,7 @@ import { basename, dirname, join } from 'path'; import { assert, expect } from 'chai'; +import { Messages, SfError } from '@salesforce/core'; import { ComponentSet, MetadataResolver, @@ -16,7 +17,6 @@ import { VirtualDirectory, VirtualTreeContainer, } from '../../src'; -import { nls } from '../../src/i18n'; import { bundle, decomposedtoplevel, @@ -25,7 +25,6 @@ import { mixedContentInFolder, xmlInFolder, } from '../mock'; -import { TypeInferenceError } from '../../src/errors'; import { DECOMPOSED_CHILD_COMPONENT_1, DECOMPOSED_CHILD_DIR_PATH, @@ -48,6 +47,12 @@ import { RegistryTestUtil } from './registryTestUtil'; const testUtil = new RegistryTestUtil(); +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_path_not_found', + 'error_could_not_infer_type', +]); + describe('MetadataResolver', () => { const resolver = new MetadataResolver(); const registryAccess = new RegistryAccess(registry); @@ -98,8 +103,8 @@ describe('MetadataResolver', () => { assert.throws( () => resolver.getComponentsFromPath(path), - TypeInferenceError, - nls.localize('error_path_not_found', [path]) + SfError, + messages.getMessage('error_path_not_found', [path]) ); }); @@ -315,8 +320,8 @@ describe('MetadataResolver', () => { ]); assert.throws( () => access.getComponentsFromPath(missing), - TypeInferenceError, - nls.localize('error_could_not_infer_type', [missing]) + SfError, + messages.getMessage('error_could_not_infer_type', [missing]) ); }); diff --git a/test/resolve/sourceComponent.test.ts b/test/resolve/sourceComponent.test.ts index 295dcfc63b..f1a58ae96b 100644 --- a/test/resolve/sourceComponent.test.ts +++ b/test/resolve/sourceComponent.test.ts @@ -7,6 +7,8 @@ import { join } from 'path'; import { assert, expect } from 'chai'; import { createSandbox } from 'sinon'; +import { Messages, SfError } from '@salesforce/core'; + import { decomposed, matchingContentFile, mixedContentDirectory, xmlInFolder } from '../mock'; import { DECOMPOSED_COMPONENT } from '../mock/type-constants/customObjectConstant'; import { COMPONENT } from '../mock/type-constants/apexClassConstant'; @@ -31,10 +33,11 @@ import { VirtualTreeContainer, } from '../../src'; import { DecomposedSourceAdapter } from '../../src/resolve/adapters'; -import { TypeInferenceError } from '../../src/errors'; -import { nls } from '../../src/i18n'; import { RegistryTestUtil } from './registryTestUtil'; +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', ['error_unexpected_child_type']); + const env = createSandbox(); describe('SourceComponent', () => { @@ -377,8 +380,8 @@ describe('SourceComponent', () => { assert.throws( () => adapter.getComponent(fsPath, false), - TypeInferenceError, - nls.localize('error_unexpected_child_type', [fsPath, type.name]) + SfError, + messages.getMessage('error_unexpected_child_type', [fsPath, type.name]) ); }); }); diff --git a/test/resolve/treeContainers.test.ts b/test/resolve/treeContainers.test.ts index dd5e9bed1d..42b65d6273 100644 --- a/test/resolve/treeContainers.test.ts +++ b/test/resolve/treeContainers.test.ts @@ -7,6 +7,7 @@ import { join, normalize } from 'path'; import { pipeline as cbPipeline, Readable, Writable } from 'stream'; import { promisify } from 'util'; +import { Messages, SfError } from '@salesforce/core'; import { assert, expect } from 'chai'; import { createSandbox } from 'sinon'; import * as fs from 'graceful-fs'; @@ -20,8 +21,14 @@ import { VirtualTreeContainer, ZipTreeContainer, } from '../../src'; -import { LibraryError } from '../../src/errors'; -import { nls } from '../../src/i18n'; + +Messages.importMessagesDirectory(__dirname); +const messages = Messages.load('@salesforce/source-deploy-retrieve', 'sdr', [ + 'error_expected_directory_path', + 'error_path_not_found', + 'error_expected_file_path', + 'error_no_directory_stream', +]); describe('Tree Containers', () => { const readDirResults = ['a.q', 'a.x-meta.xml', 'b', 'b.x-meta.xml', 'c.z', 'c.x-meta.xml']; @@ -183,7 +190,7 @@ describe('Tree Containers', () => { it('should throw an error if path does not exist', () => { const path = 'dne'; - assert.throws(() => tree.isDirectory(path), LibraryError, nls.localize('error_path_not_found', path)); + assert.throws(() => tree.isDirectory(path), SfError, messages.getMessage('error_path_not_found', [path])); }); }); @@ -205,8 +212,8 @@ describe('Tree Containers', () => { const path = join(filesRoot, 'test2.txt'); assert.throws( () => tree.readDirectory(path), - LibraryError, - nls.localize('error_expected_directory_path', path) + SfError, + messages.getMessage('error_expected_directory_path', [path]) ); }); }); @@ -222,8 +229,8 @@ describe('Tree Containers', () => { assert.throws( // eslint-disable-next-line @typescript-eslint/no-misused-promises () => tree.readFile(filesRoot), - LibraryError, - nls.localize('error_expected_file_path', filesRoot) + SfError, + messages.getMessage('error_expected_file_path', [filesRoot]) ); }); }); @@ -247,8 +254,8 @@ describe('Tree Containers', () => { it('should throw an error if given path is to a directory', () => { assert.throws( () => tree.stream(filesRoot), - LibraryError, - nls.localize('error_no_directory_stream', tree.constructor.name) + SfError, + messages.getMessage('error_no_directory_stream', [tree.constructor.name]) ); }); }); @@ -306,7 +313,7 @@ describe('Tree Containers', () => { it('should throw an error if path does not exist', () => { const path = 'dne'; - assert.throws(() => tree.isDirectory(path), LibraryError, nls.localize('error_path_not_found', path)); + assert.throws(() => tree.isDirectory(path), SfError, messages.getMessage('error_path_not_found', [path])); }); }); @@ -318,8 +325,8 @@ describe('Tree Containers', () => { it('should throw an error if path is not a directory', () => { assert.throws( () => tree.readDirectory('test.txt'), - LibraryError, - nls.localize('error_expected_directory_path', 'test.txt') + SfError, + messages.getMessage('error_expected_directory_path', ['test.txt']) ); }); }); @@ -341,7 +348,7 @@ describe('Tree Containers', () => { await tree.readFile(path); assert.fail('should have thrown an error'); } catch (e) { - expect(e.message).to.deep.equal(nls.localize('error_path_not_found', path)); + expect(e.message).to.deep.equal(messages.getMessage('error_path_not_found', [path])); } }); }); @@ -363,7 +370,7 @@ describe('Tree Containers', () => { tree.readFileSync(path); assert.fail('should have thrown an error'); } catch (e) { - expect(e.message).to.deep.equal(nls.localize('error_path_not_found', path)); + expect(e.message).to.deep.equal(messages.getMessage('error_path_not_found', [path])); } }); }); diff --git a/test/tsconfig.json b/test/tsconfig.json index 868db6c629..06e4f23eb9 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -4,6 +4,7 @@ "compilerOptions": { // Needed in order to import metadataRegistry.json "resolveJsonModule": true, + "skipLibCheck": true, "lib": ["es2020"], "target": "es2020" } diff --git a/tsconfig.json b/tsconfig.json index fb3d8c88f8..605deb5f02 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,10 +3,13 @@ "compilerOptions": { // Needed in order to import metadataRegistry.json "resolveJsonModule": true, + "lib": ["es2020"], + "target": "es2020", "rootDir": ".", "outDir": "lib", - "lib": ["es2020"], - "target": "es2020" + "skipLibCheck": true, + "baseUrl": ".", + "paths": { "@salesforce/kit": ["node_modules/@salesforce/kit"] } }, "include": ["./src/**/*.ts", "./src/registry/metadataRegistry.json", "./src/registry/stdValueSetRegistry.json"], "exclude": ["node_modules", "lib", "examples"] diff --git a/yarn.lock b/yarn.lock index 8b1662a3a5..cfe9180ab3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,14 @@ # yarn lockfile v1 +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -9,339 +17,333 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== dependencies: - "@babel/highlight" "^7.14.5" + "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" - integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== +"@babel/compat-data@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" + integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== "@babel/core@^7.7.5": - version "7.15.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" - integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.5" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" + integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.10" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.10" + "@babel/types" "^7.17.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.1.2" + json5 "^2.2.1" semver "^6.3.0" - source-map "^0.5.0" -"@babel/generator@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" - integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw== +"@babel/generator@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189" + integrity sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.17.10" + "@jridgewell/gen-mapping" "^0.1.0" jsesc "^2.5.1" - source-map "^0.5.0" -"@babel/helper-compilation-targets@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" - integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== +"@babel/helper-compilation-targets@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe" + integrity sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ== dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" + "@babel/compat-data" "^7.17.10" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-function-name@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" - integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== - dependencies: - "@babel/helper-get-function-arity" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-get-function-arity@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" - integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-hoist-variables@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" - integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-member-expression-to-functions@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" - integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-imports@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" - integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-transforms@^7.15.4": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz#7da80c8cbc1f02655d83f8b79d25866afe50d226" - integrity sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw== - dependencies: - "@babel/helper-module-imports" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-simple-access" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" - -"@babel/helper-optimise-call-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" - integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-replace-supers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" - integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-simple-access@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" - integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-split-export-declaration@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" - integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helpers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" - integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== - dependencies: - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== + dependencies: + "@babel/types" "^7.17.0" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helpers@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" + integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.9" + "@babel/types" "^7.17.0" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" + integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.15.4", "@babel/parser@^7.15.5": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae" - integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g== - -"@babel/template@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" - integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/traverse@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" - integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" +"@babel/parser@^7.16.7", "@babel/parser@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" + integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== + +"@babel/runtime-corejs3@^7.12.5": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz#3d02d0161f0fbf3ada8e88159375af97690f4055" + integrity sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw== + dependencies: + core-js-pure "^3.20.2" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.12.5": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" + integrity sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.10" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.10" + "@babel/types" "^7.17.10" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.15.4", "@babel/types@^7.15.6": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" - integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig== +"@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" + integrity sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A== dependencies: - "@babel/helper-validator-identifier" "^7.14.9" + "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" -"@commitlint/cli@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-12.1.4.tgz#af4d9dd3c0122c7b39a61fa1cd2abbad0422dbe0" - integrity sha512-ZR1WjXLvqEffYyBPT0XdnSxtt3Ty1TMoujEtseW5o3vPnkA1UNashAMjQVg/oELqfaiAMnDw8SERPMN0e/0kLg== +"@commitlint/cli@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-15.0.0.tgz#8e78e86ee2b6955c1a5d140e734a6c171ce367ee" + integrity sha512-Y5xmDCweytqzo4N4lOI2YRiuX35xTjcs8n5hUceBH8eyK0YbwtgWX50BJOH2XbkwEmII9blNhlBog6AdQsqicg== dependencies: - "@commitlint/format" "^12.1.4" - "@commitlint/lint" "^12.1.4" - "@commitlint/load" "^12.1.4" - "@commitlint/read" "^12.1.4" - "@commitlint/types" "^12.1.4" + "@commitlint/format" "^15.0.0" + "@commitlint/lint" "^15.0.0" + "@commitlint/load" "^15.0.0" + "@commitlint/read" "^15.0.0" + "@commitlint/types" "^15.0.0" lodash "^4.17.19" resolve-from "5.0.0" resolve-global "1.0.0" - yargs "^16.2.0" + yargs "^17.0.0" -"@commitlint/config-conventional@^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-10.0.0.tgz#2f5546394c2e580adc23770e2f1ccfcf4887eddc" - integrity sha512-M9l7hh2a1GB9nQ/Gm+aDLGPmzGdpgxqJoSmrbTxDlapJDyaL7FPe5aQf66F50Eq3j0bmaRaJihFCA6mIUBQAag== +"@commitlint/config-conventional@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-15.0.0.tgz#3bf1adf319e3b431de12ba82dc399524038b2d8f" + integrity sha512-eZBRL8Lk3hMNHp1wUMYj0qrZQEsST1ai7KHR8J1IDD9aHgT7L2giciibuQ+Og7vxVhR5WtYDvh9xirXFVPaSkQ== dependencies: conventional-changelog-conventionalcommits "^4.3.1" -"@commitlint/ensure@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-12.1.4.tgz#287ae2dcc5ccb086e749705b1bd9bdb99773056f" - integrity sha512-MxHIBuAG9M4xl33qUfIeMSasbv3ktK0W+iygldBxZOL4QSYC2Gn66pZAQMnV9o3V+sVFHoAK2XUKqBAYrgbEqw== +"@commitlint/ensure@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-15.0.0.tgz#06a63738e2393970a085b428e6cf80fa1fe76f48" + integrity sha512-7DV4iNIald3vycwaWBNGk5FbonaNzOlU8nBe5m5AgU2dIeNKuXwLm+zzJzG27j0Ho56rgz//3F6RIvmsoxY9ZA== dependencies: - "@commitlint/types" "^12.1.4" + "@commitlint/types" "^15.0.0" lodash "^4.17.19" -"@commitlint/execute-rule@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-12.1.4.tgz#9973b02e9779adbf1522ae9ac207a4815ec73de1" - integrity sha512-h2S1j8SXyNeABb27q2Ok2vD1WfxJiXvOttKuRA9Or7LN6OQoC/KtT3844CIhhWNteNMu/wE0gkTqGxDVAnJiHg== +"@commitlint/execute-rule@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-15.0.0.tgz#6bff7962df38e89ff9fdbc00abd79b8849c7e9f9" + integrity sha512-pyE4ApxjbWhb1TXz5vRiGwI2ssdMMgZbaaheZq1/7WC0xRnqnIhE1yUC1D2q20qPtvkZPstTYvMiRVtF+DvjUg== -"@commitlint/format@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-12.1.4.tgz#db2d46418a6ae57c90e5f7f65dff46f0265d9f24" - integrity sha512-h28ucMaoRjVvvgS6Bdf85fa/+ZZ/iu1aeWGCpURnQV7/rrVjkhNSjZwGlCOUd5kDV1EnZ5XdI7L18SUpRjs26g== +"@commitlint/format@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-15.0.0.tgz#10935180913de9384bea4c9217f4c6c5ee100ab3" + integrity sha512-bPhAfqwRhPk92WiuY0ktEJNpRRHSCd+Eg1MdhGyL9Bl3U25E5zvuInA+dNctnzZiOBSH/37ZaD0eOKCpQE6acg== dependencies: - "@commitlint/types" "^12.1.4" + "@commitlint/types" "^15.0.0" chalk "^4.0.0" -"@commitlint/is-ignored@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-12.1.4.tgz#4c430bc3b361aa9be5cd4ddb252c1559870ea7bc" - integrity sha512-uTu2jQU2SKvtIRVLOzMQo3KxDtO+iJ1p0olmncwrqy4AfPLgwoyCP2CiULq5M7xpR3+dE3hBlZXbZTQbD7ycIw== +"@commitlint/is-ignored@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-15.0.0.tgz#382bf9f6f8d810f2ffc59ccc527f4389eadd7949" + integrity sha512-edtnkf2QZ/7e/YCJDgn1WDw9wfF1WfOitW5YEoSOb4SxjJEb/oE87kxNPZ2j8mnDMuunspcMfGHeg6fRlwaEWg== dependencies: - "@commitlint/types" "^12.1.4" + "@commitlint/types" "^15.0.0" semver "7.3.5" -"@commitlint/lint@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-12.1.4.tgz#856b7fd2b2e6367b836cb84a12f1c1b3c0e40d22" - integrity sha512-1kZ8YDp4to47oIPFELUFGLiLumtPNKJigPFDuHt2+f3Q3IKdQ0uk53n3CPl4uoyso/Og/EZvb1mXjFR/Yce4cA== - dependencies: - "@commitlint/is-ignored" "^12.1.4" - "@commitlint/parse" "^12.1.4" - "@commitlint/rules" "^12.1.4" - "@commitlint/types" "^12.1.4" - -"@commitlint/load@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-12.1.4.tgz#e3c2dbc0e7d8d928f57a6878bd7219909fc0acab" - integrity sha512-Keszi0IOjRzKfxT+qES/n+KZyLrxy79RQz8wWgssCboYjKEp+wC+fLCgbiMCYjI5k31CIzIOq/16J7Ycr0C0EA== - dependencies: - "@commitlint/execute-rule" "^12.1.4" - "@commitlint/resolve-extends" "^12.1.4" - "@commitlint/types" "^12.1.4" +"@commitlint/lint@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-15.0.0.tgz#a93b8896fb25b05ab2ed0246d365f4908654588d" + integrity sha512-hUi2+Im/2dJ5FBvWnodypTkg+5haCgsDzB0fyMApWLUA1IucYUAqRCQCW5em1Mhk9Crw1pd5YzFNikhIclkqCw== + dependencies: + "@commitlint/is-ignored" "^15.0.0" + "@commitlint/parse" "^15.0.0" + "@commitlint/rules" "^15.0.0" + "@commitlint/types" "^15.0.0" + +"@commitlint/load@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-15.0.0.tgz#5bd391c1387aafe92b54cf2a86b76a5228fcf4ef" + integrity sha512-Ak1YPeOhvxmY3ioe0o6m1yLGvUAYb4BdfGgShU8jiTCmU3Mnmms0Xh/kfQz8AybhezCC3AmVTyBLaBZxOHR8kg== + dependencies: + "@commitlint/execute-rule" "^15.0.0" + "@commitlint/resolve-extends" "^15.0.0" + "@commitlint/types" "^15.0.0" + "@endemolshinegroup/cosmiconfig-typescript-loader" "^3.0.2" chalk "^4.0.0" cosmiconfig "^7.0.0" lodash "^4.17.19" resolve-from "^5.0.0" + typescript "^4.4.3" -"@commitlint/message@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-12.1.4.tgz#3895edcc0709deca5945f3d55f5ea95a9f1f446d" - integrity sha512-6QhalEKsKQ/Y16/cTk5NH4iByz26fqws2ub+AinHPtM7Io0jy4e3rym9iE+TkEqiqWZlUigZnTwbPvRJeSUBaA== +"@commitlint/message@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-15.0.0.tgz#98a38aca1b3cd996a0fcdbd9ad67e9039df60b0a" + integrity sha512-L8euabzboKavPuDJsdIYAY2wx97LbiGEYsckMo6NmV8pOun50c8hQx6ouXFSAx4pp+mX9yUGmMiVqfrk2LKDJQ== -"@commitlint/parse@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-12.1.4.tgz#ba03d54d24ef84f6fd2ff31c5e9998b22d7d0aa1" - integrity sha512-yqKSAsK2V4X/HaLb/yYdrzs6oD/G48Ilt0EJ2Mp6RJeWYxG14w/Out6JrneWnr/cpzemyN5hExOg6+TB19H/Lw== +"@commitlint/parse@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-15.0.0.tgz#cac77b7514748b8d01d00c0e67d5e54c695c302c" + integrity sha512-7fweM67tZfBNS7zw1KTuuT5K2u9nGytUJqFqT/1Ln3Na9cBCsoAqR47mfsNOTlRCgGwakm4xiQ7BpS2gN0OGuw== dependencies: - "@commitlint/types" "^12.1.4" + "@commitlint/types" "^15.0.0" conventional-changelog-angular "^5.0.11" - conventional-commits-parser "^3.0.0" + conventional-commits-parser "^3.2.2" -"@commitlint/read@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-12.1.4.tgz#552fda42ef185d5b578beb6f626a5f8b282de3a6" - integrity sha512-TnPQSJgD8Aod5Xeo9W4SaYKRZmIahukjcCWJ2s5zb3ZYSmj6C85YD9cR5vlRyrZjj78ItLUV/X4FMWWVIS38Jg== +"@commitlint/read@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-15.0.0.tgz#da839f3b4d49b05586a9cd2666cc8c4a36b9ec91" + integrity sha512-5yI1o2HKZFVe7RTjL7IhuhHMKar/MDNY34vEHqqz9gMI7BK/rdP8uVb4Di1efl2V0UPnwID0nPKWESjQ8Ti0gw== dependencies: - "@commitlint/top-level" "^12.1.4" - "@commitlint/types" "^12.1.4" - fs-extra "^9.0.0" + "@commitlint/top-level" "^15.0.0" + "@commitlint/types" "^15.0.0" + fs-extra "^10.0.0" git-raw-commits "^2.0.0" -"@commitlint/resolve-extends@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-12.1.4.tgz#e758ed7dcdf942618b9f603a7c28a640f6a0802a" - integrity sha512-R9CoUtsXLd6KSCfsZly04grsH6JVnWFmVtWgWs1KdDpdV+G3TSs37tColMFqglpkx3dsWu8dsPD56+D9YnJfqg== +"@commitlint/resolve-extends@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-15.0.0.tgz#baf21227e2ac52cef546ec35dd6732e9b0b6e57c" + integrity sha512-7apfRJjgJsKja7lHsPfEFixKjA/fk/UeD3owkOw1174yYu4u8xBDLSeU3IinGPdMuF9m245eX8wo7vLUy+EBSg== dependencies: import-fresh "^3.0.0" lodash "^4.17.19" resolve-from "^5.0.0" resolve-global "^1.0.0" -"@commitlint/rules@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-12.1.4.tgz#0e141b08caa3d7bdc48aa784baa8baff3efd64db" - integrity sha512-W8m6ZSjg7RuIsIfzQiFHa48X5mcPXeKT9yjBxVmjHvYfS2FDBf1VxCQ7vO0JTVIdV4ohjZ0eKg/wxxUuZHJAZg== +"@commitlint/rules@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-15.0.0.tgz#326370abc004492fcb5543198d1d55b14e25e3c8" + integrity sha512-SqXfp6QUlwBS+0IZm4FEA/NmmAwcFQIkG3B05BtemOVWXQdZ8j1vV6hDwvA9oMPCmUSrrGpHOtZK7HaHhng2yA== dependencies: - "@commitlint/ensure" "^12.1.4" - "@commitlint/message" "^12.1.4" - "@commitlint/to-lines" "^12.1.4" - "@commitlint/types" "^12.1.4" + "@commitlint/ensure" "^15.0.0" + "@commitlint/message" "^15.0.0" + "@commitlint/to-lines" "^15.0.0" + "@commitlint/types" "^15.0.0" + execa "^5.0.0" -"@commitlint/to-lines@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-12.1.4.tgz#caa582dbf121f377a0588bb64e25c4854843cd25" - integrity sha512-TParumvbi8bdx3EdLXz2MaX+e15ZgoCqNUgqHsRLwyqLUTRbqCVkzrfadG1UcMQk8/d5aMbb327ZKG3Q4BRorw== +"@commitlint/to-lines@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-15.0.0.tgz#b86ac98f319688990ecc2e09227fadf591b65c92" + integrity sha512-mY3MNA9ujPqVpiJjTYG9MDsYCobue5PJFO0MfcIzS1mCVvngH8ZFTPAh1fT5t+t1h876boS88+9WgqjRvbYItw== -"@commitlint/top-level@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-12.1.4.tgz#96d5c715bfc1bdf86dfcf11b67fc2cf7658c7a6e" - integrity sha512-d4lTJrOT/dXlpY+NIt4CUl77ciEzYeNVc0VFgUQ6VA+b1rqYD2/VWFjBlWVOrklxtSDeKyuEhs36RGrppEFAvg== +"@commitlint/top-level@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-15.0.0.tgz#467ec8377e81dfc916e1a20a27558862be1a4254" + integrity sha512-7Gz3t7xcuuUw1d1Nou6YLaztzp2Em+qZ6YdCzrqYc+aquca3Vt0O696nuiBDU/oE+tls4Hx2CNpAbWhTgEwB5A== dependencies: find-up "^5.0.0" -"@commitlint/types@^12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-12.1.4.tgz#9618a5dc8991fb58e6de6ed89d7bf712fa74ba7e" - integrity sha512-KRIjdnWNUx6ywz+SJvjmNCbQKcKP6KArhjZhY2l+CWKxak0d77SOjggkMwFTiSgLODOwmuLTbarR2ZfWPiPMlw== +"@commitlint/types@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-15.0.0.tgz#46fa7bda3e6340caf3e3a2e415bcb78ff0195eed" + integrity sha512-OMSLX+QJnyNoTwws54ULv9sOvuw9GdVezln76oyUd4YbMMJyaav62aSXDuCdWyL2sm9hTkSzyEi52PNaIj/vqw== dependencies: chalk "^4.0.0" @@ -357,6 +359,16 @@ dependencies: "@cspotcode/source-map-consumer" "0.8.0" +"@endemolshinegroup/cosmiconfig-typescript-loader@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz#eea4635828dde372838b0909693ebd9aafeec22d" + integrity sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA== + dependencies: + lodash.get "^4" + make-error "^1" + ts-node "^9" + tslib "^2" + "@es-joy/jsdoccomment@0.9.0-alpha.1": version "0.9.0-alpha.1" resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.9.0-alpha.1.tgz#f48bd162e185ec7f9f222273a282d10e52fe52f7" @@ -391,9 +403,9 @@ minimatch "^3.0.4" "@humanwhocodes/object-schema@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" - integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -411,6 +423,37 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz#4ac237f4dabc8dd93330386907b97591801f7352" + integrity sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw== + +"@jridgewell/set-array@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.0.tgz#1179863356ac8fbea64a5a4bcde93a4871012c01" + integrity sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.12" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.12.tgz#7ed98f6fa525ffb7c56a2cbecb5f7bb91abd2baf" + integrity sha512-az/NhpIwP3K33ILr0T2bso+k2E/SLf8Yidd8mHl0n6sCQ4YdyC8qDhZA6kOPDNDBA56ZnIjngVl0U3jREA0BUA== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -432,22 +475,22 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@oclif/command@^1.5.20", "@oclif/command@^1.6.0", "@oclif/command@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.0.tgz#c1a499b10d26e9d1a611190a81005589accbb339" - integrity sha512-5vwpq6kbvwkQwKqAoOU3L72GZ3Ta8RRrewKj9OJRolx28KLJJ8Dg9Rf7obRwt5jQA9bkYd8gqzMTrI7H3xLfaw== +"@oclif/command@^1.8.14", "@oclif/command@^1.8.15": + version "1.8.16" + resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.16.tgz#bea46f81b2061b47e1cda318a0b923e62ca4cc0c" + integrity sha512-rmVKYEsKzurfRU0xJz+iHelbi1LGlihIWZ7Qvmb/CBz1EkhL7nOkW4SVXmG2dA5Ce0si2gr88i6q4eBOMRNJ1w== dependencies: - "@oclif/config" "^1.15.1" - "@oclif/errors" "^1.3.3" - "@oclif/parser" "^3.8.3" - "@oclif/plugin-help" "^3" + "@oclif/config" "^1.18.2" + "@oclif/errors" "^1.3.5" + "@oclif/help" "^1.0.1" + "@oclif/parser" "^3.8.6" debug "^4.1.1" semver "^7.3.2" -"@oclif/config@^1.15.1", "@oclif/config@^1.17.0": - version "1.17.0" - resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.17.0.tgz#ba8639118633102a7e481760c50054623d09fcab" - integrity sha512-Lmfuf6ubjQ4ifC/9bz1fSCHc6F6E653oyaRXxg+lgT4+bYf9bk+nqrUpAbrXyABkCqgIBiFr3J4zR/kiFdE1PA== +"@oclif/config@1.18.2": + version "1.18.2" + resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.2.tgz#5bfe74a9ba6a8ca3dceb314a81bd9ce2e15ebbfe" + integrity sha512-cE3qfHWv8hGRCP31j7fIS7BfCflm/BNZ2HNqHexH+fDrdF2f1D5S8VmXWLC77ffv3oDvWyvE9AZeR0RfmHCCaA== dependencies: "@oclif/errors" "^1.3.3" "@oclif/parser" "^3.8.0" @@ -456,16 +499,28 @@ is-wsl "^2.1.1" tslib "^2.0.0" -"@oclif/dev-cli@^1": - version "1.26.0" - resolved "https://registry.yarnpkg.com/@oclif/dev-cli/-/dev-cli-1.26.0.tgz#e3ec294b362c010ffc8948003d3770955c7951fd" - integrity sha512-272udZP+bG4qahoAcpWcMTJKiA+V42kRMqQM7n4tgW35brYb2UP5kK+p08PpF8sgSfRTV8MoJVJG9ax5kY82PA== +"@oclif/config@^1.18.2": + version "1.18.3" + resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.3.tgz#ddfc144fdab66b1658c2f1b3478fa7fbfd317e79" + integrity sha512-sBpko86IrTscc39EvHUhL+c++81BVTsIZ3ETu/vG+cCdi0N6vb2DoahR67A9FI2CGnxRRHjnTfa3m6LulwNATA== dependencies: - "@oclif/command" "^1.8.0" - "@oclif/config" "^1.17.0" - "@oclif/errors" "^1.3.3" - "@oclif/plugin-help" "^3.2.0" - cli-ux "^5.2.1" + "@oclif/errors" "^1.3.5" + "@oclif/parser" "^3.8.0" + debug "^4.1.1" + globby "^11.0.1" + is-wsl "^2.1.1" + tslib "^2.3.1" + +"@oclif/dev-cli@^1": + version "1.26.10" + resolved "https://registry.yarnpkg.com/@oclif/dev-cli/-/dev-cli-1.26.10.tgz#d8df3a79009b68552f5e7f249d1d19ca52278382" + integrity sha512-dJ+II9rVXckzFvG+82PbfphMTnoqiHvsuAAbcHrLdZWPBnFAiDKhNYE0iHnA/knAC4VGXhogsrAJ3ERT5d5r2g== + dependencies: + "@oclif/command" "^1.8.15" + "@oclif/config" "^1.18.2" + "@oclif/errors" "^1.3.5" + "@oclif/plugin-help" "3.2.18" + cli-ux "5.6.7" debug "^4.1.1" find-yarn-workspace-root "^2.0.0" fs-extra "^8.1" @@ -475,7 +530,7 @@ qqjs "^0.3.10" tslib "^2.0.3" -"@oclif/errors@^1.2.1", "@oclif/errors@^1.2.2", "@oclif/errors@^1.3.3": +"@oclif/errors@1.3.5", "@oclif/errors@^1.3.3", "@oclif/errors@^1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@oclif/errors/-/errors-1.3.5.tgz#a1e9694dbeccab10fe2fe15acb7113991bed636c" integrity sha512-OivucXPH/eLLlOT7FkCMoZXiaVYf8I/w1eTAM1+gKzfhALwWTusxEx7wBmW0uzvkSg/9ovWLycPaBgJbM3LOCQ== @@ -486,38 +541,54 @@ strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +"@oclif/help@^1.0.0", "@oclif/help@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@oclif/help/-/help-1.0.1.tgz#fd96a3dd9fb2314479e6c8584c91b63754a7dff5" + integrity sha512-8rsl4RHL5+vBUAKBL6PFI3mj58hjPCp2VYyXD4TAa7IMStikFfOH2gtWmqLzIlxAED2EpD0dfYwo9JJxYsH7Aw== + dependencies: + "@oclif/config" "1.18.2" + "@oclif/errors" "1.3.5" + chalk "^4.1.2" + indent-string "^4.0.0" + lodash "^4.17.21" + string-width "^4.2.0" + strip-ansi "^6.0.0" + widest-line "^3.1.0" + wrap-ansi "^6.2.0" + "@oclif/linewrap@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@oclif/linewrap/-/linewrap-1.0.0.tgz#aedcb64b479d4db7be24196384897b5000901d91" integrity sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw== -"@oclif/parser@^3.8.0", "@oclif/parser@^3.8.3": - version "3.8.5" - resolved "https://registry.yarnpkg.com/@oclif/parser/-/parser-3.8.5.tgz#c5161766a1efca7343e1f25d769efbefe09f639b" - integrity sha512-yojzeEfmSxjjkAvMRj0KzspXlMjCfBzNRPkWw8ZwOSoNWoJn+OCS/m/S+yfV6BvAM4u2lTzX9Y5rCbrFIgkJLg== +"@oclif/parser@^3.8.0", "@oclif/parser@^3.8.6": + version "3.8.7" + resolved "https://registry.yarnpkg.com/@oclif/parser/-/parser-3.8.7.tgz#236d48db05d0b00157d3b42d31f9dac7550d2a7c" + integrity sha512-b11xBmIUK+LuuwVGJpFs4LwQN2xj2cBWj2c4z1FtiXGrJ85h9xV6q+k136Hw0tGg1jQoRXuvuBnqQ7es7vO9/Q== dependencies: - "@oclif/errors" "^1.2.2" + "@oclif/errors" "^1.3.5" "@oclif/linewrap" "^1.0.0" - chalk "^2.4.2" - tslib "^1.9.3" - -"@oclif/plugin-help@^3", "@oclif/plugin-help@^3.2.0": - version "3.2.3" - resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-3.2.3.tgz#cd24010e7eb326782843d3aa6d6b5a4affebb2c3" - integrity sha512-l2Pd0lbOMq4u/7xsl9hqISFqyR9gWEz/8+05xmrXFr67jXyS6EUCQB+mFBa0wepltrmJu0sAFg9AvA2mLaMMqQ== - dependencies: - "@oclif/command" "^1.5.20" - "@oclif/config" "^1.15.1" - "@oclif/errors" "^1.2.2" chalk "^4.1.0" + tslib "^2.3.1" + +"@oclif/plugin-help@3.2.18": + version "3.2.18" + resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-3.2.18.tgz#f2bf6ba86719c174fc0e4c2149f73b46006bfdbd" + integrity sha512-5n5Pkz4L0duknIvFwx2Ko9Xda3miT6RZP8bgaaK3Q/9fzVBrhi4bOM0u05/OThI6V+3NsSdxYS2o1NLcXToWDg== + dependencies: + "@oclif/command" "^1.8.14" + "@oclif/config" "1.18.2" + "@oclif/errors" "1.3.5" + "@oclif/help" "^1.0.0" + chalk "^4.1.2" indent-string "^4.0.0" - lodash.template "^4.4.0" + lodash "^4.17.21" string-width "^4.2.0" strip-ansi "^6.0.0" widest-line "^3.1.0" - wrap-ansi "^4.0.0" + wrap-ansi "^6.2.0" -"@oclif/screen@^1.0.3": +"@oclif/screen@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-1.0.4.tgz#b740f68609dfae8aa71c3a6cab15d816407ba493" integrity sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw== @@ -534,49 +605,50 @@ mv "~2" safe-json-stringify "~1" -"@salesforce/core@^2.37.1": - version "2.37.1" - resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-2.37.1.tgz#bfb6634e068278c7761d694a15e09a680b407137" - integrity sha512-Jyppt6fc8uEBQgfD2uIvZlUVSTSkhgU4i+N0B4mQJ+0yeAu5foiGJnn7u6/GPkpLSgof8IZKC6f4crsi/9xyLA== +"@salesforce/core@^3.19.0": + version "3.19.0" + resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-3.19.0.tgz#e238b07190623dc4e1ca1888c1185f5bfa2d383e" + integrity sha512-64bz7cvfEkJz1JCMlf3W1CaWShoaINzfkrT6BQxtb5AdjZm5rs8Lmg3q6hie4hhWo3VVSvPOdnWEPpMJCdJ4/w== dependencies: "@salesforce/bunyan" "^2.0.0" - "@salesforce/kit" "^1.5.17" - "@salesforce/schemas" "^1.0.1" + "@salesforce/kit" "^1.5.41" + "@salesforce/schemas" "^1.1.0" "@salesforce/ts-types" "^1.5.20" "@types/graceful-fs" "^4.1.5" - "@types/jsforce" "^1.9.41" - "@types/mkdirp" "^1.0.1" + "@types/mkdirp" "^1.0.2" + "@types/semver" "^7.3.9" ajv "^8.11.0" archiver "^5.3.0" - debug "^3.1.0" + change-case "^4.1.2" + debug "^3.2.7" faye "^1.4.0" - graceful-fs "^4.2.4" + form-data "^4.0.0" + graceful-fs "^4.2.9" js2xmlparser "^4.0.1" - jsforce "^1.11.0" - jsonwebtoken "8.5.0" + jsforce "2.0.0-beta.10" + jsonwebtoken "8.5.1" mkdirp "1.0.4" - semver "^7.3.5" ts-retry-promise "^0.6.0" -"@salesforce/dev-config@^2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@salesforce/dev-config/-/dev-config-2.1.3.tgz#77fa29be9e1df2c5919c36d55b2fef9c9be27c46" - integrity sha512-J6NRMfwzgbKgo6/mO0ZhPxDKVNhoEd044vCTAxWLVJA5Ld7mB+/Sx6oosW89FvIkl0098LyfIMmwRDu/zcZd9g== +"@salesforce/dev-config@^3.0.0", "@salesforce/dev-config@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@salesforce/dev-config/-/dev-config-3.0.1.tgz#631a952abfd69e7cdb0fb312ba4b1656ae632b90" + integrity sha512-hkH8g7/bQZvtOfKTb3AmTPo1KopUli31legtb84nF9Y6mKj27TRzWUvIRuaRRd86ma19C7lPA4ycUjydX4QCcQ== -"@salesforce/dev-scripts@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@salesforce/dev-scripts/-/dev-scripts-1.0.4.tgz#c72843f714e3b2dfb5d92c67f29da80086bb675b" - integrity sha512-PBePeQD9Hhsyf3FWCcxXvhO3wvfui2mkpE8FkcC8ACX0HU6LORBD1Atgv8r3LqAhhGhk+BSlPcmeL8Ze422JKw== +"@salesforce/dev-scripts@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@salesforce/dev-scripts/-/dev-scripts-2.0.2.tgz#7a174082806ffd3d0c078d83dfb97bc603c798c4" + integrity sha512-LApwttqOMTAX0xB8owluwMUClDzafjQY3C6TCKCFgV2R4qCy1QUtG3jrBAtrhK1FxuV7qBvp8S+uqA21TELOGQ== dependencies: - "@commitlint/cli" "^12.1.4" - "@commitlint/config-conventional" "^10.0.0" + "@commitlint/cli" "^15.0.0" + "@commitlint/config-conventional" "^15.0.0" "@oclif/dev-cli" "^1" - "@salesforce/dev-config" "^2.1.3" + "@salesforce/dev-config" "^3.0.0" "@salesforce/prettier-config" "^0.0.2" "@types/chai" "^4.2.11" - "@types/mocha" "^8.2.2" + "@types/mocha" "^9.0.0" "@types/node" "^15.6.1" - "@types/sinon" "10.0.6" + "@types/sinon" "10.0.11" chai "^4.2.0" chalk "^4.0.0" cosmiconfig "^7.0.0" @@ -586,12 +658,12 @@ eslint-config-salesforce-license "^0.1.6" eslint-config-salesforce-typescript "^0.2.7" eslint-plugin-header "^3.0.0" - eslint-plugin-import "2.25.3" + eslint-plugin-import "2.25.4" eslint-plugin-jsdoc "^35.1.2" eslint-plugin-prefer-arrow "^1.2.1" eslint-plugin-prettier "^3.1.3" husky "^7.0.4" - mocha "^8.4.0" + mocha "^9.1.3" nyc "^15.1.0" prettier "^2.0.5" pretty-quick "^3.1.0" @@ -599,11 +671,11 @@ sinon "10.0.0" source-map-support "~0.5.19" ts-node "^10.0.0" - typedoc "0.18.0" - typedoc-plugin-external-module-name "~4.0.0" + typedoc "0.22.13" + typedoc-plugin-missing-exports "0.22.6" typescript "^4.1.3" -"@salesforce/kit@^1.5.17", "@salesforce/kit@^1.5.41": +"@salesforce/kit@^1.5.41": version "1.5.41" resolved "https://registry.yarnpkg.com/@salesforce/kit/-/kit-1.5.41.tgz#3248d4d28fe24ed47827716cfe416c21a2a90651" integrity sha512-nhi7jw3LNITl7rHSnCLnEDTaq6nvolSMFBg7poniG84Q7kJPezgTEj5OKAyQ9hJoRE4u59n5M5bUFvwRoXmJzQ== @@ -617,10 +689,10 @@ resolved "https://registry.yarnpkg.com/@salesforce/prettier-config/-/prettier-config-0.0.2.tgz#ded39bf7cb75238edc9db6dd093649111350f8bc" integrity sha512-KExM355BLbxCW6siGBV7oUOotXvvVp0tAWERgzUkM2FcMb9fWrjwXDrIHc8V0UdDlA3UXtFltDWgN+Yqi+BA/g== -"@salesforce/schemas@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@salesforce/schemas/-/schemas-1.0.1.tgz#d1db56759d2b22a7688e1821aec564e979237ad2" - integrity sha512-78pP1GB/DbIS8nSWGL0GpQ27g02drrEo0vzYdRipGYAIXHMzlh1gqEsq0pOiIQlPm1MxWyEqbmf4GG5qSVsd0Q== +"@salesforce/schemas@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@salesforce/schemas/-/schemas-1.1.0.tgz#bbf94a11ee036f2b0ec6ba82306cd9565a6ba26b" + integrity sha512-6D7DvE6nFxpLyyTnrOIbbAeCJw2r/EpinFAcMh6gU0gA/CGfSbwV/8uR3uHLYL2zCyCZLH8jJ4dZ3BzCMqc+Eg== "@salesforce/ts-sinon@^1.1.2": version "1.3.21" @@ -631,7 +703,7 @@ sinon "^5.1.1" tslib "^2.2.0" -"@salesforce/ts-types@^1.4.2", "@salesforce/ts-types@^1.5.20": +"@salesforce/ts-types@^1.5.20": version "1.5.20" resolved "https://registry.yarnpkg.com/@salesforce/ts-types/-/ts-types-1.5.20.tgz#f6875a710ceca48223b240026a14af6d3b39882f" integrity sha512-Ov6um4CWd63EvkRavkHG0J/P9XYL55sdkDWPMr7+AIgqh5flHxDRz09/C4e9M94aX30rzJxW4TVX6EBf4Cu2BQ== @@ -657,13 +729,6 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@sinonjs/fake-timers@^7.1.0": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" - integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== - dependencies: - "@sinonjs/commons" "^1.7.0" - "@sinonjs/formatio@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-2.0.0.tgz#84db7e9eb5531df18a8c5e0bfb6e449e55e654b2" @@ -753,7 +818,7 @@ "@types/deep-equal-in-any-order@^1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@types/deep-equal-in-any-order/-/deep-equal-in-any-order-1.0.1.tgz#0559d855797a5034e187f248b23a4490e5444f2e" + resolved "https://registry.yarnpkg.com/@types/deep-equal-in-any-order/-/deep-equal-in-any-order-1.0.1.tgz#0559d855797a5034e187f248b23a4490e5444f2e" integrity sha512-hUWUUE53WjKfcCncSmWmNXVNNT+0Iz7gYFnov3zdCXrX3Thxp1Cnmfd5LwWOeCVUV5LhpiFgS05vaAG72doo9w== "@types/glob@*", "@types/glob@^7.1.1": @@ -776,17 +841,15 @@ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== -"@types/jsforce@^1.9.38", "@types/jsforce@^1.9.41": - version "1.9.42" - resolved "https://registry.yarnpkg.com/@types/jsforce/-/jsforce-1.9.42.tgz#3b860f0283b32809b9639456a78eba04aed51325" - integrity sha512-Ht5gIROhqGn5L5g0GEC7ADOWXI04yFRmxYqJxAAcpQ2II424tlu/I1LSbce5ckc97tb9BtTYMd9I+kRrvThp0w== - dependencies: - "@types/node" "*" +"@types/json-buffer@~3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/json-buffer/-/json-buffer-3.0.0.tgz#85c1ff0f0948fc159810d4b5be35bf8c20875f64" + integrity sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ== "@types/json-schema@^7.0.7": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/json5@^0.0.29": version "0.0.29" @@ -794,9 +857,9 @@ integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= "@types/keyv@*": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.3.tgz#1c9aae32872ec1f20dcdaee89a9f3ba88f465e41" - integrity sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg== + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== dependencies: "@types/node" "*" @@ -822,19 +885,29 @@ dependencies: "@types/node" "*" -"@types/mkdirp@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-1.0.1.tgz#0930b948914a78587de35458b86c907b6e98bbf6" - integrity sha512-HkGSK7CGAXncr8Qn/0VqNtExEE+PHMWb+qlR1faHMao7ng6P3tAaoWWBMdva0gL5h4zprjIO89GJOLXsMcDm1Q== +"@types/mkdirp@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-1.0.2.tgz#8d0bad7aa793abe551860be1f7ae7f3198c16666" + integrity sha512-o0K1tSO0Dx5X6xlU5F1D6625FawhC3dU3iqr25lluNv/+/QIVH8RLNEiVokgIZo+mz+87w/3Mkg/VvQS+J51fQ== dependencies: "@types/node" "*" -"@types/mocha@^8.2.2": - version "8.2.3" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.3.tgz#bbeb55fbc73f28ea6de601fbfa4613f58d785323" - integrity sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw== +"@types/mocha@^9.0.0": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" + integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== + +"@types/node@*": + version "17.0.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" + integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== -"@types/node@*", "@types/node@^15.6.1": +"@types/node@^12.19.9": + version "12.20.52" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.52.tgz#2fd2dc6bfa185601b15457398d4ba1ef27f81251" + integrity sha512-cfkwWw72849SNYp3Zx0IcIs25vABmFh73xicxhCkTcvtZQeIez15PpwQN8fY3RD7gv1Wrxlc9MEtfMORZDEsGw== + +"@types/node@^15.6.1": version "15.14.9" resolved "https://registry.yarnpkg.com/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== @@ -856,6 +929,11 @@ dependencies: "@types/node" "*" +"@types/semver@^7.3.9": + version "7.3.9" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.9.tgz#152c6c20a7688c30b967ec1841d31ace569863fc" + integrity sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ== + "@types/shelljs@^0.8.9": version "0.8.11" resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.8.11.tgz#17a5696c825974e96828e96e89585d685646fcb8" @@ -864,12 +942,17 @@ "@types/glob" "*" "@types/node" "*" -"@types/sinon@10.0.6": - version "10.0.6" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.6.tgz#bc3faff5154e6ecb69b797d311b7cf0c1b523a1d" - integrity sha512-6EF+wzMWvBNeGrfP3Nx60hhx+FfwSg1JJBLAAP/IdIUq0EYkqCYf70VT3PhuhPX9eLD+Dp+lNdpb/ZeHG8Yezg== +"@types/sinon@10.0.11": + version "10.0.11" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.11.tgz#8245827b05d3fc57a6601bd35aee1f7ad330fc42" + integrity sha512-dmZsHlBsKUtBpHriNjlK0ndlvEh8dcb9uV9Afsbt89QIyydpC7NcR+nWlAhASfy3GHnxTl4FX/aKE7XZUt/B4g== dependencies: - "@sinonjs/fake-timers" "^7.1.0" + "@types/sinonjs__fake-timers" "*" + +"@types/sinonjs__fake-timers@*": + version "8.1.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz#bf2e02a3dbd4aecaf95942ecd99b7402e03fad5e" + integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== "@types/unzipper@^0.10.3": version "0.10.5" @@ -961,6 +1044,13 @@ JSONStream@^1.0.4: jsonparse "^1.2.0" through ">=2.2.7 <3" +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + acorn-jsx@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -977,9 +1067,16 @@ acorn@^7.4.0: integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.4.1: - version "8.5.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" - integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" aggregate-error@^3.0.0: version "3.1.0" @@ -989,7 +1086,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: +ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1019,12 +1116,12 @@ ansi-escapes@^3.0.0, ansi-escapes@^3.1.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.3.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - type-fest "^0.11.0" + type-fest "^0.21.3" ansi-regex@^3.0.0: version "3.0.0" @@ -1036,7 +1133,7 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -1055,7 +1152,7 @@ ansicolors@~0.3.2: resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= -anymatch@~3.1.1: +anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -1152,13 +1249,13 @@ array-ify@^1.0.0: integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= array-includes@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" - integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.19.5" get-intrinsic "^1.1.1" is-string "^1.0.7" @@ -1173,13 +1270,14 @@ array-unique@^0.3.2: integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= array.prototype.flat@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" - integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" + integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.19.0" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" arrify@^1.0.1: version "1.0.1" @@ -1191,23 +1289,11 @@ arrify@^2.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asap@*, asap@~2.0.3: +asap@*: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - assertion-error@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" @@ -1233,40 +1319,25 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" - integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== - balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base64-url@^2.2.0: - version "2.3.3" - resolved "https://registry.yarnpkg.com/base64-url/-/base64-url-2.3.3.tgz#645b71455c75109511f27d98450327e455f488ec" - integrity sha512-dLMhIsK7OplcDauDH/tZLvK7JmUZK3A7KiQpjNzsBrM6Etw7hzNI1tLEywqJk9NnwkgWuFKSlx/IUO7vF6Mo8Q== +base64url@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" + integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== base@^0.11.1: version "0.11.2" @@ -1281,17 +1352,10 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - big-integer@^1.6.17: - version "1.6.48" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" - integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== binary-extensions@^2.0.0: version "2.2.0" @@ -1307,9 +1371,9 @@ binary@~0.3.0: chainsaw "~0.1.0" bl@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" - integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" inherits "^2.0.4" @@ -1328,6 +1392,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -1344,7 +1415,7 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -1356,16 +1427,16 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.16.6: - version "4.17.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.1.tgz#a98d104f54af441290b7d592626dd541fa642eb9" - integrity sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ== +browserslist@^4.20.2: + version "4.20.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" + integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== dependencies: - caniuse-lite "^1.0.30001259" - electron-to-chromium "^1.3.846" + caniuse-lite "^1.0.30001332" + electron-to-chromium "^1.4.118" escalade "^3.1.1" - nanocolors "^0.1.5" - node-releases "^1.1.76" + node-releases "^2.0.3" + picocolors "^1.0.0" buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: version "0.2.13" @@ -1378,9 +1449,9 @@ buffer-equal-constant-time@1.0.1: integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-indexof-polyfill@~1.0.0: version "1.0.2" @@ -1388,12 +1459,12 @@ buffer-indexof-polyfill@~1.0.0: integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== buffer@^5.5.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" + base64-js "^1.3.1" + ieee754 "^1.1.13" buffers@~0.1.1: version "0.1.1" @@ -1461,6 +1532,14 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + camelcase-keys@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" @@ -1476,14 +1555,23 @@ camelcase@^5.0.0, camelcase@^5.3.1: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001259: - version "1.0.30001259" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001259.tgz#ae21691d3da9c4be6144403ac40f71d9f6efd790" - integrity sha512-V7mQTFhjITxuk9zBpI6nYsiTXhcPe05l+364nZjK7MFK/E7ibvYBSAXr4YcA6oPR8j3ZLM/LN+lUqUVAQEUZFg== +caniuse-lite@^1.0.30001332: + version "1.0.30001335" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz#899254a0b70579e5a957c32dced79f0727c61f2a" + integrity sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w== + +capital-case@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" + integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" cardinal@^2.1.1: version "2.1.1" @@ -1493,11 +1581,6 @@ cardinal@^2.1.1: ansicolors "~0.3.2" redeyed "~2.1.0" -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - chai@^4.2.0: version "4.3.6" resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" @@ -1518,7 +1601,7 @@ chainsaw@~0.1.0: dependencies: traverse ">=0.3.0 <0.4" -chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1535,14 +1618,32 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" +change-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" + integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== + dependencies: + camel-case "^4.1.2" + capital-case "^1.0.4" + constant-case "^3.0.4" + dot-case "^3.0.4" + header-case "^2.0.4" + no-case "^3.0.4" + param-case "^3.0.4" + pascal-case "^3.1.2" + path-case "^3.0.4" + sentence-case "^3.0.4" + snake-case "^3.0.4" + tslib "^2.0.3" + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -1558,20 +1659,20 @@ check-error@^1.0.2: resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= -chokidar@3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== +chokidar@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: - anymatch "~3.1.1" + anymatch "~3.1.2" braces "~3.0.2" - glob-parent "~5.1.0" + glob-parent "~5.1.2" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.5.0" + readdirp "~3.6.0" optionalDependencies: - fsevents "~2.3.1" + fsevents "~2.3.2" chownr@^1.1.1: version "1.1.4" @@ -1615,12 +1716,11 @@ cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-progress@^3.4.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.9.1.tgz#a22eba6a20f53289fdd05d5ee8cb2cc8c28f866e" - integrity sha512-AXxiCe2a0Lm0VN+9L0jzmfQSkcZm5EYspfqXKaSIQKqIk+0hnkZ3/v1E9B39mkD6vYhKih3c/RPsJBSwq9O99Q== + version "3.11.0" + resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.11.0.tgz#03651defd06182a5396ddc2a41da17c2f257ecdf" + integrity sha512-ug+V4/Qy3+0jX9XkWPV/AwHD98RxKXqDpL37vJBOxQhD90qQ3rDqDKoFpef9se91iTUuOXKlyg2HUyHBo5lHsQ== dependencies: - colors "^1.1.2" - string-width "^4.2.0" + string-width "^4.2.3" cli-truncate@^2.1.0: version "2.1.0" @@ -1630,15 +1730,15 @@ cli-truncate@^2.1.0: slice-ansi "^3.0.0" string-width "^4.2.0" -cli-ux@^5.2.1: - version "5.6.3" - resolved "https://registry.yarnpkg.com/cli-ux/-/cli-ux-5.6.3.tgz#eecdb2e0261171f2b28f2be6b18c490291c3a287" - integrity sha512-/oDU4v8BiDjX2OKcSunGH0iGDiEtj2rZaGyqNuv9IT4CgcSMyVWAMfn0+rEHaOc4n9ka78B0wo1+N1QX89f7mw== +cli-ux@5.6.7: + version "5.6.7" + resolved "https://registry.yarnpkg.com/cli-ux/-/cli-ux-5.6.7.tgz#32ef9e6cb2b457be834280cc799028a11c8235a8" + integrity sha512-dsKAurMNyFDnO6X1TiiRNiVbL90XReLKcvIq4H777NMqXGBxBws23ag8ubCJE97vVZEgWG2eSUhsyLf63Jv8+g== dependencies: - "@oclif/command" "^1.6.0" - "@oclif/errors" "^1.2.1" + "@oclif/command" "^1.8.15" + "@oclif/errors" "^1.3.5" "@oclif/linewrap" "^1.0.0" - "@oclif/screen" "^1.0.3" + "@oclif/screen" "^1.0.4" ansi-escapes "^4.3.0" ansi-styles "^4.2.0" cardinal "^2.1.1" @@ -1651,7 +1751,7 @@ cli-ux@^5.2.1: indent-string "^4.0.0" is-wsl "^2.2.0" js-yaml "^3.13.1" - lodash "^4.17.11" + lodash "^4.17.21" natural-orderby "^2.0.1" object-treeify "^1.1.4" password-prompt "^1.1.2" @@ -1667,6 +1767,11 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -1692,18 +1797,6 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -co-prompt@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/co-prompt/-/co-prompt-1.0.0.tgz#fb370e9edac48576b27a732fe5d7f21d9fc6e6f6" - integrity sha1-+zcOntrEhXayenMv5dfyHZ/G5vY= - dependencies: - keypress "~0.2.1" - -coffeescript@^1.10.0: - version "1.12.7" - resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.12.7.tgz#e57ee4c4867cf7f606bfc4a0f2d550c0981ddd27" - integrity sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA== - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -1741,22 +1834,17 @@ colorette@^2.0.16: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== -colors@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" -commander@^2.9.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== commander@^6.2.0: version "6.2.1" @@ -1807,6 +1895,14 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +compress-brotli@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/compress-brotli/-/compress-brotli-1.3.6.tgz#64bd6f21f4f3e9841dbac392f4c29218caf5e9d9" + integrity sha512-au99/GqZtUtiCBliqLFbWlhnCxn+XSYjwZ77q6mKN4La4qOXDoLVPZ50iXr0WmAyMxl8yqoq3Yq4OeQNPPkyeQ== + dependencies: + "@types/json-buffer" "~3.0.0" + json-buffer "~3.0.1" + compress-commons@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" @@ -1822,6 +1918,15 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= +constant-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" + integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case "^2.0.2" + content-type@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" @@ -1836,9 +1941,9 @@ conventional-changelog-angular@^5.0.11: q "^1.5.1" conventional-changelog-conventionalcommits@^4.3.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.1.tgz#f4c0921937050674e578dc7875f908351ccf4014" - integrity sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw== + version "4.6.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz#0765490f56424b46f6cb4db9135902d6e5a36dc2" + integrity sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g== dependencies: compare-func "^2.0.0" lodash "^4.17.15" @@ -1849,10 +1954,10 @@ conventional-commit-types@^2.0.0: resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.3.0.tgz#bc3c8ebba0a9e4b3ecc548f1d0674e251ab8be22" integrity sha512-6iB39PrcGYdz0n3z31kj6/Km6mK9hm9oMRhwcLnKxE7WNoeRKZbTAobliKrbYZ5jqyCvtcVEfjCiaEzhL3AVmQ== -conventional-commits-parser@^3.0.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.2.tgz#190fb9900c6e02be0c0bca9b03d57e24982639fd" - integrity sha512-Jr9KAKgqAkwXMRHjxDwO/zOCDKod1XdAESHAGuJX38iZ7ZzVti/tvVoysO0suMsdAObp9NQ2rHSsSbnAqZ5f5g== +conventional-commits-parser@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== dependencies: JSONStream "^1.0.4" is-text-path "^1.0.1" @@ -1873,15 +1978,25 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +core-js-pure@^3.20.2: + version "3.22.5" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.5.tgz#bdee0ed2f9b78f2862cda4338a07b13a49b6c9a9" + integrity sha512-8xo9R00iYD7TcV7OrC98GwxiUEAabVWO3dix+uyWjnYrx9fyASLlIX+f/3p5dW5qByaP2bcZ8X/T47s55et/tA== + +core-js@^3.6.4: + version "3.22.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.5.tgz#a5f5a58e663d5c0ebb4e680cd7be37536fb2a9cf" + integrity sha512-VP/xYuvJ0MJWRAobcmQ8F2H6Bsn+s7zqAAjFaHGBMc5AQm7zaelhD1LGduFn2EehEcQcU+br6t+fwbpQ5d1ZWA== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== cosmiconfig@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" - integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== dependencies: "@types/parse-json" "^4.0.0" import-fresh "^3.2.1" @@ -1890,12 +2005,9 @@ cosmiconfig@^7.0.0: yaml "^1.10.0" crc-32@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" - integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== - dependencies: - exit-on-epipe "~1.0.1" - printj "~1.1.0" + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== crc32-stream@^4.0.2: version "4.0.2" @@ -1921,7 +2033,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -1942,17 +2054,15 @@ csprng@*: dependencies: sequin "*" -csv-parse@^4.10.1: - version "4.15.4" - resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.15.4.tgz#ad1ec62aaf71a642982dfcb81f1848184d691db5" - integrity sha512-OdBbFc0yZhOm17lSxqkirrHlFFVpKRT0wp4DAGoJelsP3LbGzV9LNr7XmM/lrr0uGkCtaqac9UhP8PDHXOAbMg== +csv-parse@^4.8.2: + version "4.16.3" + resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.16.3.tgz#7ca624d517212ebc520a36873c3478fa66efbaf7" + integrity sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg== -csv-stringify@^1.0.4: - version "1.1.2" - resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-1.1.2.tgz#77a41526581bce3380f12b00d7c5bbac70c82b58" - integrity sha1-d6QVJlgbzjOA8SsA18W7rHDIK1g= - dependencies: - lodash.get "~4.4.2" +csv-stringify@^5.3.4: + version "5.6.5" + resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-5.6.5.tgz#c6d74badda4b49a79bf4e72f91cce1e33b94de00" + integrity sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A== cz-conventional-changelog@2.1.0, cz-conventional-changelog@^2.1.0: version "2.1.0" @@ -1970,27 +2080,27 @@ dargs@^7.0.0: resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - dayjs-plugin-utc@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/dayjs-plugin-utc/-/dayjs-plugin-utc-0.1.2.tgz#48e552407024143922d6499a40f6c765f8c93d03" integrity sha512-ExERH5o3oo6jFOdkvMP3gytTCQ9Ksi5PtylclJWghr7k7m3o2U5QrwtdiJkOxLOH4ghr0EKhpqGefzGz1VvVJg== dayjs@^1.8.16: - version "1.8.36" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.36.tgz#be36e248467afabf8f5a86bae0de0cdceecced50" - integrity sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw== + version "1.11.1" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.1.tgz#90b33a3dda3417258d48ad2771b415def6545eb0" + integrity sha512-ER7EjqVAMkRRsxNCC5YqJ9d9VQYuWdGt7aiH2qA5R5wt8ZmWaP2dLUSIK6y/kVzLMlmh1Tvu5xUf4M/wdGJ5KA== -debug@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" @@ -2001,20 +2111,13 @@ debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^3.1.0, debug@^3.2.7: +debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.2: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -2087,12 +2190,13 @@ defer-to-connect@^2.0.0: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - object-keys "^1.0.12" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" define-property@^0.2.5: version "0.2.5" @@ -2172,6 +2276,14 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + dot-prop@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -2193,14 +2305,6 @@ duplexer2@~0.1.4: dependencies: readable-stream "^2.0.2" -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - ecdsa-sig-formatter@1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" @@ -2208,10 +2312,10 @@ ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer "^5.0.1" -electron-to-chromium@^1.3.846: - version "1.3.846" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.846.tgz#a55fd59613dbcaed609e965e3e88f42b08c401d3" - integrity sha512-2jtSwgyiRzybHRxrc2nKI+39wH3AwQgn+sogQ+q814gv8hIFwrcZbV07Ea9f8AmK0ufPVZUvvAG1uZJ+obV4Jw== +electron-to-chromium@^1.4.118: + version "1.4.132" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.132.tgz#b64599eb018221e52e2e4129de103b03a413c55d" + integrity sha512-JYdZUw/1068NWN+SwXQ7w6Ue0bWYGihvSUNNQwurvcDV/SM7vSiGZ3NuFvFgoEiCs4kB8xs3cX2an3wB7d4TBw== emoji-regex@^8.0.0: version "8.0.0" @@ -2239,10 +2343,10 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== +es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: + version "1.19.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.5.tgz#a2cb01eb87f724e815b278b0dd0d00f36ca9a7f1" + integrity sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" @@ -2250,21 +2354,28 @@ es-abstract@^1.19.0, es-abstract@^1.19.1: get-intrinsic "^1.1.1" get-symbol-description "^1.0.0" has "^1.0.3" - has-symbols "^1.0.2" + has-symbols "^1.0.3" internal-slot "^1.0.3" is-callable "^1.2.4" - is-negative-zero "^2.0.1" + is-negative-zero "^2.0.2" is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" + is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" + is-weakref "^1.0.2" + object-inspect "^1.12.0" object-keys "^1.1.1" object.assign "^4.1.2" string.prototype.trimend "^1.0.4" string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -2324,7 +2435,7 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" -eslint-module-utils@^2.7.1, eslint-module-utils@^2.7.3: +eslint-module-utils@^2.7.2, eslint-module-utils@^2.7.3: version "2.7.3" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== @@ -2337,24 +2448,24 @@ eslint-plugin-header@^3.0.0, eslint-plugin-header@^3.1.1: resolved "https://registry.yarnpkg.com/eslint-plugin-header/-/eslint-plugin-header-3.1.1.tgz#6ce512432d57675265fac47292b50d1eff11acd6" integrity sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg== -eslint-plugin-import@2.25.3: - version "2.25.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz#a554b5f66e08fb4f6dc99221866e57cfff824766" - integrity sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg== +eslint-plugin-import@2.25.4: + version "2.25.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" + integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== dependencies: array-includes "^3.1.4" array.prototype.flat "^1.2.5" debug "^2.6.9" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.1" + eslint-module-utils "^2.7.2" has "^1.0.3" is-core-module "^2.8.0" is-glob "^4.0.3" minimatch "^3.0.4" object.values "^1.1.5" resolve "^1.20.0" - tsconfig-paths "^3.11.0" + tsconfig-paths "^3.12.0" eslint-plugin-import@^2.24.2: version "2.26.0" @@ -2521,15 +2632,20 @@ estraverse@^4.1.1: integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + execa@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" @@ -2558,10 +2674,20 @@ execa@^4.0.0, execa@^4.1.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -exit-on-epipe@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" - integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" expand-brackets@^2.1.4: version "2.1.4" @@ -2598,12 +2724,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.0: +external-editor@^3.0.0, external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== @@ -2631,16 +2752,6 @@ extract-stack@^2.0.0: resolved "https://registry.yarnpkg.com/extract-stack/-/extract-stack-2.0.0.tgz#11367bc865bfcd9bc0db3123e5edb57786f11f9b" integrity sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ== -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -2651,10 +2762,10 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^3.0.3, fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== +fast-glob@^3.0.3, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -2687,9 +2798,9 @@ fastq@^1.6.0: reusify "^1.0.4" faye-websocket@>=0.9.1: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" @@ -2712,6 +2823,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -2812,9 +2930,9 @@ flat@^5.0.2: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" - integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== for-in@^1.0.2: version "1.0.2" @@ -2829,18 +2947,13 @@ foreground-child@^2.0.0: cross-spawn "^7.0.0" signal-exit "^3.0.2" -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.6" + combined-stream "^1.0.8" mime-types "^2.1.12" fragment-cache@^0.2.1: @@ -2860,6 +2973,15 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" @@ -2878,7 +3000,7 @@ fs-extra@^7.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^8.1: +fs-extra@^8.1, fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== @@ -2887,22 +3009,12 @@ fs-extra@^8.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0, fs-extra@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@~2.3.1: +fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -2978,6 +3090,11 @@ get-stream@^5.0.0, get-stream@^5.1.0: dependencies: pump "^3.0.0" +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-symbol-description@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" @@ -2991,17 +3108,10 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - git-raw-commits@^2.0.0: - version "2.0.10" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" - integrity sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ== + version "2.0.11" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== dependencies: dargs "^7.0.0" lodash "^4.17.15" @@ -3014,7 +3124,7 @@ github-slugger@^1.2.1: resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e" integrity sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ== -glob-parent@^5.1.2, glob-parent@~5.1.0: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -3033,10 +3143,10 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@7.2.0, glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3056,18 +3166,6 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - global-dirs@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -3101,9 +3199,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.6.0, globals@^13.9.0: - version "13.11.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" - integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== + version "13.13.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b" + integrity sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A== dependencies: type-fest "^0.20.2" @@ -3122,15 +3220,15 @@ globby@^10.0.1: slash "^3.0.0" globby@^11.0.1, globby@^11.0.3: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" slash "^3.0.0" got@^11.8.2: @@ -3150,7 +3248,7 @@ got@^11.8.2: p-cancelable "^2.0.0" responselike "^2.0.0" -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.8: +graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.8, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== @@ -3160,40 +3258,15 @@ growl@1.10.5: resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== -handlebars@^4.7.6: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: version "3.0.0" @@ -3205,10 +3278,17 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0: version "1.0.0" @@ -3268,10 +3348,13 @@ he@1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -highlight.js@^10.0.0: - version "10.7.3" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== +header-case@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" + integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== + dependencies: + capital-case "^1.0.4" + tslib "^2.0.3" homedir-polyfill@^1.0.1: version "1.0.3" @@ -3281,14 +3364,14 @@ homedir-polyfill@^1.0.1: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== hosted-git-info@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" - integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: lru-cache "^6.0.0" @@ -3315,18 +3398,9 @@ http-call@^5.1.2: tunnel-agent "^0.6.0" http-parser-js@>=0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" - integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" + version "0.5.6" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd" + integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA== http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" @@ -3336,11 +3410,24 @@ http2-wrapper@^1.0.0-beta.5.2: quick-lru "^5.1.1" resolve-alpn "^1.0.0" +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + husky@^7.0.4: version "7.0.4" resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" @@ -3358,25 +3445,25 @@ iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8: +ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -3405,9 +3492,9 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ini@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== inquirer@6.2.0: version "6.2.0" @@ -3428,6 +3515,25 @@ inquirer@6.2.0: strip-ansi "^4.0.0" through "^2.3.6" +inquirer@^7.0.0: + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -3578,15 +3684,15 @@ 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-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" @@ -3647,10 +3753,12 @@ is-retry-allowed@^1.1.0: resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" is-stream@^1.1.0: version "1.1.0" @@ -3658,9 +3766,9 @@ is-stream@^1.1.0: integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" @@ -3683,33 +3791,33 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -3744,15 +3852,10 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== istanbul-lib-hook@^3.0.0: version "3.0.0" @@ -3794,18 +3897,18 @@ istanbul-lib-report@^3.0.0: supports-color "^7.1.0" istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + version "3.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" + integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -3815,17 +3918,17 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" - integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -3837,11 +3940,6 @@ js2xmlparser@^4.0.1: dependencies: xmlcreate "^2.0.4" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - jsdoc-type-pratt-parser@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.0.4.tgz#5750d2d32ffb001866537d3baaedea7cf84c7036" @@ -3857,28 +3955,33 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -jsforce@^1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/jsforce/-/jsforce-1.11.0.tgz#7e853b82c534f1fe8e18f432a344bae81881a133" - integrity sha512-vYNXJXXdz9ZQNdfRqq/MCJ/zU7JGA7iEduwafQDzChR9FeqXgTNfHTppLVbw9mIniKkQZemmxSOtl7N04lj/5Q== - dependencies: - base64-url "^2.2.0" - co-prompt "^1.0.0" - coffeescript "^1.10.0" - commander "^2.9.0" - csv-parse "^4.10.1" - csv-stringify "^1.0.4" +jsforce@2.0.0-beta.10: + version "2.0.0-beta.10" + resolved "https://registry.yarnpkg.com/jsforce/-/jsforce-2.0.0-beta.10.tgz#c33fee5dd01c96d121235cffb8fee1458a35423e" + integrity sha512-AFigJHQocj8t36Eu+9XffoKoC2FO4/uMDMg08TfTXgvIp53lzvnQJoQrhEnwnKReof4tO2d+7j+d1QyiOa2yGg== + dependencies: + "@babel/runtime" "^7.12.5" + "@babel/runtime-corejs3" "^7.12.5" + "@types/node" "^12.19.9" + abort-controller "^3.0.0" + base64url "^3.0.1" + commander "^4.0.1" + core-js "^3.6.4" + csv-parse "^4.8.2" + csv-stringify "^5.3.4" faye "^1.4.0" - inherits "^2.0.1" - lodash "^4.17.19" - multistream "^2.0.5" - opn "^5.3.0" - promise "^7.1.1" - readable-stream "^2.1.0" - request "^2.72.0" - xml2js "^0.4.16" - -json-buffer@3.0.1: + form-data "^4.0.0" + fs-extra "^8.1.0" + https-proxy-agent "^5.0.0" + inquirer "^7.0.0" + multistream "^3.1.0" + node-fetch "^2.6.1" + open "^7.0.0" + regenerator-runtime "^0.13.3" + strip-ansi "^6.0.0" + xml2js "^0.4.22" + +json-buffer@3.0.1, json-buffer@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== @@ -3903,21 +4006,11 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -3925,12 +4018,15 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" +json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + +jsonc-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" + integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== jsonfile@^4.0.0: version "4.0.0" @@ -3953,12 +4049,12 @@ jsonparse@^1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= -jsonwebtoken@8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz#ebd0ca2a69797816e1c5af65b6c759787252947e" - integrity sha512-IqEycp0znWHNA11TpYi77bVgyBO/pGESDh7Ajhas+u0ttkGkKYIIAjniL4Bw5+oVejVF+SYkaI7XKfwCCyeTuA== +jsonwebtoken@8.5.1: + version "8.5.1" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" + integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== dependencies: - jws "^3.2.1" + jws "^3.2.2" lodash.includes "^4.3.0" lodash.isboolean "^3.0.3" lodash.isinteger "^4.0.4" @@ -3969,20 +4065,10 @@ jsonwebtoken@8.5.0: ms "^2.1.1" semver "^5.6.0" -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - just-extend@^4.0.2: - version "4.1.1" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.1.1.tgz#158f1fdb01f128c411dc8b286a7b4837b3545282" - integrity sha512-aWgeGFW67BP3e5181Ep1Fv2v8z//iBJfrvyTnq8wG86vEESwmonn1zPBJ0VfmT9CJq2FIT0VsETtrNFm2a+SHA== + version "4.2.1" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" + integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== jwa@^1.4.1: version "1.4.1" @@ -3993,7 +4079,7 @@ jwa@^1.4.1: ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" -jws@^3.2.1: +jws@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== @@ -4001,16 +4087,12 @@ jws@^3.2.1: jwa "^1.4.1" safe-buffer "^5.0.1" -keypress@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/keypress/-/keypress-0.2.1.tgz#1e80454250018dbad4c3fe94497d6e67b6269c77" - integrity sha1-HoBFQlABjbrUw/6USX1uZ7YmnHc= - keyv@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.3.tgz#4f3aa98de254803cafcd2896734108daa35e4254" - integrity sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA== + version "4.2.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.2.2.tgz#4b6f602c0228ef4d8214c03c520bef469ed6b768" + integrity sha512-uYS0vKTlBIjNCAUqrjlxmruxOEiZxZIHXyp32sdcGmP+ukFrmWUnE//RcPXJH3Vxrni1H2gsQbjHE0bH7MtMQQ== dependencies: + compress-brotli "^1.3.6" json-buffer "3.0.1" kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: @@ -4038,9 +4120,9 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + version "1.0.1" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== dependencies: readable-stream "^2.0.5" @@ -4053,9 +4135,9 @@ levn@^0.4.1: type-check "~0.4.0" lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== lint-staged@^10.2.11: version "10.5.4" @@ -4129,16 +4211,6 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" @@ -4159,7 +4231,7 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= -lodash.get@^4.4.2, lodash.get@~4.4.2: +lodash.get@^4, lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= @@ -4201,7 +4273,7 @@ lodash.map@^4.5.1: lodash.mapvalues@^4.6.0: version "4.6.0" - resolved "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" + resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw= lodash.merge@^4.6.2: @@ -4214,21 +4286,6 @@ lodash.once@^4.0.0: resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= -lodash.template@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" @@ -4244,17 +4301,18 @@ lodash@4.17.14: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== -lodash@^4.1.2, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21: +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.0.0, log-symbols@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== +log-symbols@4.1.0, log-symbols@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: - chalk "^4.0.0" + chalk "^4.1.0" + is-unicode-supported "^0.1.0" log-update@^4.0.0: version "4.0.0" @@ -4284,12 +4342,19 @@ longest@^1.0.1: integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= loupe@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.1.tgz#a2e1192c9f452e4e85089766da10ac8288383947" - integrity sha512-EN1D3jyVmaX4tnajVlfbREU4axL647hLec1h/PXAb8CPDMJiYitcWF2UeLVNttRqaIqQs4x+mRvXf+d+TlDrCA== + version "2.3.4" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3" + integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ== dependencies: get-func-name "^2.0.0" +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + lowercase-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" @@ -4302,7 +4367,7 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lunr@^2.3.8: +lunr@^2.3.9: version "2.3.9" resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== @@ -4314,7 +4379,7 @@ make-dir@^3.0.0, make-dir@^3.0.2: dependencies: semver "^6.0.0" -make-error@^1.1.1: +make-error@^1, make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -4341,10 +4406,10 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -marked@^1.1.1: - version "1.2.9" - resolved "https://registry.yarnpkg.com/marked/-/marked-1.2.9.tgz#53786f8b05d4c01a2a5a76b7d1ec9943d29d72dc" - integrity sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw== +marked@^4.0.12: + version "4.0.15" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.15.tgz#0216b7c9d5fcf6ac5042343c41d81a8b1b5e1b4a" + integrity sha512-esX5lPdTfG4p8LDkv+obbRCyOKzB+820ZZyMOXJZygZBHrH9b3xXR64X4kT3sPe9Nx8qQXbmcz6kFSMt4Nfk6Q== md5@^2.1.0: version "2.3.0" @@ -4377,7 +4442,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3, merge2@^1.3.0: +merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -4407,24 +4472,24 @@ micromatch@^3.0.4: to-regex "^3.0.2" micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - braces "^3.0.1" - picomatch "^2.2.3" + braces "^3.0.2" + picomatch "^2.3.1" -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "1.44.0" + mime-db "1.52.0" mime@2.6.0: version "2.6.0" @@ -4456,20 +4521,27 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.4, minimatch@^3.1.2: +"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +minimatch@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== dependencies: brace-expansion "^1.1.7" +minimatch@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -4484,7 +4556,7 @@ minimist@1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== @@ -4508,11 +4580,11 @@ mkdirp@1.0.4: integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== "mkdirp@>=0.5 0", mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: - minimist "^1.2.5" + minimist "^1.2.6" mocha-junit-reporter@^1.23.3: version "1.23.3" @@ -4525,33 +4597,32 @@ mocha-junit-reporter@^1.23.3: strip-ansi "^4.0.0" xml "^1.0.0" -mocha@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.4.0.tgz#677be88bf15980a3cae03a73e10a0fc3997f0cff" - integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== +mocha@^9.1.3: + version "9.2.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" + integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== dependencies: "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" - chokidar "3.5.1" - debug "4.3.1" + chokidar "3.5.3" + debug "4.3.3" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" - glob "7.1.6" + glob "7.2.0" growl "1.10.5" he "1.2.0" - js-yaml "4.0.0" - log-symbols "4.0.0" - minimatch "3.0.4" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "4.2.1" ms "2.1.3" - nanoid "3.1.20" - serialize-javascript "5.0.1" + nanoid "3.3.1" + serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" which "2.0.2" - wide-align "1.1.3" - workerpool "6.1.0" + workerpool "6.2.0" yargs "16.2.0" yargs-parser "20.2.4" yargs-unparser "2.0.0" @@ -4587,19 +4658,24 @@ multimatch@^4.0.0: arrify "^2.0.1" minimatch "^3.0.4" -multistream@^2.0.5: - version "2.1.1" - resolved "https://registry.yarnpkg.com/multistream/-/multistream-2.1.1.tgz#629d3a29bd76623489980d04519a2c365948148c" - integrity sha512-xasv76hl6nr1dEy3lPvy7Ej7K/Lx3O/FCvwge8PeVJpciPPoNCbaANcNiBug3IpdvTveZUcAV0DJzdnUDMesNQ== +multistream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/multistream/-/multistream-3.1.0.tgz#49c382bc0bb355e34d15ba3a9fc1cf0f66b9fded" + integrity sha512-zBgD3kn8izQAN/TaL1PCMv15vYpf+Vcrsfub06njuYVYlzUldzpopTlrEZ53pZVEbfn3Shtv7vRFoOv6LOV87Q== dependencies: inherits "^2.0.1" - readable-stream "^2.0.5" + readable-stream "^3.4.0" mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + mv@~2: version "2.1.1" resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" @@ -4610,19 +4686,14 @@ mv@~2: rimraf "~2.4.0" nan@^2.0.8: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== - -nanocolors@^0.1.5: - version "0.1.6" - resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.6.tgz#bc2350d3edfdbfadd7ac018c855ae7c13905a6ad" - integrity sha512-2pvTw6vYRaBLGir2xR7MxaJtyWkrn+C53EpW8yPotG+pdAwBvt0Xwk4VJ6VHLY0aLthVZPvDfm9TdZvrvAm5UQ== + version "2.15.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" + integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== -nanoid@3.1.20: - version "3.1.20" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" - integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== +nanoid@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== nanomatch@^1.2.9: version "1.2.13" @@ -4656,11 +4727,6 @@ ncp@~2.0.0: resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= -neo-async@^2.6.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -4688,6 +4754,21 @@ nise@^4.1.0: just-extend "^4.0.2" path-to-regexp "^1.7.0" +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-fetch@^2.6.1: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + node-preload@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" @@ -4695,10 +4776,10 @@ node-preload@^0.2.1: dependencies: process-on-spawn "^1.0.0" -node-releases@^1.1.76: - version "1.1.76" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.76.tgz#df245b062b0cafbd5282ab6792f7dccc2d97f36e" - integrity sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA== +node-releases@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" + integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== normalize-package-data@^2.5.0: version "2.5.0" @@ -4737,7 +4818,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0: +npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -4777,11 +4858,6 @@ nyc@^15.1.0: test-exclude "^6.0.0" yargs "^15.0.2" -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -4791,12 +4867,12 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.11.0, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== +object-inspect@^1.12.0, object-inspect@^1.9.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== -object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -4853,19 +4929,20 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -onetime@^5.1.0: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -opn@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== +open@^7.0.0: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== dependencies: - is-wsl "^1.1.0" + is-docker "^2.0.0" + is-wsl "^2.1.1" optionator@^0.9.1: version "0.9.1" @@ -4970,6 +5047,14 @@ package-hash@^4.0.0: lodash.flattendeep "^4.4.0" release-zalgo "^1.0.0" +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -4986,9 +5071,9 @@ parse-json@^4.0.0: json-parse-better-errors "^1.0.1" parse-json@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" - integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" @@ -5000,6 +5085,14 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -5013,6 +5106,14 @@ password-prompt@^1.1.2: ansi-escapes "^3.1.0" cross-spawn "^6.0.5" +path-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" + integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -5060,15 +5161,15 @@ pathval@^1.1.1: resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" @@ -5118,11 +5219,6 @@ pretty-quick@^3.1.0: mri "^1.1.5" multimatch "^4.0.0" -printj@~1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" - integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -5135,19 +5231,12 @@ process-on-spawn@^1.0.0: dependencies: fromentries "^1.2.0" -progress@^2.0.0, progress@^2.0.3: +progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -psl@^1.1.28, psl@^1.1.33: +psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== @@ -5189,11 +5278,6 @@ qqjs@^0.3.10: tmp "^0.1.0" write-json-file "^4.1.1" -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -5244,7 +5328,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -5264,10 +5348,10 @@ readdir-glob@^1.0.0: dependencies: minimatch "^3.0.4" -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" @@ -5293,6 +5377,11 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" +regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -5319,41 +5408,15 @@ release-zalgo@^1.0.0: es6-error "^4.0.1" repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request@^2.72.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -5477,7 +5540,7 @@ rimraf@~2.4.0: dependencies: glob "^6.0.1" -run-async@^2.2.0: +run-async@^2.2.0, run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== @@ -5489,21 +5552,21 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^6.1.0: - version "6.6.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" - integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== +rxjs@^6.1.0, rxjs@^6.6.0: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" rxjs@^7.5.1: - version "7.5.4" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d" - integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ== + version "7.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" + integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== dependencies: tslib "^2.1.0" -safe-buffer@*, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@*, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -5525,7 +5588,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -5550,7 +5613,7 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.3.5, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: +semver@7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -5562,15 +5625,31 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +sentence-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" + integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + sequin@*: version "0.1.1" resolved "https://registry.yarnpkg.com/sequin/-/sequin-0.1.1.tgz#5c2d389d66a383734eaafbc45edeb2c1cb1be701" integrity sha1-XC04nWajg3NOqvvEXt6ywcsb5wE= -serialize-javascript@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" @@ -5627,7 +5706,7 @@ shelljs@0.7.6: interpret "^1.0.0" rechoir "^0.6.2" -shelljs@0.8.5, shelljs@^0.8.4, shelljs@^0.8.5, shelljs@~0.8.4: +shelljs@0.8.5, shelljs@^0.8.5, shelljs@~0.8.4: version "0.8.5" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== @@ -5636,6 +5715,15 @@ shelljs@0.8.5, shelljs@^0.8.4, shelljs@^0.8.5, shelljs@~0.8.4: interpret "^1.0.0" rechoir "^0.6.2" +shiki@^0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.10.1.tgz#6f9a16205a823b56c072d0f1a0bcd0f2646bef14" + integrity sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng== + dependencies: + jsonc-parser "^3.0.0" + vscode-oniguruma "^1.6.1" + vscode-textmate "5.2.0" + shx@^0.3.2, shx@^0.3.3: version "0.3.4" resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.4.tgz#74289230b4b663979167f94e1935901406e40f02" @@ -5653,10 +5741,10 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + 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== sinon@10.0.0: version "10.0.0" @@ -5706,6 +5794,14 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -5761,20 +5857,20 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@~0.5.19: - version "0.5.20" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== +source-map-support@^0.5.17, source-map-support@~0.5.19: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -5818,9 +5914,9 @@ spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" - integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== + version "3.0.11" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" + integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -5841,21 +5937,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -5869,7 +5950,7 @@ string-argv@0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== -"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: +string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -5887,20 +5968,22 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2 strip-ansi "^6.0.1" string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.1.4" + es-abstract "^1.19.5" string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.1.4" + es-abstract "^1.19.5" string_decoder@^1.1.1: version "1.3.0" @@ -6016,12 +6099,11 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== table@^6.0.9: - version "6.7.2" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.2.tgz#a8d39b9f5966693ca8b0feba270a78722cbaf3b0" - integrity sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g== + version "6.8.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" + integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== dependencies: ajv "^8.0.1" - lodash.clonedeep "^4.5.0" lodash.truncate "^4.4.2" slice-ansi "^4.0.0" string-width "^4.2.3" @@ -6139,13 +6221,10 @@ tough-cookie@*: punycode "^2.1.1" universalify "^0.1.2" -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= "traverse@>=0.3.0 <0.4": version "0.3.9" @@ -6176,12 +6255,24 @@ ts-node@^10.0.0, ts-node@^10.3.0: v8-compile-cache-lib "^3.0.0" yn "3.1.1" +ts-node@^9: + version "9.1.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" + integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== + dependencies: + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + ts-retry-promise@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/ts-retry-promise/-/ts-retry-promise-0.6.0.tgz#95643500d5388eed25abc90aa2e99c8b6c5a7bc9" - integrity sha512-8DF80uA7JPu6m8ouHxGkyBpPTIGQnsgIUgLDqcRaD7EEhVowjG72KqCX334gsa1P+AmzeTVdd/xEzVFCAuPCtg== + version "0.6.1" + resolved "https://registry.yarnpkg.com/ts-retry-promise/-/ts-retry-promise-0.6.1.tgz#cade4d8c72ee177b9f0b9ec3ab21770752996543" + integrity sha512-6L9PAWahkRtZ4mG48wz3Mxk7LfW1eZKEPsCteIa5fbDE1G2kFk4ThHXbynKlIZLg0RdenDBDw6CLME5liOrBSQ== -tsconfig-paths@^3.11.0, tsconfig-paths@^3.14.1: +tsconfig-paths@^3.12.0, tsconfig-paths@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== @@ -6191,15 +6282,15 @@ tsconfig-paths@^3.11.0, tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== tsutils@^3.21.0: version "3.21.0" @@ -6215,11 +6306,6 @@ tunnel-agent@*, tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -6232,11 +6318,6 @@ type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - type-fest@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" @@ -6247,6 +6328,11 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -6264,55 +6350,35 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typedoc-default-themes@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/typedoc-default-themes/-/typedoc-default-themes-0.10.2.tgz#743380a80afe62c5ef92ca1bd4abe2ac596be4d2" - integrity sha512-zo09yRj+xwLFE3hyhJeVHWRSPuKEIAsFK5r2u47KL/HBKqpwdUSanoaz5L34IKiSATFrjG5ywmIu98hPVMfxZg== - dependencies: - lunr "^2.3.8" +typedoc-plugin-missing-exports@0.22.6: + version "0.22.6" + resolved "https://registry.yarnpkg.com/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-0.22.6.tgz#7467c60f1cd26507124103f0b9bca271d5aa8d71" + integrity sha512-1uguGQqa+c5f33nWS3v1mm0uAx4Ii1lw4Kx2zQksmYFKNEWTmrmMXbMNBoBg4wu0p4dFCNC7JIWPoRzpNS6pFA== -typedoc-plugin-external-module-name@~4.0.0: - version "4.0.6" - resolved "https://registry.yarnpkg.com/typedoc-plugin-external-module-name/-/typedoc-plugin-external-module-name-4.0.6.tgz#bfc13260267c35a7bd5282d7e0a8b7cddb94c575" - integrity sha512-WqJW5gbfeQD7VA96p5eRFkVlPPGXfpaAo7M/sNOeBwSBTRylKYX15kAVaGP6iM/VhXtDagTMyKhwG97sENfKHA== +typedoc@0.22.13: + version "0.22.13" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.22.13.tgz#d061f8f0fb7c9d686e48814f245bddeea4564e66" + integrity sha512-NHNI7Dr6JHa/I3+c62gdRNXBIyX7P33O9TafGLd07ur3MqzcKgwTvpg18EtvCLHJyfeSthAtCLpM7WkStUmDuQ== dependencies: - lodash "^4.1.2" - semver "^7.1.1" + glob "^7.2.0" + lunr "^2.3.9" + marked "^4.0.12" + minimatch "^5.0.1" + shiki "^0.10.1" -typedoc@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.18.0.tgz#8bf53ddd7df5b8966b52c946929a09549d78682b" - integrity sha512-UgDQwapCGQCCdYhEQzQ+kGutmcedklilgUGf62Vw6RdI29u6FcfAXFQfRTiJEbf16aK3YnkB20ctQK1JusCRbA== - dependencies: - fs-extra "^9.0.1" - handlebars "^4.7.6" - highlight.js "^10.0.0" - lodash "^4.17.15" - lunr "^2.3.8" - marked "^1.1.1" - minimatch "^3.0.0" - progress "^2.0.3" - shelljs "^0.8.4" - typedoc-default-themes "^0.10.2" - -typescript@^4.1.3: - version "4.4.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c" - integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA== - -uglify-js@^3.1.4: - version "3.13.2" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.2.tgz#fe10319861bccc8682bfe2e8151fbdd8aa921c44" - integrity sha512-SbMu4D2Vo95LMC/MetNaso1194M1htEA+JrqE9Hk+G2DhI+itfS9TRu9ZKeCahLDNa/J3n4MqUJ/fOHMzQpRWw== +typescript@^4.1.3, typescript@^4.4.3: + version "4.6.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" + integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" union-value@^1.0.0: @@ -6359,10 +6425,24 @@ unzipper@0.10.11: readable-stream "~2.3.6" setimmediate "~1.0.4" +upper-case-first@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" + integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== + dependencies: + tslib "^2.0.3" + +upper-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" + integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== + dependencies: + tslib "^2.0.3" + uri-js@^4.2.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" - integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -6381,20 +6461,20 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -uuid@^3.3.2, uuid@^3.3.3: +uuid@^3.3.3: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== v8-compile-cache-lib@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz#0582bcb1c74f3a2ee46487ceecf372e46bce53e8" - integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== v8-compile-cache@^2.0.3: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" - integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== validate-npm-package-license@^3.0.1: version "3.0.4" @@ -6404,14 +6484,20 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" +vscode-oniguruma@^1.6.1: + version "1.6.2" + resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz#aeb9771a2f1dbfc9083c8a7fdd9cccaa3f386607" + integrity sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA== + +vscode-textmate@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e" + integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= websocket-driver@>=0.5.1: version "0.7.4" @@ -6427,6 +6513,14 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -6457,13 +6551,6 @@ which@^1.2.14, which@^1.2.9: dependencies: isexe "^2.0.0" -wide-align@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - widest-line@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" @@ -6476,24 +6563,10 @@ word-wrap@^1.0.3, word-wrap@^1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - -workerpool@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" - integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== - -wrap-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-4.0.0.tgz#b3570d7c70156159a2d42be5cc942e957f7b1131" - integrity sha512-uMTsj9rDb0/7kk1PbcbCcwvHUxp60fGDB/NNXpVa0Q+ic/e7y5+BwTxKfQ33VYgDppSwi/FBzpetYzo8s6tfbg== - dependencies: - ansi-styles "^3.2.0" - string-width "^2.1.1" - strip-ansi "^4.0.0" +workerpool@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== wrap-ansi@^6.2.0: version "6.2.0" @@ -6540,7 +6613,7 @@ write-json-file@^4.1.1: sort-keys "^4.0.0" write-file-atomic "^3.0.0" -xml2js@^0.4.16: +xml2js@^0.4.22: version "0.4.23" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== @@ -6569,9 +6642,9 @@ xmldom-sfdx-encoding@^0.1.29: integrity sha512-NOZCfMfwvCMBlSMBr971cnjmToNswV68A1CA3pnM0WGauo1BhWpTgSsj6Lbq8HNAI2OOdWktCSMLtaZU5wVBHA== y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== y18n@^5.0.5: version "5.0.8" @@ -6584,9 +6657,9 @@ yallist@^4.0.0: integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yargs-parser@20.2.4: version "20.2.4" @@ -6606,6 +6679,11 @@ yargs-parser@^20.2.2, yargs-parser@^20.2.3: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@^21.0.0: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== + yargs-unparser@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" @@ -6616,7 +6694,7 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@16.2.0, yargs@^16.2.0: +yargs@16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== @@ -6646,6 +6724,19 @@ yargs@^15.0.2: y18n "^4.0.0" yargs-parser "^18.1.2" +yargs@^17.0.0: + version "17.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284" + integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" + yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"