From 5a52398b6c9b6c44a43b40dc4b491bf56c2a440f Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Tue, 27 Aug 2024 11:25:16 -0600 Subject: [PATCH 01/11] feat: add --flag to 'request rest' --- command-snapshot.json | 14 +++- messages/rest.md | 23 ++++++ src/commands/api/request/rest.ts | 56 +++++++++++---- test/commands/api/request/rest/rest.nut.ts | 18 ++++- test/commands/api/request/rest/rest.test.ts | 78 ++++++++++++++++++--- test/test-files/data-project/rest.json | 4 ++ 6 files changed, 167 insertions(+), 26 deletions(-) create mode 100644 test/test-files/data-project/rest.json diff --git a/command-snapshot.json b/command-snapshot.json index 3aa0d6f..e4cd25e 100644 --- a/command-snapshot.json +++ b/command-snapshot.json @@ -11,8 +11,18 @@ "alias": [], "command": "api:request:rest", "flagAliases": [], - "flagChars": ["H", "S", "X", "i", "o"], - "flags": ["api-version", "body", "flags-dir", "header", "include", "method", "stream-to-file", "target-org"], + "flagChars": ["H", "S", "X", "b", "f", "i", "o"], + "flags": [ + "api-version", + "body", + "file", + "flags-dir", + "header", + "include", + "method", + "stream-to-file", + "target-org" + ], "plugin": "@salesforce/plugin-api" } ] diff --git a/messages/rest.md b/messages/rest.md index 3df1b3b..71f667a 100644 --- a/messages/rest.md +++ b/messages/rest.md @@ -35,10 +35,33 @@ Make an authenticated HTTP request to Salesforce REST API and print the response <%= config.bin %> <%= command.id %> 'sobjects/account/' --body "{\"BillingCity\": \"San Francisco\"}" --method PATCH +- You can store every flag option as a parameter in a json file, with the following schema: + { + body?: string; + header?: string[]; + url?: string; + method?: string; + } + + looking at the example above, we could store all of this information in the file, and change the command to + + <%= config.bin %> <%= command.id %> --file myFile.json + + where myFile.json contains + { + "url": "sobjects/Account/", + "method": "PATCH", + "body" : {"BillingCity": "Boise"} + } + # flags.method.summary HTTP method for the request. +# flags.file.summary + +A json file to store values for header/body/method/url - this is the same format as a Postman Collection Format + # flags.header.summary HTTP header in "key:value" format. diff --git a/src/commands/api/request/rest.ts b/src/commands/api/request/rest.ts index 91c9cfe..f0a6e4b 100644 --- a/src/commands/api/request/rest.ts +++ b/src/commands/api/request/rest.ts @@ -4,11 +4,11 @@ * Licensed under the BSD 3-Clause license. * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { readFileSync, existsSync } from 'node:fs'; +import fs, { readFileSync, existsSync } from 'node:fs'; import { join } from 'node:path'; import { ProxyAgent } from 'proxy-agent'; import { Flags, SfCommand } from '@salesforce/sf-plugins-core'; -import { Messages, Org, SFDX_HTTP_HEADERS } from '@salesforce/core'; +import { Messages, Org, SFDX_HTTP_HEADERS, SfError } from '@salesforce/core'; import { Args } from '@oclif/core'; import { getHeaders, includeFlag, sendAndPrintRequest, streamToFileFlag } from '../../../shared/shared.js'; @@ -36,18 +36,24 @@ export class Rest extends SfCommand { char: 'H', multiple: true, }), + file: Flags.file({ + summary: messages.getMessage('flags.file.summary'), + helpValue: 'file', + char: 'f', + }), 'stream-to-file': streamToFileFlag, body: Flags.string({ summary: messages.getMessage('flags.body.summary'), allowStdin: true, helpValue: 'file', + char: 'b', }), }; public static args = { - endpoint: Args.string({ + url: Args.string({ description: 'Salesforce API endpoint', - required: true, + required: false, }), }; @@ -56,30 +62,50 @@ export class Rest extends SfCommand { const org = flags['target-org']; const streamFile = flags['stream-to-file']; - const headers = flags.header ? getHeaders(flags.header) : {}; + const fileOptions = flags.file + ? (JSON.parse(fs.readFileSync(flags.file, 'utf8')) as { + body?: string; + header?: string[]; + url?: string; + method?: string; + }) + : {}; + if (!args.url && !fileOptions.url) { + throw new SfError("The url is required either in --file file's content or as an argument"); + } + + const headers = getHeaders(flags.header ?? fileOptions.header ?? []); + // the conditional above ensures we either have an arg or it's in the file + const specified = args.url ?? fileOptions.url!; // replace first '/' to create valid URL - const endpoint = args.endpoint.startsWith('/') ? args.endpoint.replace('/', '') : args.endpoint; + const endpoint = specified.startsWith('/') ? specified.replace('/', '') : specified; const url = new URL( `${org.getField(Org.Fields.INSTANCE_URL)}/services/data/v${ flags['api-version'] ?? (await org.retrieveMaxApiVersion()) }/${endpoint}` ); - const body = - flags.method === 'GET' - ? undefined - : // if they've passed in a file name, check and read it - existsSync(join(process.cwd(), flags.body ?? '')) - ? readFileSync(join(process.cwd(), flags.body ?? '')) - : // otherwise it's a stdin, and we use it directly - flags.body; + // because flags.method defaults to "GET" read from file first + const method = fileOptions.method ?? flags.method; + + let body; + if (method !== 'GET') { + if (flags.body) { + body = existsSync(join(process.cwd(), flags.body)) + ? readFileSync(join(process.cwd(), flags.body)) + : // otherwise it's a stdin, and we use it directly + flags.body; + } else { + body = JSON.stringify(fileOptions.body); + } + } await org.refreshAuth(); const options = { agent: { https: new ProxyAgent() }, - method: flags.method, + method, headers: { ...SFDX_HTTP_HEADERS, Authorization: `Bearer ${ diff --git a/test/commands/api/request/rest/rest.nut.ts b/test/commands/api/request/rest/rest.nut.ts index 544cb85..2b5e240 100644 --- a/test/commands/api/request/rest/rest.nut.ts +++ b/test/commands/api/request/rest/rest.nut.ts @@ -37,7 +37,7 @@ skipIfWindows('api:request:rest NUT', () => { setDefault: true, }, ], - project: { gitClone: 'https://github.com/trailheadapps/dreamhouse-lwc' }, + project: { sourceDir: join('test', 'test-files', 'data-project') }, devhubAuthStrategy: 'AUTO', }); }); @@ -54,6 +54,22 @@ skipIfWindows('api:request:rest NUT', () => { expect(Object.keys(JSON.parse(result) as Record)).to.have.length; }); + it('can read from --file', () => { + const result = execCmd(`api request rest --file ${join(testSession.project.dir, 'rest.json')}`).shellOutput + .stdout; + + expect(Object.keys(JSON.parse(result) as Record)).to.have.length; + }); + + it('will override --file values with real flag values', () => { + const result = execCmd( + `api request rest --file ${join(testSession.project.dir, 'rest.json')} -H 'Accept:application/xml'` + ).shellOutput.stdout; + + // overrides json spec in file, with xml header + expect(result.startsWith('')).to.be.true; + }); + it('should pass headers', () => { const result = execCmd("api request rest 'limits' -H 'Accept: application/xml'").shellOutput.stdout; diff --git a/test/commands/api/request/rest/rest.test.ts b/test/commands/api/request/rest/rest.test.ts index f6b05a4..e681746 100644 --- a/test/commands/api/request/rest/rest.test.ts +++ b/test/commands/api/request/rest/rest.test.ts @@ -31,6 +31,14 @@ describe('rest', () => { }, }; + const xmlRes = ` + + + 200 + 198 + +`; + beforeEach(async () => { await $$.stubAuths(testOrg); uxStub = stubUx($$.SANDBOX); @@ -48,6 +56,16 @@ describe('rest', () => { expect(uxStub.styledJSON.args[0][0]).to.deep.equal(orgLimitsResponse); }); + it('should read everything from --file', async () => { + nock(testOrg.instanceUrl).get('/services/data/v56.0/limits').reply(200, orgLimitsResponse); + + $$.SANDBOX.stub(fs, 'existsSync').returns(true); + $$.SANDBOX.stub(fs, 'readFileSync').returns(JSON.stringify({ url: 'myUrlToBeOverriden' })); + await Rest.run(['limits', '--api-version', '56.0', '--file', 'body.json', '--target-org', 'test@hub.com']); + + expect(uxStub.styledJSON.args[0][0]).to.deep.equal(orgLimitsResponse); + }); + it("should strip leading '/'", async () => { nock(testOrg.instanceUrl).get('/services/data/v56.0/limits').reply(200, orgLimitsResponse); @@ -95,13 +113,6 @@ describe('rest', () => { }); it('should set "Accept" HTTP header', async () => { - const xmlRes = ` - - - 200 - 198 - -`; const writeSpy = $$.SANDBOX.stub(process.stdout, 'write'); nock(testOrg.instanceUrl, { @@ -113,7 +124,7 @@ describe('rest', () => { .reply(200, xmlRes); await Rest.run([ - '', + '/', '--api-version', '42.0', '--method', @@ -130,6 +141,57 @@ describe('rest', () => { expect(output).to.equal(xmlRes + '\n'); }); + it('should override "Accept" HTTP header from --file', async () => { + const writeSpy = $$.SANDBOX.stub(process.stdout, 'write'); + + nock(testOrg.instanceUrl, { + reqheaders: { + accept: 'application/xml', + }, + }) + .get('/services/data/v42.0/') + .reply(200, xmlRes); + + $$.SANDBOX.stub(fs, 'readFileSync').returns(JSON.stringify({ header: ['Accept: application/json'] })); + + await Rest.run([ + '/', + '--api-version', + '42.0', + '--file', + 'file.json', + '--header', + 'Accept: application/xml', + '--target-org', + 'test@hub.com', + ]); + + const output = stripAnsi(writeSpy.args.flat().join('')); + + // https://github.com/oclif/core/blob/ff76400fb0bdfc4be0fa93056e86183b9205b323/src/command.ts#L248-L253 + expect(output).to.equal(xmlRes + '\n'); + }); + it('should set "Accept" HTTP header from --file', async () => { + const writeSpy = $$.SANDBOX.stub(process.stdout, 'write'); + + nock(testOrg.instanceUrl, { + reqheaders: { + accept: 'application/xml', + }, + }) + .get('/services/data/v42.0/') + .reply(200, xmlRes); + + $$.SANDBOX.stub(fs, 'readFileSync').returns(JSON.stringify({ header: ['Accept: application/xml'] })); + + await Rest.run(['/', '--api-version', '42.0', '--file', 'file.json', '--target-org', 'test@hub.com']); + + const output = stripAnsi(writeSpy.args.flat().join('')); + + // https://github.com/oclif/core/blob/ff76400fb0bdfc4be0fa93056e86183b9205b323/src/command.ts#L248-L253 + expect(output).to.equal(xmlRes + '\n'); + }); + it('should validate HTTP headers are in a "key:value" format', async () => { try { await Rest.run(['services/data', '--header', 'Accept application/xml', '--target-org', 'test@hub.com']); diff --git a/test/test-files/data-project/rest.json b/test/test-files/data-project/rest.json new file mode 100644 index 0000000..05b1e09 --- /dev/null +++ b/test/test-files/data-project/rest.json @@ -0,0 +1,4 @@ +{ + "headers": ["Accept:application/json"], + "url": "/limits" +} From e4b1afaeae51c08cc68dc6e8f772366916437609 Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Tue, 27 Aug 2024 11:27:54 -0600 Subject: [PATCH 02/11] chore: fix fx import --- src/commands/api/request/rest.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/api/request/rest.ts b/src/commands/api/request/rest.ts index f0a6e4b..d166421 100644 --- a/src/commands/api/request/rest.ts +++ b/src/commands/api/request/rest.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 fs, { readFileSync, existsSync } from 'node:fs'; +import { readFileSync, existsSync } from 'node:fs'; import { join } from 'node:path'; import { ProxyAgent } from 'proxy-agent'; import { Flags, SfCommand } from '@salesforce/sf-plugins-core'; @@ -63,7 +63,7 @@ export class Rest extends SfCommand { const org = flags['target-org']; const streamFile = flags['stream-to-file']; const fileOptions = flags.file - ? (JSON.parse(fs.readFileSync(flags.file, 'utf8')) as { + ? (JSON.parse(readFileSync(flags.file, 'utf8')) as { body?: string; header?: string[]; url?: string; From bece4fd970b7f242fcacf16afd7e6d5c1c9d0a9e Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Wed, 11 Sep 2024 14:32:47 -0600 Subject: [PATCH 03/11] chore: attempt at postman typings --- src/commands/api/request/rest.ts | 46 +++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/src/commands/api/request/rest.ts b/src/commands/api/request/rest.ts index d166421..17a1e99 100644 --- a/src/commands/api/request/rest.ts +++ b/src/commands/api/request/rest.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 { readFileSync, existsSync } from 'node:fs'; +import { existsSync, readFileSync } from 'node:fs'; import { join } from 'node:path'; import { ProxyAgent } from 'proxy-agent'; import { Flags, SfCommand } from '@salesforce/sf-plugins-core'; @@ -14,6 +14,15 @@ import { getHeaders, includeFlag, sendAndPrintRequest, streamToFileFlag } from ' Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-api', 'rest'); +const MethodOptions = ['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE'] as const; + +type PostmanSchema = { + url: { raw: string } | string; + method: typeof MethodOptions; + description?: string; + header: string | Array>; + body: { mode: 'raw' | 'formdata'; raw: string; formdata: FormData }; +}; export class Rest extends SfCommand { public static readonly summary = messages.getMessage('summary'); @@ -25,10 +34,9 @@ export class Rest extends SfCommand { 'api-version': Flags.orgApiVersion(), include: includeFlag, method: Flags.option({ - options: ['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE'] as const, + options: MethodOptions, summary: messages.getMessage('flags.method.summary'), char: 'X', - default: 'GET', })(), header: Flags.string({ summary: messages.getMessage('flags.header.summary'), @@ -62,22 +70,28 @@ export class Rest extends SfCommand { const org = flags['target-org']; const streamFile = flags['stream-to-file']; - const fileOptions = flags.file - ? (JSON.parse(readFileSync(flags.file, 'utf8')) as { - body?: string; - header?: string[]; - url?: string; - method?: string; - }) - : {}; + const fileOptions: PostmanSchema | undefined = flags.file + ? (JSON.parse(readFileSync(flags.file, 'utf8')) as PostmanSchema) + : undefined; - if (!args.url && !fileOptions.url) { + if (!args.url && !fileOptions?.url) { throw new SfError("The url is required either in --file file's content or as an argument"); } - const headers = getHeaders(flags.header ?? fileOptions.header ?? []); + const headers = getHeaders(flags.header ?? []); + if (typeof fileOptions?.header === 'string') { + const [key, ...rest] = fileOptions.header.split(':'); + headers[key] = rest.join(':').trim(); + } else { + fileOptions?.header.map((header) => { + Object.entries(header).map((v) => { + headers[v[0]] = v[1]; + }); + }); + } + // the conditional above ensures we either have an arg or it's in the file - const specified = args.url ?? fileOptions.url!; + const specified: string | URL = args.url ?? (fileOptions?.url as { raw: string }).raw ?? fileOptions?.url; // replace first '/' to create valid URL const endpoint = specified.startsWith('/') ? specified.replace('/', '') : specified; const url = new URL( @@ -87,7 +101,7 @@ export class Rest extends SfCommand { ); // because flags.method defaults to "GET" read from file first - const method = fileOptions.method ?? flags.method; + const method = flags.method ?? fileOptions?.method ?? 'GET'; let body; if (method !== 'GET') { @@ -97,7 +111,7 @@ export class Rest extends SfCommand { : // otherwise it's a stdin, and we use it directly flags.body; } else { - body = JSON.stringify(fileOptions.body); + body = JSON.stringify(fileOptions?.body); } } From d3d940b83504bb786e186597454253d9bdeb0d73 Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Fri, 13 Sep 2024 10:02:00 -0600 Subject: [PATCH 04/11] fix: using Postman schema, updated examples --- messages/rest.md | 24 ++++++++++++--------- src/commands/api/request/rest.ts | 36 +++++++++++++------------------- 2 files changed, 28 insertions(+), 32 deletions(-) diff --git a/messages/rest.md b/messages/rest.md index 91537a0..bd18e37 100644 --- a/messages/rest.md +++ b/messages/rest.md @@ -14,20 +14,20 @@ Make an authenticated HTTP request to Salesforce REST API and print the response - Get the response in XML format by specifying the "Accept" HTTP header: - <%= config.bin %> <%= command.id %> 'limits' --target-org my-org --header 'Accept: application/xml' + <%= config.bin %> <%= command.id %> limits --target-org my-org --header 'Accept: application/xml' - POST to create an Account object - <%= config.bin %> <%= command.id %> 'sobjects/account' --body "{\"Name\" : \"Account from REST API\",\"ShippingCity\" : \"Boise\"}" --method POST + <%= config.bin %> <%= command.id %> sobjects/account --body "{\"Name\" : \"Account from REST API\",\"ShippingCity\" : \"Boise\"}" --method POST -- or with a file 'info.json' containing +- or with a file 'body.json' containing { - "Name": "Demo", - "ShippingCity": "Boise" + "Name": "Demo", + "ShippingCity": "Boise" } -<%= config.bin %> <%= command.id %> 'sobjects/account' --body info.json --method POST +cat body.json | <%= config.bin %> <%= command.id %> sobjects/account --method POST --body - - Update object @@ -35,10 +35,11 @@ Make an authenticated HTTP request to Salesforce REST API and print the response - You can store every flag option as a parameter in a json file, with the following schema: { - body?: string; - header?: string[]; - url?: string; - method?: string; + url: { raw: string } | string; + method: 'GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE'; + description?: string; + header: string | Array>; + body: { mode: 'raw' | 'formdata'; raw: string; formdata: FormData }; } looking at the example above, we could store all of this information in the file, and change the command to @@ -52,6 +53,9 @@ Make an authenticated HTTP request to Salesforce REST API and print the response "body" : {"BillingCity": "Boise"} } +- If you work in Postman a lot this schema may look familiar, because it shares as many similar properties as we could. Building an API call in postman then exporting and saving the file and executing via the CLI is now possible. +- + # flags.method.summary HTTP method for the request. diff --git a/src/commands/api/request/rest.ts b/src/commands/api/request/rest.ts index 17a1e99..b4dc878 100644 --- a/src/commands/api/request/rest.ts +++ b/src/commands/api/request/rest.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 { existsSync, readFileSync } from 'node:fs'; -import { join } from 'node:path'; +import { readFileSync } from 'node:fs'; + import { ProxyAgent } from 'proxy-agent'; import { Flags, SfCommand } from '@salesforce/sf-plugins-core'; import { Messages, Org, SFDX_HTTP_HEADERS, SfError } from '@salesforce/core'; @@ -14,11 +14,11 @@ import { getHeaders, includeFlag, sendAndPrintRequest, streamToFileFlag } from ' Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-api', 'rest'); -const MethodOptions = ['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE'] as const; +const methodOptions = ['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE'] as const; type PostmanSchema = { url: { raw: string } | string; - method: typeof MethodOptions; + method: typeof methodOptions; description?: string; header: string | Array>; body: { mode: 'raw' | 'formdata'; raw: string; formdata: FormData }; @@ -34,7 +34,7 @@ export class Rest extends SfCommand { 'api-version': Flags.orgApiVersion(), include: includeFlag, method: Flags.option({ - options: MethodOptions, + options: methodOptions, summary: messages.getMessage('flags.method.summary'), char: 'X', })(), @@ -83,7 +83,7 @@ export class Rest extends SfCommand { const [key, ...rest] = fileOptions.header.split(':'); headers[key] = rest.join(':').trim(); } else { - fileOptions?.header.map((header) => { + (fileOptions?.header ?? []).map((header) => { Object.entries(header).map((v) => { headers[v[0]] = v[1]; }); @@ -91,28 +91,20 @@ export class Rest extends SfCommand { } // the conditional above ensures we either have an arg or it's in the file - const specified: string | URL = args.url ?? (fileOptions?.url as { raw: string }).raw ?? fileOptions?.url; - // replace first '/' to create valid URL - const endpoint = specified.startsWith('/') ? specified.replace('/', '') : specified; + const specified = args.url ?? (fileOptions?.url as { raw: string }).raw ?? fileOptions?.url; const url = new URL( `${org.getField(Org.Fields.INSTANCE_URL)}/services/data/v${ flags['api-version'] ?? (await org.retrieveMaxApiVersion()) - }/${endpoint}` + // replace first '/' to create valid URL + }/${specified.replace(/\//y, '')}` ); // because flags.method defaults to "GET" read from file first const method = flags.method ?? fileOptions?.method ?? 'GET'; - - let body; - if (method !== 'GET') { - if (flags.body) { - body = existsSync(join(process.cwd(), flags.body)) - ? readFileSync(join(process.cwd(), flags.body)) - : // otherwise it's a stdin, and we use it directly - flags.body; - } else { - body = JSON.stringify(fileOptions?.body); - } + // @ts-expect-error users _could_ put one of these in their file without knowing it's wrong - TS is smarter than users here :) + if (!methodOptions.includes(method)) { + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + throw new SfError(`"${method}" must be one of ${methodOptions.join(', ')}`); } await org.refreshAuth(); @@ -129,7 +121,7 @@ export class Rest extends SfCommand { }`, ...headers, }, - body, + body: method !== 'GET' ? (flags.body ? flags.body : JSON.stringify(fileOptions?.body)) : undefined, throwHttpErrors: false, followRedirect: false, }; From cd2decd9ea7257ef49a4360a87112dfd43178f30 Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Fri, 20 Sep 2024 09:23:39 -0600 Subject: [PATCH 05/11] chore: half way commit- need to refactor --- package.json | 3 +- src/commands/api/request/rest.ts | 47 +- src/shared/shared.ts | 23 +- yarn.lock | 2363 +++++++++++++++++------------- 4 files changed, 1371 insertions(+), 1065 deletions(-) diff --git a/package.json b/package.json index fbc3bef..4f36380 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "@salesforce/sf-plugins-core": "^11.3.2", "@salesforce/ts-types": "^2.0.12", "ansis": "^3.3.2", + "form-data": "^4.0.0", "got": "^13.0.0", "proxy-agent": "^6.4.0" }, @@ -31,8 +32,6 @@ "files": [ "/lib", "/messages", - "/npm-shrinkwrap.json", - "/oclif.lock", "/oclif.manifest.json", "/schemas" ], diff --git a/src/commands/api/request/rest.ts b/src/commands/api/request/rest.ts index b4dc878..5bfbfce 100644 --- a/src/commands/api/request/rest.ts +++ b/src/commands/api/request/rest.ts @@ -4,12 +4,13 @@ * Licensed under the BSD 3-Clause license. * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { readFileSync } from 'node:fs'; - +import { readFileSync, createReadStream } from 'node:fs'; +import { basename } from 'node:path'; import { ProxyAgent } from 'proxy-agent'; import { Flags, SfCommand } from '@salesforce/sf-plugins-core'; import { Messages, Org, SFDX_HTTP_HEADERS, SfError } from '@salesforce/core'; import { Args } from '@oclif/core'; +import FormData from 'form-data'; import { getHeaders, includeFlag, sendAndPrintRequest, streamToFileFlag } from '../../../shared/shared.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); @@ -20,8 +21,12 @@ type PostmanSchema = { url: { raw: string } | string; method: typeof methodOptions; description?: string; - header: string | Array>; - body: { mode: 'raw' | 'formdata'; raw: string; formdata: FormData }; + header: string | Array<{ key: string; value: string; disabled?: boolean; description?: string }>; + body: { + mode: 'raw' | 'formdata'; + raw: string; + formdata: Array<{ key: string; type: 'file' | 'text'; src?: string | string[]; value: string }>; + }; }; export class Rest extends SfCommand { @@ -81,12 +86,12 @@ export class Rest extends SfCommand { const headers = getHeaders(flags.header ?? []); if (typeof fileOptions?.header === 'string') { const [key, ...rest] = fileOptions.header.split(':'); - headers[key] = rest.join(':').trim(); + headers[key.toLowerCase()] = rest.join(':').trim(); } else { (fileOptions?.header ?? []).map((header) => { - Object.entries(header).map((v) => { - headers[v[0]] = v[1]; - }); + if (!header.disabled) { + headers[header.key.toLowerCase()] = header.value; + } }); } @@ -99,7 +104,6 @@ export class Rest extends SfCommand { }/${specified.replace(/\//y, '')}` ); - // because flags.method defaults to "GET" read from file first const method = flags.method ?? fileOptions?.method ?? 'GET'; // @ts-expect-error users _could_ put one of these in their file without knowing it's wrong - TS is smarter than users here :) if (!methodOptions.includes(method)) { @@ -109,6 +113,8 @@ export class Rest extends SfCommand { await org.refreshAuth(); + const body = method !== 'GET' ? (flags.body ? flags.body : getBodyContents(fileOptions?.body)) : undefined; + const options = { agent: { https: new ProxyAgent() }, method, @@ -121,11 +127,32 @@ export class Rest extends SfCommand { }`, ...headers, }, - body: method !== 'GET' ? (flags.body ? flags.body : JSON.stringify(fileOptions?.body)) : undefined, + body, throwHttpErrors: false, followRedirect: false, }; + // eslint-disable-next-line no-console + console.log('op', options); + await sendAndPrintRequest({ streamFile, url, options, include: flags.include, this: this }); } } +const getBodyContents = (body?: PostmanSchema['body']): string | FormData => { + if (body?.mode === 'raw') { + return body.raw; + } else { + // parse formdata + const form = new FormData(); + body?.formdata.map((data) => { + if (data.type === 'text') { + form.append(data.key, data.value); + } else if (data.type === 'file' && typeof data.src === 'string') { + form.append(data.key, createReadStream(data.src), basename(data.src)); + } else if (Array.isArray(data.src)) { + form.append(data.key, data.src); + } + }); + return form; + } +}; diff --git a/src/shared/shared.ts b/src/shared/shared.ts index 2b37cdb..4967df0 100644 --- a/src/shared/shared.ts +++ b/src/shared/shared.ts @@ -14,18 +14,23 @@ import got from 'got'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-api', 'shared'); -export function getHeaders(keyValPair: string[]): Headers { +export function getHeaders(keyValPair: string[] | string): Headers { const headers: { [key: string]: string } = {}; - for (const header of keyValPair) { - const [key, ...rest] = header.split(':'); - const value = rest.join(':').trim(); - if (!key || !value) { - throw new SfError(`Failed to parse HTTP header: "${header}".`, 'Failed To Parse HTTP Header', [ - 'Make sure the header is in a "key:value" format, e.g. "Accept: application/json"', - ]); + if (typeof keyValPair === 'string') { + const [key, ...rest] = keyValPair.split(':'); + headers[key] = rest.join(':').trim(); + } else { + for (const header of keyValPair) { + const [key, ...rest] = header.split(':'); + const value = rest.join(':').trim(); + if (!key || !value) { + throw new SfError(`Failed to parse HTTP header: "${header}".`, 'Failed To Parse HTTP Header', [ + 'Make sure the header is in a "key:value" format, e.g. "Accept: application/json"', + ]); + } + headers[key] = value; } - headers[key] = value; } return headers; diff --git a/yarn.lock b/yarn.lock index 23dc917..2f9bc75 100644 --- a/yarn.lock +++ b/yarn.lock @@ -78,521 +78,523 @@ "@smithy/util-utf8" "^2.0.0" tslib "^2.6.2" -"@aws-sdk/client-cloudfront@^3.624.0": - version "3.629.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudfront/-/client-cloudfront-3.629.0.tgz#90d39224603daf934bb2732868d0d72826ec4237" - integrity sha512-WBwmK/5R1dBlQXdxJwbdiXaA8mQPyaK8znJ1f5hFeE+euzIWntEjuN7qhoSW7lMC4IiLTiB0xAwVVvOfqi95iQ== +"@aws-sdk/client-cloudfront@^3.645.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudfront/-/client-cloudfront-3.654.0.tgz#1ea9f1eeb03d390c6e49a9b64c2238438f349f9e" + integrity sha512-AdSusqY4WJVcHpOMPRSpQpcknhOSUfxfAPYaIFkeyFduIGsl5lxvvMfhT4c+37nHFNhP9od1BxZZuaa6idgEDg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.629.0" - "@aws-sdk/client-sts" "3.629.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.629.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@aws-sdk/xml-builder" "3.609.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.654.0" + "@aws-sdk/client-sts" "3.654.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@aws-sdk/xml-builder" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-stream" "^3.1.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" + "@smithy/util-stream" "^3.1.6" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" + "@smithy/util-waiter" "^3.1.5" tslib "^2.6.2" -"@aws-sdk/client-s3@^3.614.0": - version "3.629.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.629.0.tgz#6c22639c0cdb73b05409b5633a87010bfec7b107" - integrity sha512-Q0YXKdUA7NboPl94JOKD4clHHuERG1Kwy0JPbU+3Hvmz/UuwUGBmlfaRAqd9y4LXsTv/2xKtFPW9R+nBfy9mwA== +"@aws-sdk/client-s3@^3.651.1": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.654.0.tgz#a4a5a341959a4bab71b4a3326a76e59fb0d50ecd" + integrity sha512-EsyeZJhkZD2VMdZpNt4NhlQ3QUAF24gMC+5w2wpGg6Yw+Bv7VLdg1t3PkTQovriJX1KTJAYHcGAuy92OFmWIng== dependencies: "@aws-crypto/sha1-browser" "5.2.0" "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.629.0" - "@aws-sdk/client-sts" "3.629.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.629.0" - "@aws-sdk/middleware-bucket-endpoint" "3.620.0" - "@aws-sdk/middleware-expect-continue" "3.620.0" - "@aws-sdk/middleware-flexible-checksums" "3.620.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-location-constraint" "3.609.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-sdk-s3" "3.629.0" - "@aws-sdk/middleware-ssec" "3.609.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/signature-v4-multi-region" "3.629.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@aws-sdk/xml-builder" "3.609.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/eventstream-serde-browser" "^3.0.6" - "@smithy/eventstream-serde-config-resolver" "^3.0.3" - "@smithy/eventstream-serde-node" "^3.0.5" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-blob-browser" "^3.1.2" - "@smithy/hash-node" "^3.0.3" - "@smithy/hash-stream-node" "^3.1.2" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/md5-js" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.654.0" + "@aws-sdk/client-sts" "3.654.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-bucket-endpoint" "3.654.0" + "@aws-sdk/middleware-expect-continue" "3.654.0" + "@aws-sdk/middleware-flexible-checksums" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-location-constraint" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-sdk-s3" "3.654.0" + "@aws-sdk/middleware-ssec" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/signature-v4-multi-region" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@aws-sdk/xml-builder" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/eventstream-serde-browser" "^3.0.9" + "@smithy/eventstream-serde-config-resolver" "^3.0.6" + "@smithy/eventstream-serde-node" "^3.0.8" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-blob-browser" "^3.1.5" + "@smithy/hash-node" "^3.0.6" + "@smithy/hash-stream-node" "^3.1.5" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/md5-js" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-stream" "^3.1.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" + "@smithy/util-stream" "^3.1.6" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" + "@smithy/util-waiter" "^3.1.5" tslib "^2.6.2" -"@aws-sdk/client-sso-oidc@3.629.0": - version "3.629.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.629.0.tgz#8bd4138c4ff24962e0f2753cfa9722a18330ad1f" - integrity sha512-3if0LauNJPqubGYf8vnlkp+B3yAeKRuRNxfNbHlE6l510xWGcKK/ZsEmiFmfePzKKSRrDh/cxMFMScgOrXptNg== +"@aws-sdk/client-sso-oidc@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz#9c02ce49f95203e8b99e896cf0dca6e4858e2da7" + integrity sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.629.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sso@3.629.0": - version "3.629.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.629.0.tgz#19ad0236cf3985da68552dc597ed14736450630e" - integrity sha512-2w8xU4O0Grca5HmT2dXZ5fF0g39RxODtmoqHJDsK5DSt750LqDG4w3ktmBvQs3+SrpkkJOjlX5v/hb2PCxVbww== +"@aws-sdk/client-sso@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.654.0.tgz#6d800f0cfca97f8acf1fbf46cdac46169201267b" + integrity sha512-4kBxs2IzCDtj6a6lRXa/lXK5wWpMGzwKtb+HMXf/rJYVM6x7wYRzc1hYrOd3DYkFQ/sR3dUFj+0mTP0os3aAbA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sts@3.629.0": - version "3.629.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.629.0.tgz#a6ee546ebda64be90d310bb0a7316d98feabf1bd" - integrity sha512-RjOs371YwnSVGxhPjuluJKaxl4gcPYTAky0nPjwBime0i9/iS9nI8R8l5j7k7ec9tpFWjBPvNnThCU07pvjdzw== +"@aws-sdk/client-sts@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz#574194804834f6158cc06d44ab517ec6e4c1c1c2" + integrity sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.629.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.629.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.654.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/credential-provider-node" "3.654.0" + "@aws-sdk/middleware-host-header" "3.654.0" + "@aws-sdk/middleware-logger" "3.654.0" + "@aws-sdk/middleware-recursion-detection" "3.654.0" + "@aws-sdk/middleware-user-agent" "3.654.0" + "@aws-sdk/region-config-resolver" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@aws-sdk/util-user-agent-browser" "3.654.0" + "@aws-sdk/util-user-agent-node" "3.654.0" + "@smithy/config-resolver" "^3.0.8" + "@smithy/core" "^2.4.3" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/hash-node" "^3.0.6" + "@smithy/invalid-dependency" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.8" + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.18" + "@smithy/util-defaults-mode-node" "^3.0.18" + "@smithy/util-endpoints" "^2.1.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/core@3.629.0": - version "3.629.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.629.0.tgz#1ed02c657edcd22ffdce9b3b5bdbd2a36fe899aa" - integrity sha512-+/ShPU/tyIBM3oY1cnjgNA/tFyHtlWq+wXF9xEKRv19NOpYbWQ+xzNwVjGq8vR07cCRqy/sDQLWPhxjtuV/FiQ== - dependencies: - "@smithy/core" "^2.3.2" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" +"@aws-sdk/core@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.654.0.tgz#9ccc3618af04b4ff198433a22e27d7db14890917" + integrity sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w== + dependencies: + "@smithy/core" "^2.4.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/property-provider" "^3.1.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/signature-v4" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/util-middleware" "^3.0.6" fast-xml-parser "4.4.1" tslib "^2.6.2" -"@aws-sdk/credential-provider-env@3.620.1": - version "3.620.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz#d4692c49a65ebc11dae3f7f8b053fee9268a953c" - integrity sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg== +"@aws-sdk/credential-provider-env@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.654.0.tgz#5773a9d969ede7e30059472b26c9e39b3992cc0a" + integrity sha512-kogsx3Ql81JouHS7DkheCDU9MYAvK0AokxjcshDveGmf7BbgbWCA8Fnb9wjQyNDaOXNvkZu8Z8rgkX91z324/w== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-http@3.622.0": - version "3.622.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.622.0.tgz#db481fdef859849d07dd5870894f45df2debab3d" - integrity sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" +"@aws-sdk/credential-provider-http@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.654.0.tgz#72ce2ff0136eb87ef0c90d435bf1dd61558fe96d" + integrity sha512-tgmAH4MBi/aDR882lfw48+tDV95ZH3GWc1Eoe6DpNLiM3GN2VfU/cZwuHmi6aq+vAbdIlswBHJ/+va0fOvlyjw== + dependencies: + "@aws-sdk/types" "3.654.0" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/property-provider" "^3.1.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/util-stream" "^3.1.6" tslib "^2.6.2" -"@aws-sdk/credential-provider-ini@3.629.0": - version "3.629.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.629.0.tgz#88a88ec752d8db388300143a37e70d96d6ea2cef" - integrity sha512-r9fI7BABARvVDp77DBUImQzYdvarAIdhbvpCEZib0rlpvfWu3zxE9KZcapCAAi0MPjxeDfb7RMehFQIkAP7mYw== - dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.622.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.629.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" +"@aws-sdk/credential-provider-ini@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.654.0.tgz#557b3774d4ab3d127f96cb2cd29419b2a8569796" + integrity sha512-DKSdaNu2hwdmuvnm9KnA0NLqMWxxmxSOLWjSUSoFIm++wGXUjPrRMFYKvMktaXnPuyf5my8gF/yGbwzPZ8wlTg== + dependencies: + "@aws-sdk/credential-provider-env" "3.654.0" + "@aws-sdk/credential-provider-http" "3.654.0" + "@aws-sdk/credential-provider-process" "3.654.0" + "@aws-sdk/credential-provider-sso" "3.654.0" + "@aws-sdk/credential-provider-web-identity" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/credential-provider-imds" "^3.2.3" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-node@3.629.0": - version "3.629.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.629.0.tgz#4004ada7d3edbf0d28c710a5a5d42027dc34bfb2" - integrity sha512-868hnVOLlXOBHk91Rl0jZIRgr/M4WJCa0nOrW9A9yidsQxuZp9P0vshDmm4hMvNZadmPIfo0Rra2MpA4RELoCw== - dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.622.0" - "@aws-sdk/credential-provider-ini" "3.629.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.629.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" +"@aws-sdk/credential-provider-node@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.654.0.tgz#a701dda47eea2a3d5996d97672c058949ef41d3b" + integrity sha512-wPV7CNYaXDEc+SS+3R0v8SZwkHRUE1z2k2j1d49tH5QBDT4tb/k2V/biXWkwSk3hbR+IMWXmuhJDv/5lybhIvg== + dependencies: + "@aws-sdk/credential-provider-env" "3.654.0" + "@aws-sdk/credential-provider-http" "3.654.0" + "@aws-sdk/credential-provider-ini" "3.654.0" + "@aws-sdk/credential-provider-process" "3.654.0" + "@aws-sdk/credential-provider-sso" "3.654.0" + "@aws-sdk/credential-provider-web-identity" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/credential-provider-imds" "^3.2.3" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-process@3.620.1": - version "3.620.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz#10387cf85400420bb4bbda9cc56937dcc6d6d0ee" - integrity sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg== +"@aws-sdk/credential-provider-process@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.654.0.tgz#2c526d0d059eddfe4176933fadbbf8bd59480642" + integrity sha512-PmQoo8sZ9Q2Ow8OMzK++Z9lI7MsRUG7sNq3E72DVA215dhtTICTDQwGlXH2AAmIp7n+G9LLRds+4wo2ehG4mkg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-sso@3.629.0": - version "3.629.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.629.0.tgz#f6c550d74007d1262149ae736df5868d4ea5aad7" - integrity sha512-Lf4XOuj6jamxgGZGrVojERh5S+NS2t2S4CUOnAu6tJ5U0GPlpjhINUKlcVxJBpsIXudMGW1nkumAd3+kazCPig== - dependencies: - "@aws-sdk/client-sso" "3.629.0" - "@aws-sdk/token-providers" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" +"@aws-sdk/credential-provider-sso@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.654.0.tgz#cb6cd05a8279c6ffe7e7399c03ba2db5ef2534f5" + integrity sha512-7GFme6fWEdA/XYKzZPOAdj/jS6fMBy1NdSIZsDXikS0v9jU+ZzHrAaWt13YLzHyjgxB9Sg9id9ncdY1IiubQXQ== + dependencies: + "@aws-sdk/client-sso" "3.654.0" + "@aws-sdk/token-providers" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-web-identity@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz#b25878c0a05dad60cd5f91e7e5a31a145c2f14be" - integrity sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w== +"@aws-sdk/credential-provider-web-identity@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.654.0.tgz#67dc0463d20f801c8577276e2066f9151b2d5eb1" + integrity sha512-6a2g9gMtZToqSu+CusjNK5zvbLJahQ9di7buO3iXgbizXpLXU1rnawCpWxwslMpT5fLgMSKDnKDrr6wdEk7jSw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-bucket-endpoint@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz#c5dc0e98b6209a91479cad6c2c74fbc5a3429fab" - integrity sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg== +"@aws-sdk/middleware-bucket-endpoint@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.654.0.tgz#f8241db792eb951e1aaa127911e9d35ae11f45f2" + integrity sha512-/lWkyeLESiK+rAB4+NCw1cVPle9RN7RW/v7B4b8ORiCn1FwZLUPmEiZSYzyh4in5oa3Mri+W/g+KafZDH6LCbA== dependencies: - "@aws-sdk/types" "3.609.0" + "@aws-sdk/types" "3.654.0" "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" "@smithy/util-config-provider" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/middleware-expect-continue@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz#6a362c0f0696dc6749108a33de9998e0fa6b50ec" - integrity sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A== +"@aws-sdk/middleware-expect-continue@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.654.0.tgz#ccf64bd5dbde3266181a00052bad8f78fcc1914e" + integrity sha512-S7fSlo8vdjkQTy9DmdF54ZsPwc+aA4z5Y9JVqAlGL9QiZe/fPtRE3GZ8BBbMICjBfMEa12tWjzhDz9su2c6PIA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-flexible-checksums@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz#42cd48cdc0ad9639545be000bf537969210ce8c5" - integrity sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA== +"@aws-sdk/middleware-flexible-checksums@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.654.0.tgz#2868528c66c1f0094811668e2e89b246ca94352a" + integrity sha512-ZSRC+Lf9WxyoDLuTkd7JrFRrBLPLXcTOZzX6tDsnHc6tgdneBNwV3/ZOYUwQ8bdwLLnzSaQUU+X5B2BkEFKIhQ== dependencies: "@aws-crypto/crc32" "5.2.0" "@aws-crypto/crc32c" "5.2.0" - "@aws-sdk/types" "3.609.0" + "@aws-sdk/types" "3.654.0" "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" + "@smithy/util-middleware" "^3.0.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/middleware-host-header@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz#b561d419a08a984ba364c193376b482ff5224d74" - integrity sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg== +"@aws-sdk/middleware-host-header@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz#8b02dcc28467d5b48c32cec22fd6e10ffd2a0549" + integrity sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-location-constraint@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz#7ed82d71e5ddcd50683ef2bbde10d1cc2492057e" - integrity sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A== +"@aws-sdk/middleware-location-constraint@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.654.0.tgz#a64ab011c390e4c7be75a08e0e104e06ccb4d961" + integrity sha512-Duvv5c4DEQ7P6c0YlcvEUW3xCJi6X2uktafNGjILhVDMQwShSF/aFqNv/ikWU/luQcmWHZ9DtDjTR9UKLh6eTA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-logger@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz#ed44d201f091b8bac908cbf14724c7a4d492553f" - integrity sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ== +"@aws-sdk/middleware-logger@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz#510495302fb134e1ef2163205f8eaedd46ffe05f" + integrity sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-recursion-detection@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz#f8270dfff843fd756be971e5673f89c6a24c6513" - integrity sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w== +"@aws-sdk/middleware-recursion-detection@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz#4ade897efb6cbbfd72dd62a66999f28fd1552f9a" + integrity sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-sdk-s3@3.629.0": - version "3.629.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.629.0.tgz#10ad7b8af945f915d31f00cec0198248be95291c" - integrity sha512-FRXLcnPWXBoq/T9mnGnrpqhrSKNSm22rqJ0L7P14KESmbGuwhF/7ELYYxXIpgnIpb/CIUVmIU5EE8lsW1VTe8A== +"@aws-sdk/middleware-sdk-s3@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.654.0.tgz#53c87e64e745b45b6ff30ba8f06ed27b1fa7c761" + integrity sha512-6prq+GK6hLMAbxEb83tBMb1YiTWWK196fJhFO/7gE5TUPL1v756RhQZzKV/njbwB1fIBjRBTuhYLh5Bn98HhdA== dependencies: - "@aws-sdk/core" "3.629.0" - "@aws-sdk/types" "3.609.0" + "@aws-sdk/core" "3.654.0" + "@aws-sdk/types" "3.654.0" "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/core" "^2.3.2" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" + "@smithy/core" "^2.4.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/signature-v4" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-stream" "^3.1.3" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-stream" "^3.1.6" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/middleware-ssec@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz#b87a8bc6133f3f6bdc6801183d0f9dad3f93cf9f" - integrity sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg== +"@aws-sdk/middleware-ssec@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.654.0.tgz#025cddb3317e5ab8cfdb1f449c4135441810119b" + integrity sha512-k7hkQDJh4hcRJC7YojQ11kc37SY4foryen26Eafj5qYjeG2OGMW0oZTJDl1TVFJ7AcCjqIuMIo0Ho2US/2JspQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/middleware-user-agent@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz#1fe3104f04f576a942cf0469bfbd73c38eef3d9e" - integrity sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A== +"@aws-sdk/middleware-user-agent@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz#5fa56514b97ced923fefe2653429d7b2bfb102bb" + integrity sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg== dependencies: - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@aws-sdk/util-endpoints" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/region-config-resolver@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz#9cebb31a5bcfea2a41891fff7f28d0164cde179a" - integrity sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g== +"@aws-sdk/region-config-resolver@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz#f98e25a6669fde3d747db23eb589732384e213ef" + integrity sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.6" tslib "^2.6.2" -"@aws-sdk/signature-v4-multi-region@3.629.0": - version "3.629.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.629.0.tgz#ca75443f3324fd398d228c3cba0f4275e7bb4a3a" - integrity sha512-GPX6dnmuLGDFp7CsGqGCzleEoNyr9ekgOzSBtcL5nKX++NruxO7f1QzJAbcYvz0gdKvz958UO0EKsGM6hnkTSg== +"@aws-sdk/signature-v4-multi-region@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.654.0.tgz#717ec39af4ec371ee463d0e51fa3985a2fb784ac" + integrity sha512-f8kyvbzgD3lSK1kFc3jsDCYjdutcqGO3tOzYO/QIK7BTl5lxc4rm6IKTcF2UYJsn8jiNqih7tVK8aVIGi8IF/w== dependencies: - "@aws-sdk/middleware-sdk-s3" "3.629.0" - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/middleware-sdk-s3" "3.654.0" + "@aws-sdk/types" "3.654.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/signature-v4" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/token-providers@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz#88da04f6d4ce916b0b0f6e045676d04201fb47fd" - integrity sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw== +"@aws-sdk/token-providers@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.654.0.tgz#1aba36d510d471ccac43f90b59e2a354399ed069" + integrity sha512-D8GeJYmvbfWkQDtTB4owmIobSMexZel0fOoetwvgCQ/7L8VPph3Q2bn1TRRIXvH7wdt6DcDxA3tKMHPBkT3GlA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/types@3.609.0", "@aws-sdk/types@^3.222.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.609.0.tgz#06b39d799c9f197a7b43670243e8e78a3bf7d6a5" - integrity sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q== +"@aws-sdk/types@3.654.0", "@aws-sdk/types@^3.222.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.654.0.tgz#d368dda5e8aff9e7b6575985bb425bbbaf67aa97" + integrity sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@aws-sdk/util-arn-parser@3.568.0": @@ -602,14 +604,14 @@ dependencies: tslib "^2.6.2" -"@aws-sdk/util-endpoints@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz#6564b0ffd7dc3728221e9f9821f5aab1cc58468e" - integrity sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw== +"@aws-sdk/util-endpoints@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz#ae8ac05c8afe73cf1428942c3a6d0ab8765f3911" + integrity sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" - "@smithy/util-endpoints" "^2.0.5" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" + "@smithy/util-endpoints" "^2.1.2" tslib "^2.6.2" "@aws-sdk/util-locate-window@^3.0.0": @@ -619,32 +621,32 @@ dependencies: tslib "^2.6.2" -"@aws-sdk/util-user-agent-browser@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz#aa15421b2e32ae8bc589dac2bd6e8969832ce588" - integrity sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA== +"@aws-sdk/util-user-agent-browser@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz#caa5e5d6d502aad1fe5a436cffbabfff1ec3b92c" + integrity sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/types" "^3.4.2" bowser "^2.11.0" tslib "^2.6.2" -"@aws-sdk/util-user-agent-node@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz#1e3f49a80f841a3f21647baed2adce01aac5beb5" - integrity sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA== +"@aws-sdk/util-user-agent-node@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz#d4b88fa9f3fce2fd70118d2c01abd941d30cffa7" + integrity sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.654.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@aws-sdk/xml-builder@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz#eeb3d5cde000a23cfeeefe0354b6193440dc7d87" - integrity sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA== +"@aws-sdk/xml-builder@3.654.0": + version "3.654.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.654.0.tgz#28d295a1a9bbe6313ba240ce9cf851e894fcd449" + integrity sha512-qA2diK3d/ztC8HUb7NwPKbJRV01NpzTzxFn+L5G3HzJBNeKbjLcprQ/9uG9gp2UEx2Go782FI1ddrMNa0qBICA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.24.7": @@ -656,9 +658,9 @@ picocolors "^1.0.0" "@babel/compat-data@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5" - integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.4.tgz#7d2a80ce229890edcf4cc259d4d696cb4dae2fcb" + integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ== "@babel/core@^7.23.9": version "7.25.2" @@ -681,12 +683,12 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e" - integrity sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== +"@babel/generator@^7.25.0", "@babel/generator@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.6.tgz#0df1ad8cb32fe4d2b01d8bf437f153d19342a87c" + integrity sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw== dependencies: - "@babel/types" "^7.25.0" + "@babel/types" "^7.25.6" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" @@ -744,12 +746,12 @@ integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== "@babel/helpers@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a" - integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.6.tgz#57ee60141829ba2e102f30711ffe3afab357cc60" + integrity sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q== dependencies: "@babel/template" "^7.25.0" - "@babel/types" "^7.25.0" + "@babel/types" "^7.25.6" "@babel/highlight@^7.24.7": version "7.24.7" @@ -761,12 +763,12 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.23.9", "@babel/parser@^7.25.0", "@babel/parser@^7.25.3": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.3.tgz#91fb126768d944966263f0657ab222a642b82065" - integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw== +"@babel/parser@^7.23.9", "@babel/parser@^7.25.0", "@babel/parser@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" + integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== dependencies: - "@babel/types" "^7.25.2" + "@babel/types" "^7.25.6" "@babel/template@^7.25.0": version "7.25.0" @@ -778,22 +780,22 @@ "@babel/types" "^7.25.0" "@babel/traverse@^7.24.7", "@babel/traverse@^7.25.2": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490" - integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.6.tgz#04fad980e444f182ecf1520504941940a90fea41" + integrity sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ== dependencies: "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.25.0" - "@babel/parser" "^7.25.3" + "@babel/generator" "^7.25.6" + "@babel/parser" "^7.25.6" "@babel/template" "^7.25.0" - "@babel/types" "^7.25.2" + "@babel/types" "^7.25.6" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.24.7", "@babel/types@^7.25.0", "@babel/types@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125" - integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q== +"@babel/types@^7.24.7", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" + integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== dependencies: "@babel/helper-string-parser" "^7.24.8" "@babel/helper-validator-identifier" "^7.24.7" @@ -984,9 +986,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.11.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" - integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== + version "4.11.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f" + integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== "@eslint/eslintrc@^2.1.4": version "2.1.4" @@ -1003,17 +1005,17 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== dependencies: - "@humanwhocodes/object-schema" "^2.0.2" + "@humanwhocodes/object-schema" "^2.0.3" debug "^4.3.1" minimatch "^3.0.5" @@ -1022,31 +1024,30 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.2": +"@humanwhocodes/object-schema@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== -"@inquirer/confirm@^3.1.22": - version "3.1.22" - resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-3.1.22.tgz#23990624c11f60c6f7a5b0558c7505c35076a037" - integrity sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg== +"@inquirer/confirm@^3.1.22", "@inquirer/confirm@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-3.2.0.tgz#6af1284670ea7c7d95e3f1253684cfbd7228ad6a" + integrity sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw== dependencies: - "@inquirer/core" "^9.0.10" - "@inquirer/type" "^1.5.2" + "@inquirer/core" "^9.1.0" + "@inquirer/type" "^1.5.3" -"@inquirer/core@^9.0.10": - version "9.0.10" - resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-9.0.10.tgz#4270191e2ad3bea6223530a093dd9479bcbc7dd0" - integrity sha512-TdESOKSVwf6+YWDz8GhS6nKscwzkIyakEzCLJ5Vh6O3Co2ClhCJ0A4MG909MUWfaWdpJm7DE45ii51/2Kat9tA== +"@inquirer/core@^9.1.0": + version "9.2.1" + resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-9.2.1.tgz#677c49dee399c9063f31e0c93f0f37bddc67add1" + integrity sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg== dependencies: - "@inquirer/figures" "^1.0.5" - "@inquirer/type" "^1.5.2" + "@inquirer/figures" "^1.0.6" + "@inquirer/type" "^2.0.0" "@types/mute-stream" "^0.0.4" - "@types/node" "^22.1.0" + "@types/node" "^22.5.5" "@types/wrap-ansi" "^3.0.0" ansi-escapes "^4.3.2" - cli-spinners "^2.9.2" cli-width "^4.1.0" mute-stream "^1.0.0" signal-exit "^4.1.0" @@ -1054,43 +1055,50 @@ wrap-ansi "^6.2.0" yoctocolors-cjs "^2.1.2" -"@inquirer/figures@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.5.tgz#57f9a996d64d3e3345d2a3ca04d36912e94f8790" - integrity sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA== +"@inquirer/figures@^1.0.5", "@inquirer/figures@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.6.tgz#1a562f916da39888c56b65b78259d2261bd7d40b" + integrity sha512-yfZzps3Cso2UbM7WlxKwZQh2Hs6plrbjs1QnzQDZhK2DgyCo6D8AaHps9olkNcUFlcYERMqU3uJSp1gmy3s/qQ== "@inquirer/input@^2.2.4": - version "2.2.9" - resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-2.2.9.tgz#08fdf9a48e4f6fc64c2d508b9d10afac843f9bd8" - integrity sha512-7Z6N+uzkWM7+xsE+3rJdhdG/+mQgejOVqspoW+w0AbSZnL6nq5tGMEVASaYVWbkoSzecABWwmludO2evU3d31g== + version "2.3.0" + resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-2.3.0.tgz#9b99022f53780fecc842908f3f319b52a5a16865" + integrity sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw== dependencies: - "@inquirer/core" "^9.0.10" - "@inquirer/type" "^1.5.2" + "@inquirer/core" "^9.1.0" + "@inquirer/type" "^1.5.3" -"@inquirer/password@^2.1.22": - version "2.1.22" - resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-2.1.22.tgz#ec7ee5709923cf285b3e0ae53eed4fdc3c05b422" - integrity sha512-5Fxt1L9vh3rAKqjYwqsjU4DZsEvY/2Gll+QkqR4yEpy6wvzLxdSgFhUcxfDAOtO4BEoTreWoznC0phagwLU5Kw== +"@inquirer/password@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-2.2.0.tgz#0b6f26336c259c8a9e5f5a3f2e1a761564f764ba" + integrity sha512-5otqIpgsPYIshqhgtEwSspBQE40etouR8VIxzpJkv9i0dVHIpyhiivbkH9/dGiMLdyamT54YRdGJLfl8TFnLHg== dependencies: - "@inquirer/core" "^9.0.10" - "@inquirer/type" "^1.5.2" + "@inquirer/core" "^9.1.0" + "@inquirer/type" "^1.5.3" ansi-escapes "^4.3.2" "@inquirer/select@^2.3.10": - version "2.4.7" - resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-2.4.7.tgz#6a23742b4f76d228186dfd42571d973def378ffa" - integrity sha512-JH7XqPEkBpNWp3gPCqWqY8ECbyMoFcCZANlL6pV9hf59qK6dGmkOlx1ydyhY+KZ0c5X74+W6Mtp+nm2QX0/MAQ== + version "2.5.0" + resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-2.5.0.tgz#345c6908ecfaeef3d84ddd2f9feb2f487c558efb" + integrity sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA== dependencies: - "@inquirer/core" "^9.0.10" + "@inquirer/core" "^9.1.0" "@inquirer/figures" "^1.0.5" - "@inquirer/type" "^1.5.2" + "@inquirer/type" "^1.5.3" ansi-escapes "^4.3.2" yoctocolors-cjs "^2.1.2" -"@inquirer/type@^1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-1.5.2.tgz#15f5e4a4dae02c4203650cb07c8a000cdd423939" - integrity sha512-w9qFkumYDCNyDZmNQjf/n6qQuvQ4dMC3BJesY4oF+yr0CxR5vxujflAVeIcS6U336uzi9GM0kAfZlLrZ9UTkpA== +"@inquirer/type@^1.5.3": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-1.5.5.tgz#303ea04ce7ad2e585b921b662b3be36ef7b4f09b" + integrity sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA== + dependencies: + mute-stream "^1.0.0" + +"@inquirer/type@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-2.0.0.tgz#08fa513dca2cb6264fe1b0a2fabade051444e3f6" + integrity sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag== dependencies: mute-stream "^1.0.0" @@ -1162,7 +1170,7 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@jsforce/jsforce-node@^3.4.0": +"@jsforce/jsforce-node@^3.4.1": version "3.4.1" resolved "https://registry.yarnpkg.com/@jsforce/jsforce-node/-/jsforce-node-3.4.1.tgz#36f5cba775b395eeedba676a78eafe447c3f4b28" integrity sha512-PsBKfglH0/8W/Srr4LsxEFsVmjmZjEj/T4XLGpbBoK8yVObwbiMk4VqwA6XwiA6SHqnEqqQbHZxk2rr7dZC+4A== @@ -1201,16 +1209,16 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@oclif/core@^4", "@oclif/core@^4.0.15": - version "4.0.17" - resolved "https://registry.yarnpkg.com/@oclif/core/-/core-4.0.17.tgz#2c934dd2b3789fe5e6cc9e2558a08007ba18cb03" - integrity sha512-zfdSRip9DVMOklMojWCLZEB4iOzy7LDTABCDzCXqmpZGS+o1e1xts4jGhnte3mi0WV0YthNfYqF16tqk6CWITA== +"@oclif/core@^4", "@oclif/core@^4.0.19": + version "4.0.22" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-4.0.22.tgz#acb233c0c18ff4f365caca15e29e2807a4325709" + integrity sha512-aXM2O4g7f+kPNzhhOfqGOVRVYDxTVrH7Y720MuH0Twq5WHMxI4XwntnyBaRscoCPG6FWhItZLtiZxsvaUdupGg== dependencies: ansi-escapes "^4.3.2" ansis "^3.3.2" clean-stack "^3.0.1" cli-spinners "^2.9.2" - debug "^4.3.5" + debug "^4.3.7" ejs "^3.1.10" get-package-type "^0.1.0" globby "^11.1.0" @@ -1225,9 +1233,9 @@ wrap-ansi "^7.0.0" "@oclif/plugin-command-snapshot@^5.2.12": - version "5.2.12" - resolved "https://registry.yarnpkg.com/@oclif/plugin-command-snapshot/-/plugin-command-snapshot-5.2.12.tgz#f22aaac03ad1e4fbb62c9beb5c44c99522d29e8b" - integrity sha512-X+UvjS5yNQSrL4f8DDCg93+P0ZyG8pJ6g5R8nA8DjkC22AaKhHMh0BwGdPT6zmTajaIxClrfk1K/sAF4+bwMug== + version "5.2.15" + resolved "https://registry.yarnpkg.com/@oclif/plugin-command-snapshot/-/plugin-command-snapshot-5.2.15.tgz#039e2457638d0d630a6006d67de329add6519f5f" + integrity sha512-nRyleFoNgyy8vLGlzE1ryjmlKA8E53NFqbgHl245Qgw9LbrC7czINnnyI2rkJLxxO0puGnJ5+qlz7bLDCwbSiw== dependencies: "@oclif/core" "^4" ansis "^3.3.2" @@ -1239,62 +1247,89 @@ semver "^7.6.3" ts-json-schema-generator "^1.5.1" -"@oclif/plugin-help@^6.2.7": - version "6.2.8" - resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-6.2.8.tgz#cbaea5ef886d76e75dbab6e77e34012889e924b5" - integrity sha512-QRpFYlBeJffl4cXGBi8e+EfGogDmU7y8do1ZHxmPKZ5eZ0mfeKiqq2WA9dwRMZJriy1qSaGsbkOYgYQWlOYhSg== +"@oclif/plugin-help@^6.2.10": + version "6.2.11" + resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-6.2.11.tgz#4477cf02778c6051b91cf21add5593fea9c8418c" + integrity sha512-Vo854dALtNhA34g6m4T9uWIrYfm/JFM82LWa5gLrsJGwpUGgeBwBX4P64HLo5ro59LF3YO2xPWViLaoK6gkm3g== dependencies: "@oclif/core" "^4" -"@oclif/plugin-not-found@^3.2.15": - version "3.2.16" - resolved "https://registry.yarnpkg.com/@oclif/plugin-not-found/-/plugin-not-found-3.2.16.tgz#e81c3ec965802d07b80dade118cbec86ec5082dd" - integrity sha512-9yGR1lAg4ItSwRb4WhZ41X+6tO55SJjDYnu+EXW9gPCPj64z5qRIBU1ZWUZGtxJpHNB0vUh9nDLTsQAJOw/lnw== +"@oclif/plugin-not-found@^3.2.21": + version "3.2.21" + resolved "https://registry.yarnpkg.com/@oclif/plugin-not-found/-/plugin-not-found-3.2.21.tgz#a1ef31a0e00fee1bde84d7aea118a269b80f2978" + integrity sha512-1v5MkECOH+mkubpk5RgyVK1qEHn3hr2wX1qsx5hawTyssd10WEFIkH258M9CjyiG42M6ZCQhOS3Wo2wteLo/vg== dependencies: - "@inquirer/confirm" "^3.1.22" + "@inquirer/confirm" "^3.2.0" "@oclif/core" "^4" ansis "^3.3.1" fast-levenshtein "^3.0.0" -"@oclif/plugin-warn-if-update-available@^3.0.19": - version "3.1.11" - resolved "https://registry.yarnpkg.com/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-3.1.11.tgz#e0d7622e72998a37796b598d3e97921d0acbe516" - integrity sha512-Pv4EFxhpzspq0n2v0cdfqRwIMwYyd3YOIKny/1Ao71D0pKlpxJ63c9OFDNJAJcUjFOUHzODTtXXNwimOpzfbYg== +"@oclif/plugin-warn-if-update-available@^3.1.11": + version "3.1.16" + resolved "https://registry.yarnpkg.com/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-3.1.16.tgz#cc51b757fe3d0be075e948455bf190a802fce0dd" + integrity sha512-QGQF1kL+aUj/cTtXdV0GT1n7HNf3HX1ZnCwL86Y9rlZgQbBU9gl8/01/6P/uPj0E+WWExZMVF6+fmktTqwYVQw== dependencies: "@oclif/core" "^4" ansis "^3.3.1" debug "^4.3.5" http-call "^5.2.2" lodash "^4.17.21" + registry-auth-token "^5.0.2" "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@pnpm/config.env-replace@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" + integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== + +"@pnpm/network.ca-file@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" + integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== + dependencies: + graceful-fs "4.2.10" + +"@pnpm/npm-conf@^2.1.0": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz#bb375a571a0bd63ab0a23bece33033c683e9b6b0" + integrity sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw== + dependencies: + "@pnpm/config.env-replace" "^1.1.0" + "@pnpm/network.ca-file" "^1.0.1" + config-chain "^1.1.11" + +"@rtsao/scc@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" + integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== + "@salesforce/cli-plugins-testkit@^5.3.25": - version "5.3.25" - resolved "https://registry.yarnpkg.com/@salesforce/cli-plugins-testkit/-/cli-plugins-testkit-5.3.25.tgz#a3e081d1e8bce8660d602fdf04851986c89f18a1" - integrity sha512-wwFnd7EuEVxc7IRCvOtJO65iEbjYWrIHUdkxf7bZkgrS9ZfjFNDyua/XthT+gWpVfIZiHxEjqYBdHzMNWZQkbg== + version "5.3.32" + resolved "https://registry.yarnpkg.com/@salesforce/cli-plugins-testkit/-/cli-plugins-testkit-5.3.32.tgz#30018a25d68b21ad2cb4b91c82be1bcf9690629b" + integrity sha512-eXi0n4Ae7igTS4PAvuK19I5utA9p1uQlojNFlvQl0Oiqidy9Rl5i5GWekIAmNrn/hX0gbftwAh4PezB/W5hZ3Q== dependencies: - "@salesforce/core" "^8.3.0" - "@salesforce/kit" "^3.2.1" + "@salesforce/core" "^8.5.7" + "@salesforce/kit" "^3.2.3" "@salesforce/ts-types" "^2.0.11" "@types/shelljs" "^0.8.15" - debug "^4.3.6" + debug "^4.3.7" jszip "^3.10.1" shelljs "^0.8.4" sinon "^17.0.2" strip-ansi "6.0.1" ts-retry-promise "^0.8.1" -"@salesforce/core@^8.2.7", "@salesforce/core@^8.3.0", "@salesforce/core@^8.4.0": - version "8.4.0" - resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.4.0.tgz#d2ddfe07994c42b1e917e581e9cf47ad27b97a93" - integrity sha512-P+n0+Sp+v6voLTShW2E5sdF7gCUxEXJjNcc9Jtto0ZMyQesmQJ6WGpWmAuRoi+BVYc8OPSlEffndaYDAo/u73g== +"@salesforce/core@^8.4.0", "@salesforce/core@^8.5.1", "@salesforce/core@^8.5.4", "@salesforce/core@^8.5.7": + version "8.5.7" + resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.5.7.tgz#18c98ba383f7030f7e5420677bbd108d1d93dcc3" + integrity sha512-HY2ztRT2QACgWrbze+v+B6L4q+RT9FdswXhVQRssf8ZeJH/kqFnF4U640i+dAFChs9mGGCS2zmm6BTREiwg2LA== dependencies: - "@jsforce/jsforce-node" "^3.4.0" - "@salesforce/kit" "^3.1.6" + "@jsforce/jsforce-node" "^3.4.1" + "@salesforce/kit" "^3.2.2" "@salesforce/schemas" "^1.9.0" "@salesforce/ts-types" "^2.0.10" ajv "^8.17.1" @@ -1305,7 +1340,7 @@ js2xmlparser "^4.0.1" jsonwebtoken "9.0.2" jszip "3.10.1" - pino "^9.3.2" + pino "^9.4.0" pino-abstract-transport "^1.2.0" pino-pretty "^11.2.2" proper-lockfile "^4.1.2" @@ -1318,9 +1353,9 @@ integrity sha512-rO6axodoRF2SA1kknGttIWuL7HhIwSmweGlBzM8y2m5TH8DeIv4xsqYc8Cu+SrR3JT1FN4nh6XgrogI83AJfKg== "@salesforce/dev-scripts@^10.2.9": - version "10.2.9" - resolved "https://registry.yarnpkg.com/@salesforce/dev-scripts/-/dev-scripts-10.2.9.tgz#c107c177de6c8b282d5eee95e1c04e71f80650b6" - integrity sha512-kjICKRzDmkyfB78D+mAoOxdKChv5NAAQMzGYqGIPxNHTG2f9J0/sfjEJsWt+4gZAnAD8unS0MsPoKQqi2BDMNg== + version "10.2.10" + resolved "https://registry.yarnpkg.com/@salesforce/dev-scripts/-/dev-scripts-10.2.10.tgz#6aca3c6a0926b5ed0710d1f21a940687ff994e58" + integrity sha512-4vYRV5PvssKWfsnOOAXDvYfHaj2M3bCprlGcZBGnPAi52cNzoj9GcOmC1RRrPdQmHL4vWZvSiqgRgVLKQQdfkw== dependencies: "@commitlint/cli" "^17.1.2" "@commitlint/config-conventional" "^17.8.1" @@ -1349,25 +1384,25 @@ typescript "^5.5.4" wireit "^0.14.5" -"@salesforce/kit@^3.1.6", "@salesforce/kit@^3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@salesforce/kit/-/kit-3.2.1.tgz#3de2c9ff52710a169fc887716d97c00d26065c56" - integrity sha512-LrZH2F06XPLUTMXC3av6A0VDAJykUqRtYB6tTjAKzwS1gCnp6BEn6VyjZNg0Fg/Kfp6OTrMxiIgbUFsNehEV7A== +"@salesforce/kit@^3.2.1", "@salesforce/kit@^3.2.2", "@salesforce/kit@^3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@salesforce/kit/-/kit-3.2.3.tgz#a7293c384ef6133191fe3590e604e3896fdecf4a" + integrity sha512-X8rZouLt06dxRkn+uYTwywWDS/NqZ783AyomGqgtWdUxF61EOJvu0ehtcYeutx9Ng08uuZ+s6wNvWiDsdhUcPg== dependencies: "@salesforce/ts-types" "^2.0.12" "@salesforce/plugin-command-reference@^3.1.16": - version "3.1.16" - resolved "https://registry.yarnpkg.com/@salesforce/plugin-command-reference/-/plugin-command-reference-3.1.16.tgz#ce3fee0854ba92a164527fe0a7fca234e672c7a3" - integrity sha512-DLwMH0BWgOImA8nM6vGIQFG3LV81MRq6AEvLzIHZ2O4ABgqTHS6aV55ENUnDNKO66mcKjy/lWFftMRp1WdOHJw== + version "3.1.26" + resolved "https://registry.yarnpkg.com/@salesforce/plugin-command-reference/-/plugin-command-reference-3.1.26.tgz#eabf0fb7eca24a94554233157abeed2697e21f6d" + integrity sha512-pKDangm2kXKasyIEU7SSTIQCDz/9qf14L0CbZFrQDWCaHQd5hSl15G/IYqM3FU08Yk6AkR6O2zcpqsRsB9GoIw== dependencies: "@oclif/core" "^4" - "@salesforce/core" "^8.3.0" - "@salesforce/kit" "^3.2.1" - "@salesforce/sf-plugins-core" "^11.3.0" + "@salesforce/core" "^8.5.7" + "@salesforce/kit" "^3.2.3" + "@salesforce/sf-plugins-core" "^11.3.5" "@salesforce/ts-types" "^2.0.11" chalk "^5.3.0" - debug "^4.3.6" + debug "^4.3.7" handlebars "^4.7.8" "@salesforce/prettier-config@^0.0.3": @@ -1380,16 +1415,16 @@ resolved "https://registry.yarnpkg.com/@salesforce/schemas/-/schemas-1.9.0.tgz#ba477a112653a20b4edcf989c61c57bdff9aa3ca" integrity sha512-LiN37zG5ODT6z70sL1fxF7BQwtCX9JOWofSU8iliSNIM+WDEeinnoFtVqPInRSNt8I0RiJxIKCrqstsmQRBNvA== -"@salesforce/sf-plugins-core@^11.3.0", "@salesforce/sf-plugins-core@^11.3.2": - version "11.3.2" - resolved "https://registry.yarnpkg.com/@salesforce/sf-plugins-core/-/sf-plugins-core-11.3.2.tgz#8a4ffde0bbef88fe4d669844a119e8f436d6b0ab" - integrity sha512-QyFX/PBzw/hkBUJFl1HH+g7ghRSIwWy9Y0NZgCQgWQQJtV6Sfi4fyeaUafsiOjVnyCqa+r+tWHV/JgRr2yK9NA== +"@salesforce/sf-plugins-core@^11.3.2", "@salesforce/sf-plugins-core@^11.3.5": + version "11.3.10" + resolved "https://registry.yarnpkg.com/@salesforce/sf-plugins-core/-/sf-plugins-core-11.3.10.tgz#22dcb645e24110a5a50a5ee2602c62d855e85de6" + integrity sha512-Gvj6OM57cs1R/M/U8tWCo0srTyLNAsSOVtRWie8nz6x/qp6212ewkVgwwHBmP8XJsfuzjNvbzGcCjrCgwBzmCQ== dependencies: "@inquirer/confirm" "^3.1.22" - "@inquirer/password" "^2.1.22" - "@oclif/core" "^4.0.15" - "@salesforce/core" "^8.2.7" - "@salesforce/kit" "^3.2.1" + "@inquirer/password" "^2.2.0" + "@oclif/core" "^4.0.19" + "@salesforce/core" "^8.5.1" + "@salesforce/kit" "^3.2.2" "@salesforce/ts-types" "^2.0.12" ansis "^3.3.2" cli-progress "^3.12.0" @@ -1403,13 +1438,48 @@ resolved "https://registry.yarnpkg.com/@salesforce/ts-types/-/ts-types-2.0.12.tgz#60420622812a7ec7e46d220667bc29b42dc247ff" integrity sha512-BIJyduJC18Kc8z+arUm5AZ9VkPRyw1KKAm+Tk+9LT99eOzhNilyfKzhZ4t+tG2lIGgnJpmytZfVDZ0e2kFul8g== -"@shikijs/core@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@shikijs/core/-/core-1.12.1.tgz#32626494bef573cce01f9e0a36d5776cbc1b2e58" - integrity sha512-biCz/mnkMktImI6hMfMX3H9kOeqsInxWEyCHbSlL8C/2TR1FqfmGxTLRNwYCKsyCyxWLbB8rEqXRVZuyxuLFmA== +"@shikijs/core@1.18.0": + version "1.18.0" + resolved "https://registry.yarnpkg.com/@shikijs/core/-/core-1.18.0.tgz#30dde8e53026dada606c4cf7f32d80a3f33d437c" + integrity sha512-VK4BNVCd2leY62Nm2JjyxtRLkyrZT/tv104O81eyaCjHq4Adceq2uJVFJJAIof6lT1mBwZrEo2qT/T+grv3MQQ== + dependencies: + "@shikijs/engine-javascript" "1.18.0" + "@shikijs/engine-oniguruma" "1.18.0" + "@shikijs/types" "1.18.0" + "@shikijs/vscode-textmate" "^9.2.2" + "@types/hast" "^3.0.4" + hast-util-to-html "^9.0.3" + +"@shikijs/engine-javascript@1.18.0": + version "1.18.0" + resolved "https://registry.yarnpkg.com/@shikijs/engine-javascript/-/engine-javascript-1.18.0.tgz#9888011c5d869a687b42e3e56c7243f15a73524b" + integrity sha512-qoP/aO/ATNwYAUw1YMdaip/YVEstMZEgrwhePm83Ll9OeQPuxDZd48szZR8oSQNQBT8m8UlWxZv8EA3lFuyI5A== dependencies: + "@shikijs/types" "1.18.0" + "@shikijs/vscode-textmate" "^9.2.2" + oniguruma-to-js "0.4.3" + +"@shikijs/engine-oniguruma@1.18.0": + version "1.18.0" + resolved "https://registry.yarnpkg.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.18.0.tgz#7e57fd19b62b18cf2de382da684d042ee934f65d" + integrity sha512-B9u0ZKI/cud+TcmF8Chyh+R4V5qQVvyDOqXC2l2a4x73PBSBc6sZ0JRAX3eqyJswqir6ktwApUUGBYePdKnMJg== + dependencies: + "@shikijs/types" "1.18.0" + "@shikijs/vscode-textmate" "^9.2.2" + +"@shikijs/types@1.18.0": + version "1.18.0" + resolved "https://registry.yarnpkg.com/@shikijs/types/-/types-1.18.0.tgz#4c2d62d17f78cbfc051a15480ab4dfb0f06196c9" + integrity sha512-O9N36UEaGGrxv1yUrN2nye7gDLG5Uq0/c1LyfmxsvzNPqlHzWo9DI0A4+fhW2y3bGKuQu/fwS7EPdKJJCowcVA== + dependencies: + "@shikijs/vscode-textmate" "^9.2.2" "@types/hast" "^3.0.4" +"@shikijs/vscode-textmate@^9.2.2": + version "9.2.2" + resolved "https://registry.yarnpkg.com/@shikijs/vscode-textmate/-/vscode-textmate-9.2.2.tgz#24571f50625c7cd075f9efe0def8b9d2c0930ada" + integrity sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg== + "@sindresorhus/is@^4": version "4.6.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" @@ -1432,13 +1502,6 @@ dependencies: type-detect "4.0.8" -"@sinonjs/commons@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" - integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== - dependencies: - type-detect "4.0.8" - "@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" @@ -1447,11 +1510,11 @@ type-detect "4.0.8" "@sinonjs/fake-timers@^11.2.2": - version "11.2.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699" - integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw== + version "11.3.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.3.1.tgz#51d6e8d83ca261ff02c0ab0e68e9db23d5cd5999" + integrity sha512-EVJO7nW5M/F5Tur0Rf2z/QoMo+1Ia963RiMtapiQrEWvY0iBUvADo8Beegwjpnle5BHkyHuoxSTW3jF43H1XRA== dependencies: - "@sinonjs/commons" "^3.0.0" + "@sinonjs/commons" "^3.0.1" "@sinonjs/fake-timers@^6.0.0", "@sinonjs/fake-timers@^6.0.1": version "6.0.1" @@ -1470,25 +1533,25 @@ type-detect "^4.0.8" "@sinonjs/samsam@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.0.tgz#0d488c91efb3fa1442e26abea81759dfc8b5ac60" - integrity sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew== + version "8.0.2" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.2.tgz#e4386bf668ff36c95949e55a38dc5f5892fc2689" + integrity sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw== dependencies: - "@sinonjs/commons" "^2.0.0" + "@sinonjs/commons" "^3.0.1" lodash.get "^4.4.2" - type-detect "^4.0.8" + type-detect "^4.1.0" "@sinonjs/text-encoding@^0.7.1", "@sinonjs/text-encoding@^0.7.2": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" - integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== + version "0.7.3" + resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz#282046f03e886e352b2d5f5da5eb755e01457f3f" + integrity sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA== -"@smithy/abort-controller@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.1.tgz#291210611ff6afecfc198d0ca72d5771d8461d16" - integrity sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ== +"@smithy/abort-controller@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.4.tgz#7cb22871f7392319c565d1d9ab3cb04e635c4dd9" + integrity sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/chunked-blob-reader-native@^3.0.0": @@ -1506,133 +1569,135 @@ dependencies: tslib "^2.6.2" -"@smithy/config-resolver@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.5.tgz#727978bba7ace754c741c259486a19d3083431fd" - integrity sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA== +"@smithy/config-resolver@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.8.tgz#8717ea934f1d72474a709fc3535d7b8a11de2e33" + integrity sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.6" tslib "^2.6.2" -"@smithy/core@^2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.3.2.tgz#4a1e3da41d2a3a494cbc6bd1fc6eeb26b2e27184" - integrity sha512-in5wwt6chDBcUv1Lw1+QzZxN9fBffi+qOixfb65yK4sDuKG7zAUO9HAFqmVzsZM3N+3tTyvZjtnDXePpvp007Q== - dependencies: - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" +"@smithy/core@^2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.4.3.tgz#18344c2ff63f748f625ebc5171755816f3043849" + integrity sha512-4LTusLqFMRVQUfC3RNuTg6IzYTeJNpydRdTKq7J5wdEyIRQSu3rGIa3s80mgG2hhe6WOZl9IqTSo1pgbn6EHhA== + dependencies: + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-retry" "^3.0.18" + "@smithy/middleware-serde" "^3.0.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/credential-provider-imds@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz#0e0e7ddaff1a8633cb927aee1056c0ab506b7ecf" - integrity sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA== +"@smithy/credential-provider-imds@^3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz#93314e58e4f81f2b641de6efac037c7a3250c050" + integrity sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/property-provider" "^3.1.6" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" tslib "^2.6.2" -"@smithy/eventstream-codec@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz#4a1c72b34400631b829241151984a1ad8c4f963c" - integrity sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw== +"@smithy/eventstream-codec@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.5.tgz#2b0d65818425d60e043b8e9d8dee9c6744de0e7b" + integrity sha512-6pu+PT2r+5ZnWEV3vLV1DzyrpJ0TmehQlniIDCSpZg6+Ji2SfOI38EqUyQ+O8lotVElCrfVc9chKtSMe9cmCZQ== dependencies: "@aws-crypto/crc32" "5.2.0" - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-hex-encoding" "^3.0.0" tslib "^2.6.2" -"@smithy/eventstream-serde-browser@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.6.tgz#a4ab4f7cfbd137bcaa54c375276f9214e568fd8f" - integrity sha512-2hM54UWQUOrki4BtsUI1WzmD13/SeaqT/AB3EUJKbcver/WgKNaiJ5y5F5XXuVe6UekffVzuUDrBZVAA3AWRpQ== +"@smithy/eventstream-serde-browser@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.9.tgz#bb71b836a8755dd5d5fed85ac2fa500702f60544" + integrity sha512-PiQLo6OQmZAotJweIcObL1H44gkvuJACKMNqpBBe5Rf2Ax1DOcGi/28+feZI7yTe1ERHlQQaGnm8sSkyDUgsMg== dependencies: - "@smithy/eventstream-serde-universal" "^3.0.5" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-serde-universal" "^3.0.8" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/eventstream-serde-config-resolver@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz#f852e096d0ad112363b4685e1d441088d1fce67a" - integrity sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ== +"@smithy/eventstream-serde-config-resolver@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.6.tgz#538862ef05e549c0ef97b060100a5ffbb5d7adfb" + integrity sha512-iew15It+c7WfnVowWkt2a7cdPp533LFJnpjDQgfZQcxv2QiOcyEcea31mnrk5PVbgo0nNH3VbYGq7myw2q/F6A== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/eventstream-serde-node@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.5.tgz#2bbf5c9312a28f23bc55ae284efa9499f8b8f982" - integrity sha512-+upXvnHNyZP095s11jF5dhGw/Ihzqwl5G+/KtMnoQOpdfC3B5HYCcDVG9EmgkhJMXJlM64PyN5gjJl0uXFQehQ== +"@smithy/eventstream-serde-node@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.8.tgz#0221c555f2851fd847b041f27a6231945822018f" + integrity sha512-6m+wI+fT0na+6oao6UqALVA38fsScCpoG5UO/A8ZSyGLnPM2i4MS1cFUhpuALgvLMxfYoTCh7qSeJa0aG4IWpQ== dependencies: - "@smithy/eventstream-serde-universal" "^3.0.5" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-serde-universal" "^3.0.8" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/eventstream-serde-universal@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.5.tgz#e1cc2f71f4d174a03e00ce4b563395a81dd17bec" - integrity sha512-5u/nXbyoh1s4QxrvNre9V6vfyoLWuiVvvd5TlZjGThIikc3G+uNiG9uOTCWweSRjv1asdDIWK7nOmN7le4RYHQ== +"@smithy/eventstream-serde-universal@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.8.tgz#0dac5365e3bb349960999b10a4a3c66b77b79dc3" + integrity sha512-09tqzIQ6e+7jLqGvRji1yJoDbL/zob0OFhq75edgStWErGLf16+yI5hRc/o9/YAybOhUZs/swpW2SPn892G5Gg== dependencies: - "@smithy/eventstream-codec" "^3.1.2" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-codec" "^3.1.5" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/fetch-http-handler@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz#c754de7e0ff2541b73ac9ba7cc955940114b3d62" - integrity sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg== +"@smithy/fetch-http-handler@^3.2.7": + version "3.2.7" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.7.tgz#30520ca939fb817d3eb3ab9445ddc0f6c1df2960" + integrity sha512-Ra6IPI1spYLO+t62/3jQbodjOwAbto9wlpJdHZwkycm0Kit+GVpzHW/NMmSgY4rK1bjJ4qLAmCnaBzePO5Nkkg== dependencies: - "@smithy/protocol-http" "^4.1.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/querystring-builder" "^3.0.6" + "@smithy/types" "^3.4.2" "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-blob-browser@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz#90281c1f183d93686fb4f26107f1819644d68829" - integrity sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg== +"@smithy/hash-blob-browser@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.5.tgz#db1cf756647f8f39b4214403482750afbb8f2236" + integrity sha512-Vi3eoNCmao4iKglS80ktYnBOIqZhjbDDwa1IIbF/VaJ8PsHnZTQ5wSicicPrU7nTI4JPFn92/txzWkh4GlK18Q== dependencies: "@smithy/chunked-blob-reader" "^3.0.0" "@smithy/chunked-blob-reader-native" "^3.0.0" - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/hash-node@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.3.tgz#82c5cb7b0f1a29ee7319081853d2d158c07dff24" - integrity sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw== +"@smithy/hash-node@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.6.tgz#7c1a869afcbd411eac04c4777dd193ea7ac4e588" + integrity sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-stream-node@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz#89f0290ae44b113863878e75b10c484ff48af71c" - integrity sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g== +"@smithy/hash-stream-node@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.5.tgz#4c8d290f6e4d55fdb143d65d645031da12af7fc1" + integrity sha512-61CyFCzqN3VBfcnGX7mof/rkzLb8oHjm4Lr6ZwBIRpBssBb8d09ChrZAqinP2rUrA915BRNkq9NpJz18N7+3hQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/invalid-dependency@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz#8d9fd70e3a94b565a4eba4ffbdc95238e1930528" - integrity sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw== +"@smithy/invalid-dependency@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.6.tgz#3b3e30a55b92341412626b412fe919929871eeb1" + integrity sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/is-array-buffer@^2.2.0": @@ -1649,177 +1714,177 @@ dependencies: tslib "^2.6.2" -"@smithy/md5-js@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.3.tgz#55ee40aa24075b096c39f7910590c18ff7660c98" - integrity sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q== +"@smithy/md5-js@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.6.tgz#cb8881ffef4ffbf68b0daf52d8add30dc57e3a7a" + integrity sha512-Ze690T8O3M5SVbb70WormwrKzVf9QQRtIuxtJDgpUQDkmt+PtdYDetBbyCbF9ryupxLw6tgzWKgwffAShhVIXQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/middleware-content-length@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz#1680aa4fb2a1c0505756103c9a5c2916307d9035" - integrity sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw== +"@smithy/middleware-content-length@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.8.tgz#4e1c1631718e4d6dfe9a06f37faa90de92e884ed" + integrity sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og== dependencies: - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/middleware-endpoint@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz#9b8a496d87a68ec43f3f1a0139868d6765a88119" - integrity sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw== - dependencies: - "@smithy/middleware-serde" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-middleware" "^3.0.3" +"@smithy/middleware-endpoint@^3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.3.tgz#8c84d40c9d26b77e2bbb99721fd4a3d379828505" + integrity sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg== + dependencies: + "@smithy/middleware-serde" "^3.0.6" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" + "@smithy/url-parser" "^3.0.6" + "@smithy/util-middleware" "^3.0.6" tslib "^2.6.2" -"@smithy/middleware-retry@^3.0.14": - version "3.0.14" - resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.14.tgz#739e8bac6e465e0cda26446999db614418e79da3" - integrity sha512-7ZaWZJOjUxa5hgmuMspyt8v/zVsh0GXYuF7OvCmdcbVa/xbnKQoYC+uYKunAqRGTkxjOyuOCw9rmFUFOqqC0eQ== - dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/service-error-classification" "^3.0.3" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" +"@smithy/middleware-retry@^3.0.18": + version "3.0.18" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.18.tgz#58372e264ca0c3a35f0526c531eb433ed8472df0" + integrity sha512-YU1o/vYob6vlqZdd97MN8cSXRToknLXhFBL3r+c9CZcnxkO/rgNZ++CfgX2vsmnEKvlqdi26+SRtSzlVp5z6Mg== + dependencies: + "@smithy/node-config-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.3" + "@smithy/service-error-classification" "^3.0.6" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" + "@smithy/util-middleware" "^3.0.6" + "@smithy/util-retry" "^3.0.6" tslib "^2.6.2" uuid "^9.0.1" -"@smithy/middleware-serde@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz#74d974460f74d99f38c861e6862984543a880a66" - integrity sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA== +"@smithy/middleware-serde@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.6.tgz#9f7a9c152989b59c12865ef3a17acbdb7b6a1566" + integrity sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/middleware-stack@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz#91845c7e61e6f137fa912b623b6def719a4f6ce7" - integrity sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA== +"@smithy/middleware-stack@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.6.tgz#e63d09b3e292b7a46ac3b9eb482973701de15a6f" + integrity sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/node-config-provider@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz#05647bed666aa8036a1ad72323c1942e5d421be1" - integrity sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ== +"@smithy/node-config-provider@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz#6ae71aeff45e8c9792720986f0b1623cf6da671f" + integrity sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg== dependencies: - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/shared-ini-file-loader" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/node-http-handler@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz#be4195e45639e690d522cd5f11513ea822ff9d5f" - integrity sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg== +"@smithy/node-http-handler@^3.2.2": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.2.2.tgz#1e659d52ba4d27123efc7b8a5c1abe76f97ea915" + integrity sha512-42Cy4/oT2O+00aiG1iQ7Kd7rE6q8j7vI0gFfnMlUiATvyo8vefJkhb7O10qZY0jAqo5WZdUzfl9IV6wQ3iMBCg== dependencies: - "@smithy/abort-controller" "^3.1.1" - "@smithy/protocol-http" "^4.1.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/abort-controller" "^3.1.4" + "@smithy/protocol-http" "^4.1.3" + "@smithy/querystring-builder" "^3.0.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/property-provider@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.3.tgz#afd57ea82a3f6c79fbda95e3cb85c0ee0a79f39a" - integrity sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g== +"@smithy/property-provider@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.6.tgz#141a245ad8cac074d29a836ec992ef7dc3363bf7" + integrity sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/protocol-http@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.0.tgz#23519d8f45bf4f33960ea5415847bc2b620a010b" - integrity sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA== +"@smithy/protocol-http@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.3.tgz#91d894ec7d82c012c5674cb3e209800852f05abd" + integrity sha512-GcbMmOYpH9iRqtC05RbRnc/0FssxSTHlmaNhYBTgSgNCYpdR3Kt88u5GAZTBmouzv+Zlj/VRv92J9ruuDeJuEw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/querystring-builder@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz#6b0e566f885bb84938d077c69e8f8555f686af13" - integrity sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw== +"@smithy/querystring-builder@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.6.tgz#bcb718b860697dca5257ca38dc8041a4696c486f" + integrity sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" "@smithy/util-uri-escape" "^3.0.0" tslib "^2.6.2" -"@smithy/querystring-parser@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz#272a6b83f88dfcbbec8283d72a6bde850cc00091" - integrity sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ== +"@smithy/querystring-parser@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz#f30e7e244fa674d77bdfd3c65481c5dc0aa083ef" + integrity sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/service-error-classification@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz#73484255060a094aa9372f6cd972dcaf97e3ce80" - integrity sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ== +"@smithy/service-error-classification@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.6.tgz#e0ca00b79d9ccf00795284e01cfdc48b43b81d76" + integrity sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" -"@smithy/shared-ini-file-loader@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz#7dceaf5a5307a2ee347ace8aba17312a1a3ede15" - integrity sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ== +"@smithy/shared-ini-file-loader@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz#bdcf3f0213c3c5779c3fbb41580e9a217ad52e8f" + integrity sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/signature-v4@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.1.0.tgz#251ff43dc1f4ad66776122732fea9e56efc56443" - integrity sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag== +"@smithy/signature-v4@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.1.3.tgz#1a5adc19563b8cf8f28ae1ada4d6cda7d351943d" + integrity sha512-YD2KYSCEEeFHcWZ1E3mLdAaHl8T/TANh6XwmocQ6nPcTdBfh4N5fusgnblnWDlnlU1/cUqEq3PiGi22GmT2Lkg== dependencies: "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" "@smithy/util-hex-encoding" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.6" "@smithy/util-uri-escape" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/smithy-client@^3.1.12": - version "3.1.12" - resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.1.12.tgz#fb6386816ff8a5c50eab7503d4ee3ba2e4ebac63" - integrity sha512-wtm8JtsycthkHy1YA4zjIh2thJgIQ9vGkoR639DBx5lLlLNU0v4GARpQZkr2WjXue74nZ7MiTSWfVrLkyD8RkA== - dependencies: - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" +"@smithy/smithy-client@^3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.3.2.tgz#0c5511525f3e64ac5132d513c38d5d0d4a770719" + integrity sha512-RKDfhF2MTwXl7jan5d7QfS9eCC6XJbO3H+EZAvLQN8A5in4ib2Ml4zoeLo57w9QrqFekBPcsoC2hW3Ekw4vQ9Q== + dependencies: + "@smithy/middleware-endpoint" "^3.1.3" + "@smithy/middleware-stack" "^3.0.6" + "@smithy/protocol-http" "^4.1.3" + "@smithy/types" "^3.4.2" + "@smithy/util-stream" "^3.1.6" tslib "^2.6.2" -"@smithy/types@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.3.0.tgz#fae037c733d09bc758946a01a3de0ef6e210b16b" - integrity sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA== +"@smithy/types@^3.4.2": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.4.2.tgz#aa2d087922d57205dbad68df8a45c848699c551e" + integrity sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w== dependencies: tslib "^2.6.2" -"@smithy/url-parser@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.3.tgz#e8a060d9810b24b1870385fc2b02485b8a6c5955" - integrity sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A== +"@smithy/url-parser@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.6.tgz#98b426f9a492e0c992fcd5dceac35444c2632837" + integrity sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ== dependencies: - "@smithy/querystring-parser" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/querystring-parser" "^3.0.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/util-base64@^3.0.0": @@ -1868,37 +1933,37 @@ dependencies: tslib "^2.6.2" -"@smithy/util-defaults-mode-browser@^3.0.14": - version "3.0.14" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.14.tgz#21f3ebcb07b9d6ae1274b9d655c38bdac59e5c06" - integrity sha512-0iwTgKKmAIf+vFLV8fji21Jb2px11ktKVxbX6LIDPAUJyWQqGqBVfwba7xwa1f2FZUoolYQgLvxQEpJycXuQ5w== +"@smithy/util-defaults-mode-browser@^3.0.18": + version "3.0.18" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.18.tgz#c3904b71db96c9b99861fc2017fea503fcff12a4" + integrity sha512-/eveCzU6Z6Yw8dlYQLA4rcK30XY0E4L3lD3QFHm59mzDaWYelrXE1rlynuT3J6qxv+5yNy3a1JuzhG5hk5hcmw== dependencies: - "@smithy/property-provider" "^3.1.3" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" + "@smithy/property-provider" "^3.1.6" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" bowser "^2.11.0" tslib "^2.6.2" -"@smithy/util-defaults-mode-node@^3.0.14": - version "3.0.14" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.14.tgz#6bb9e837282e84bbf5093dbcd120fcd296593f7a" - integrity sha512-e9uQarJKfXApkTMMruIdxHprhcXivH1flYCe8JRDTzkkLx8dA3V5J8GZlST9yfDiRWkJpZJlUXGN9Rc9Ade3OQ== - dependencies: - "@smithy/config-resolver" "^3.0.5" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" +"@smithy/util-defaults-mode-node@^3.0.18": + version "3.0.18" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.18.tgz#6b46911f2f749bb048cdc287d7237be9d58f4a6b" + integrity sha512-9cfzRjArtOFPlTYRREJk00suUxVXTgbrzVncOyMRTUeMKnecG/YentLF3cORa+R6mUOMSrMSnT18jos1PKqK6Q== + dependencies: + "@smithy/config-resolver" "^3.0.8" + "@smithy/credential-provider-imds" "^3.2.3" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/property-provider" "^3.1.6" + "@smithy/smithy-client" "^3.3.2" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/util-endpoints@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz#e3a7a4d1c41250bfd2b2d890d591273a7d8934be" - integrity sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg== +"@smithy/util-endpoints@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.2.tgz#e1d789d598da9ab955b8cf3257ab2f263c35031a" + integrity sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.7" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@smithy/util-hex-encoding@^3.0.0": @@ -1908,31 +1973,31 @@ dependencies: tslib "^2.6.2" -"@smithy/util-middleware@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.3.tgz#07bf9602682f5a6c55bc2f0384303f85fc68c87e" - integrity sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw== +"@smithy/util-middleware@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.6.tgz#463c41e74d6e8d758f6cceba4dbed4dc5a4afe50" + integrity sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/util-retry@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.3.tgz#9b2ac0dbb1c81f69812a8affa4d772bebfc0e049" - integrity sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w== +"@smithy/util-retry@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.6.tgz#297de1cd5a836fb957ab2ad3439041e848815499" + integrity sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg== dependencies: - "@smithy/service-error-classification" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/service-error-classification" "^3.0.6" + "@smithy/types" "^3.4.2" tslib "^2.6.2" -"@smithy/util-stream@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.3.tgz#699ee2397cc1d474e46d2034039d5263812dca64" - integrity sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw== +"@smithy/util-stream@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.6.tgz#424dbb4e321129807e5fb01d961ef902ee7c04f8" + integrity sha512-lQEUfTx1ht5CRdvIjdAN/gUL6vQt2wSARGGLaBHNe+iJSkRHlWzY+DOn0mFTmTgyU3jcI5n9DkT5gTzYuSOo6A== dependencies: - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/fetch-http-handler" "^3.2.7" + "@smithy/node-http-handler" "^3.2.2" + "@smithy/types" "^3.4.2" "@smithy/util-base64" "^3.0.0" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-hex-encoding" "^3.0.0" @@ -1962,13 +2027,13 @@ "@smithy/util-buffer-from" "^3.0.0" tslib "^2.6.2" -"@smithy/util-waiter@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.2.tgz#2d40c3312f3537feee763459a19acafab4c75cf3" - integrity sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw== +"@smithy/util-waiter@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.5.tgz#56b3a0fa6498ed22dfee7f40c64d13a54dd04fcc" + integrity sha512-jYOSvM3H6sZe3CHjzD2VQNCjWBJs+4DbtwBMvUp9y5EnnwNa7NQxTeYeQw0CKCAdGGZ3QvVkyJmvbvs5M/B10A== dependencies: - "@smithy/abort-controller" "^3.1.1" - "@smithy/types" "^3.3.0" + "@smithy/abort-controller" "^3.1.4" + "@smithy/types" "^3.4.2" tslib "^2.6.2" "@szmarczak/http-timer@^5.0.1": @@ -2004,9 +2069,9 @@ integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== "@types/chai@^4.3.14": - version "4.3.17" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.17.tgz#9195f9d242f2ac3b429908864b6b871a8f73f489" - integrity sha512-zmZ21EWzR71B4Sscphjief5djsLre50M6lI622OSySTmn9DB3j+C3kWroHfBQWXbOBwbgg/M8CG/hUxDLIloow== + version "4.3.19" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.19.tgz#14519f437361d41e84102ed3fbc922ddace3e228" + integrity sha512-2hHHvQBVE2FiSK4eN0Br6snX9MtolHaTo/batnLjlGRhoQzlCL61iVpxoqO7SfFyOw+P/pwv+0zNHzKoGWz9Cw== "@types/glob@~7.2.0": version "7.2.0" @@ -2016,7 +2081,7 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/hast@^3.0.4": +"@types/hast@^3.0.0", "@types/hast@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== @@ -2038,6 +2103,13 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/mdast@^4.0.0": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" + integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== + dependencies: + "@types/unist" "*" + "@types/minimatch@*": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" @@ -2049,9 +2121,9 @@ integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== "@types/mocha@^10.0.7": - version "10.0.7" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.7.tgz#4c620090f28ca7f905a94b706f74dc5b57b44f2f" - integrity sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw== + version "10.0.8" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.8.tgz#a7eff5816e070c3b4d803f1d3cd780c4e42934a1" + integrity sha512-HfMcUmy9hTMJh66VNcmeC9iVErIZJli2bszuXc6julh5YGuRb/W5OnkHjwLNYdFlMis0sY3If5SEAp+PktdJjw== "@types/mute-stream@^0.0.4": version "0.0.4" @@ -2060,12 +2132,12 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@^22.1.0": - version "22.2.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.2.0.tgz#7cf046a99f0ba4d628ad3088cb21f790df9b0c5b" - integrity sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ== +"@types/node@*", "@types/node@^22.5.5": + version "22.5.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.5.tgz#52f939dd0f65fc552a4ad0b392f3c466cc5d7a44" + integrity sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA== dependencies: - undici-types "~6.13.0" + undici-types "~6.19.2" "@types/node@20.5.1": version "20.5.1" @@ -2073,9 +2145,9 @@ integrity sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg== "@types/node@^18.19.41": - version "18.19.44" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.44.tgz#875a8322d17ff12bf82b3af8c07b9310a00e72f8" - integrity sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA== + version "18.19.50" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.50.tgz#8652b34ee7c0e7e2004b3f08192281808d41bf5a" + integrity sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg== dependencies: undici-types "~5.26.4" @@ -2109,10 +2181,10 @@ resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz#5fd3592ff10c1e9695d377020c033116cc2889f2" integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ== -"@types/unist@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20" - integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ== +"@types/unist@*", "@types/unist@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" + integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== "@types/wrap-ansi@^3.0.0": version "3.0.0" @@ -2250,7 +2322,7 @@ "@typescript-eslint/types" "7.18.0" eslint-visitor-keys "^3.4.3" -"@ungap/structured-clone@^1.2.0": +"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== @@ -2276,9 +2348,9 @@ acorn-jsx@^5.3.2: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.1.1: - version "8.3.3" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" - integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== dependencies: acorn "^8.11.0" @@ -2354,9 +2426,9 @@ ansi-regex@^5.0.1: integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== ansi-styles@^3.2.1: version "3.2.1" @@ -2437,7 +2509,7 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== -array-includes@^3.1.7: +array-includes@^3.1.8: version "3.1.8" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== @@ -2454,7 +2526,7 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.findlastindex@^1.2.3: +array.prototype.findlastindex@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== @@ -2530,9 +2602,9 @@ async-retry@^1.3.3: retry "0.13.1" async@^3.2.3: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== asynckit@^0.4.0: version "0.4.0" @@ -2725,9 +2797,9 @@ camelcase@^6.0.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001646: - version "1.0.30001651" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz#52de59529e8b02b1aedcaaf5c05d9e23c0c28138" - integrity sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg== + version "1.0.30001662" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz#3574b22dfec54a3f3b6787331da1040fe8e763ec" + integrity sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA== capital-case@^1.0.4: version "1.0.4" @@ -2738,6 +2810,11 @@ capital-case@^1.0.4: tslib "^2.0.3" upper-case-first "^2.0.2" +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + chai@^4.3.10: version "4.5.0" resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8" @@ -2791,6 +2868,16 @@ change-case@^4, change-case@^4.1.2: snake-case "^3.0.4" tslib "^2.0.3" +character-entities-html4@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" + integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== + +character-entities-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + check-error@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" @@ -2917,6 +3004,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +comma-separated-tokens@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" + integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== + commander@^12.0.0: version "12.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" @@ -2945,6 +3037,14 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +config-chain@^1.1.11: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + constant-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" @@ -2994,9 +3094,9 @@ convert-source-map@^2.0.0: integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== core-js-compat@^3.34.0: - version "3.38.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.0.tgz#d93393b1aa346b6ee683377b0c31172ccfe607aa" - integrity sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A== + version "3.38.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.1.tgz#2bc7a298746ca5a7bcb9c164bcb120f2ebc09a09" + integrity sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw== dependencies: browserslist "^4.23.3" @@ -3093,12 +3193,12 @@ dateformat@^4.6.3: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.3.6: - version "4.3.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" - integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== dependencies: - ms "2.1.2" + ms "^2.1.3" debug@^3.2.7: version "3.2.7" @@ -3188,6 +3288,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + detect-indent@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-7.0.1.tgz#cbb060a12842b9c4d333f1cac4aa4da1bb66bc25" @@ -3198,6 +3303,13 @@ detect-newline@^4.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-4.0.1.tgz#fcefdb5713e1fb8cb2839b8b6ee22e6716ab8f23" integrity sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog== +devlop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" + integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== + dependencies: + dequal "^2.0.0" + diff@^4.0.1, diff@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -3294,14 +3406,14 @@ ejs@^3.1.10: jake "^10.8.5" electron-to-chromium@^1.5.4: - version "1.5.6" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.6.tgz#c81d9938b5a877314ad370feb73b4e5409b36abd" - integrity sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw== + version "1.5.25" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.25.tgz#492ade1cde401332b9b75aa0c55fd5e1550ca66c" + integrity sha512-kMb204zvK3PsSlgvvwzI3wBIcAw15tRkYk+NQdsjdDtcQWTp2RABbMQ9rUBy8KNEOM+/E6ep+XC3AykiWZld4g== emoji-regex@^10.3.0: - version "10.3.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" - integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== + version "10.4.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.4.0.tgz#03553afea80b3975749cfcb36f776ca268e413d4" + integrity sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw== emoji-regex@^8.0.0: version "8.0.0" @@ -3434,9 +3546,9 @@ es6-error@^4.0.1: integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== escalade@^3.1.1, escalade@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== escape-html@^1.0.3: version "1.0.3" @@ -3504,10 +3616,10 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-module-utils@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" - integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== +eslint-module-utils@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz#b99b211ca4318243f09661fae088f373ad5243c4" + integrity sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ== dependencies: debug "^3.2.7" @@ -3517,25 +3629,26 @@ eslint-plugin-header@^3.1.1: integrity sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg== eslint-plugin-import@^2.29.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + version "2.30.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz#21ceea0fc462657195989dd780e50c92fe95f449" + integrity sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw== dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" + "@rtsao/scc" "^1.1.0" + array-includes "^3.1.8" + array.prototype.findlastindex "^1.2.5" array.prototype.flat "^1.3.2" array.prototype.flatmap "^1.3.2" debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" + eslint-module-utils "^2.9.0" + hasown "^2.0.2" + is-core-module "^2.15.1" is-glob "^4.0.3" minimatch "^3.1.2" - object.fromentries "^2.0.7" - object.groupby "^1.0.1" - object.values "^1.1.7" + object.fromentries "^2.0.8" + object.groupby "^1.0.3" + object.values "^1.2.0" semver "^6.3.1" tsconfig-paths "^3.15.0" @@ -3555,11 +3668,11 @@ eslint-plugin-jsdoc@^46.10.1: spdx-expression-parse "^4.0.0" eslint-plugin-sf-plugin@^1.20.4: - version "1.20.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-sf-plugin/-/eslint-plugin-sf-plugin-1.20.4.tgz#9d99f76cd316939222231f74bb65fc76ddd7fee4" - integrity sha512-lpuF4XGVenrQotd0cUZhgZ4rLDubytWPJBzmMCIovZdqyGYzgD68MGofDSLFzmbhKfa2fX1Pndljru6/GjVyGQ== + version "1.20.7" + resolved "https://registry.yarnpkg.com/eslint-plugin-sf-plugin/-/eslint-plugin-sf-plugin-1.20.7.tgz#f22dfe52f6731e68e6ff54debccc938e7802645c" + integrity sha512-Lps86ebnRrHTYRVMJPvoQtvM+hmTzkEj0mbD3d0UfPPvTZ2dy5HtFk/8OspG9HweyYbTJU6qoTXWDwIH09LD0g== dependencies: - "@salesforce/core" "^8.3.0" + "@salesforce/core" "^8.5.4" "@typescript-eslint/utils" "^7.18.0" eslint-plugin-unicorn@^50.0.1: @@ -3598,15 +3711,15 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.56.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" "@ungap/structured-clone" "^1.2.0" @@ -3902,7 +4015,7 @@ foreground-child@^2.0.0: cross-spawn "^7.0.0" signal-exit "^3.0.2" -foreground-child@^3.1.0: +foreground-child@^3.1.0, foreground-child@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== @@ -3978,15 +4091,15 @@ functions-have-names@^1.2.3: integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== gaxios@^6.0.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-6.7.0.tgz#37b7c5961cb67d8d4b0ae8110dcd83cc6791eb6d" - integrity sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg== + version "6.7.1" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-6.7.1.tgz#ebd9f7093ede3ba502685e73390248bb5b7f71fb" + integrity sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ== dependencies: extend "^3.0.2" https-proxy-agent "^7.0.1" is-stream "^2.0.0" node-fetch "^2.6.9" - uuid "^10.0.0" + uuid "^9.0.1" gensync@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -4216,6 +4329,11 @@ got@^13, got@^13.0.0: p-cancelable "^3.0.0" responselike "^3.0.0" +graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + graceful-fs@^4.1.15, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" @@ -4297,6 +4415,30 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" +hast-util-to-html@^9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz#a9999a0ba6b4919576a9105129fead85d37f302b" + integrity sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + ccount "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-whitespace "^3.0.0" + html-void-elements "^3.0.0" + mdast-util-to-hast "^13.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + stringify-entities "^4.0.0" + zwitch "^2.0.4" + +hast-util-whitespace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" + integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== + dependencies: + "@types/hast" "^3.0.0" + he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -4339,6 +4481,11 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +html-void-elements@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" + integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== + htmlparser2@^9.0.0: version "9.1.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-9.1.0.tgz#cdb498d8a75a51f739b61d3f718136c369bc8c23" @@ -4538,10 +4685,10 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0: - version "2.15.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" - integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== +is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.5.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== dependencies: hasown "^2.0.2" @@ -5281,6 +5428,21 @@ marked@^13.0.0: resolved "https://registry.yarnpkg.com/marked/-/marked-13.0.3.tgz#5c5b4a5d0198060c7c9bc6ef9420a7fed30f822d" integrity sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA== +mdast-util-to-hast@^13.0.0: + version "13.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz#5ca58e5b921cc0a3ded1bc02eed79a4fe4fe41f4" + integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA== + dependencies: + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + "@ungap/structured-clone" "^1.0.0" + devlop "^1.0.0" + micromark-util-sanitize-uri "^2.0.0" + trim-lines "^3.0.0" + unist-util-position "^5.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + mdurl@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" @@ -5318,10 +5480,42 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +micromark-util-character@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.0.tgz#31320ace16b4644316f6bf057531689c71e2aee1" + integrity sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz#0921ac7953dc3f1fd281e3d1932decfdb9382ab1" + integrity sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA== + +micromark-util-sanitize-uri@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz#ec8fbf0258e9e6d8f13d9e4770f9be64342673de" + integrity sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-symbol "^2.0.0" + +micromark-util-symbol@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz#12225c8f95edf8b17254e47080ce0862d5db8044" + integrity sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw== + +micromark-util-types@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.0.tgz#63b4b7ffeb35d3ecf50d1ca20e68fc7caa36d95e" + integrity sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w== + micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" - integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: braces "^3.0.3" picomatch "^2.3.1" @@ -5441,11 +5635,6 @@ mri@^1.2.0: resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" @@ -5515,9 +5704,9 @@ no-case@^3.0.4: tslib "^2.0.3" nock@^13.5.4: - version "13.5.4" - resolved "https://registry.yarnpkg.com/nock/-/nock-13.5.4.tgz#8918f0addc70a63736170fef7106a9721e0dc479" - integrity sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw== + version "13.5.5" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.5.5.tgz#cd1caaca281d42be17d51946367a3d53a6af3e78" + integrity sha512-XKYnqUrCwXC8DGG1xX4YH5yNIrlh9c065uaMZZHUoeUUINTOyt+x/G+ezYk0Ft6ExSREVIs+qBJDK503viTfFA== dependencies: debug "^4.1.0" json-stringify-safe "^5.0.1" @@ -5589,9 +5778,9 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: path-key "^3.0.0" nyc@^17.0.0: - version "17.0.0" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-17.0.0.tgz#d8943407584242a448a70290b15bb72207fac9fd" - integrity sha512-ISp44nqNCaPugLLGGfknzQwSwt10SSS5IMoPR7GLoMAyS18Iw5js8U7ga2VF9lYuMZ42gOHr3UddZw4WZltxKg== + version "17.1.0" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-17.1.0.tgz#b6349a401a62ffeb912bd38ea9a018839fdb6eb1" + integrity sha512-U42vQ4czpKa0QdI1hu950XuNhYqgoM+ZF1HT+VuUHL9hPfDPVvNQyltmMqdE9bUHMVa+8yNbc3QKTj8zQhlVxQ== dependencies: "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" @@ -5600,7 +5789,7 @@ nyc@^17.0.0: decamelize "^1.2.0" find-cache-dir "^3.2.0" find-up "^4.1.0" - foreground-child "^2.0.0" + foreground-child "^3.3.0" get-package-type "^0.1.0" glob "^7.1.6" istanbul-lib-coverage "^3.0.0" @@ -5641,7 +5830,7 @@ object.assign@^4.1.5: has-symbols "^1.0.3" object-keys "^1.1.1" -object.fromentries@^2.0.7: +object.fromentries@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== @@ -5651,7 +5840,7 @@ object.fromentries@^2.0.7: es-abstract "^1.23.2" es-object-atoms "^1.0.0" -object.groupby@^1.0.1: +object.groupby@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== @@ -5660,7 +5849,7 @@ object.groupby@^1.0.1: define-properties "^1.2.1" es-abstract "^1.23.2" -object.values@^1.1.7: +object.values@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== @@ -5670,19 +5859,19 @@ object.values@^1.1.7: es-object-atoms "^1.0.0" oclif@^4.14.19: - version "4.14.19" - resolved "https://registry.yarnpkg.com/oclif/-/oclif-4.14.19.tgz#e6bdc56abb336100a7e2d8b2bb0e62cf741cb330" - integrity sha512-JdpLi1JbJ2OqSYCSLNzuLx9sn+ZgKNx3Z/zAL9f/BWsrQ6ohq3ElhjeAOSwOki3n533hjGqFHJW/hj1yuGYl0g== + version "4.14.34" + resolved "https://registry.yarnpkg.com/oclif/-/oclif-4.14.34.tgz#45ddd207ab648a0996ec845e975087ac2fe10479" + integrity sha512-NA604h6cPhiDQTLjjwaJ2yGq3gv6OyHIMIdwt9xTiOqMjFOrKXpoqXiwmKN6bGoeWC1SuaSJqlfoXThlAKn+Ag== dependencies: - "@aws-sdk/client-cloudfront" "^3.624.0" - "@aws-sdk/client-s3" "^3.614.0" + "@aws-sdk/client-cloudfront" "^3.645.0" + "@aws-sdk/client-s3" "^3.651.1" "@inquirer/confirm" "^3.1.22" "@inquirer/input" "^2.2.4" "@inquirer/select" "^2.3.10" "@oclif/core" "^4" - "@oclif/plugin-help" "^6.2.7" - "@oclif/plugin-not-found" "^3.2.15" - "@oclif/plugin-warn-if-update-available" "^3.0.19" + "@oclif/plugin-help" "^6.2.10" + "@oclif/plugin-not-found" "^3.2.21" + "@oclif/plugin-warn-if-update-available" "^3.1.11" async-retry "^1.3.3" chalk "^4" change-case "^4" @@ -5695,7 +5884,7 @@ oclif@^4.14.19: lodash "^4.17.21" normalize-package-data "^6" semver "^7.6.3" - sort-package-json "^2.10.0" + sort-package-json "^2.10.1" tiny-jsonc "^1.0.1" validate-npm-package-name "^5.0.1" @@ -5718,6 +5907,13 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +oniguruma-to-js@0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz#8d899714c21f5c7d59a3c0008ca50e848086d740" + integrity sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ== + dependencies: + regex "^4.3.2" + optionator@^0.9.3: version "0.9.4" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" @@ -5895,16 +6091,16 @@ path-scurry@^1.11.1: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + version "1.9.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.9.0.tgz#5dc0753acbf8521ca2e0f137b4578b917b10cf24" + integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g== dependencies: isarray "0.0.1" path-to-regexp@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.2.tgz#324377a83e5049cbecadc5554d6a63a9a4866b36" - integrity sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw== + version "6.3.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" + integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== path-type@^4.0.0: version "4.0.0" @@ -5922,9 +6118,9 @@ pathval@^1.1.1: integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== picocolors@^1.0.0, picocolors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" @@ -5969,10 +6165,10 @@ pino-std-serializers@^7.0.0: resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz#7c625038b13718dbbd84ab446bd673dc52259e3b" integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA== -pino@^9.3.2: - version "9.3.2" - resolved "https://registry.yarnpkg.com/pino/-/pino-9.3.2.tgz#a530d6d28f1d954b6f54416a218cbb616f52f901" - integrity sha512-WtARBjgZ7LNEkrGWxMBN/jvlFiE17LTbBoH0konmBU684Kd0uIiDwBXlcTCW7iJnA6HfIKwUssS/2AC6cDEanw== +pino@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-9.4.0.tgz#e4600ff199efc744856a5b3b71c53e38998eae5a" + integrity sha512-nbkQb5+9YPhQRz/BeQmrWpEknAaqjpAqRK8NwJpmrX/JHu7JuZC5G1CeAwJDJfGes4h+YihC6in3Q2nGb+Y09w== dependencies: atomic-sleep "^1.0.0" fast-redact "^3.1.1" @@ -6062,6 +6258,16 @@ proper-lockfile@^4.1.2: retry "^0.12.0" signal-exit "^3.0.2" +property-information@^6.0.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec" + integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + proxy-agent@^6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.4.0.tgz#b4e2dd51dee2b377748aef8d45604c2d7608652d" @@ -6081,15 +6287,10 @@ proxy-from-env@^1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -psl@^1.1.33: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + version "3.0.2" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" + integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -6099,16 +6300,11 @@ punycode.js@^2.3.1: resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -6215,6 +6411,11 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +regex@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/regex/-/regex-4.3.2.tgz#a68a68c9b337a77bf4ce4ed0b4b1a49d97cb3b7b" + integrity sha512-kK/AA3A9K6q2js89+VMymcboLOlF5lZRCYJv3gzszXFHBr6kO6qLGzbm+UIugBEV8SMMKCTR59txoY6ctRHYVw== + regexp-tree@^0.1.27: version "0.1.27" resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd" @@ -6230,6 +6431,13 @@ regexp.prototype.flags@^1.5.2: es-errors "^1.3.0" set-function-name "^2.0.1" +registry-auth-token@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.2.tgz#8b026cc507c8552ebbe06724136267e63302f756" + integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== + dependencies: + "@pnpm/npm-conf" "^2.1.0" + regjsparser@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.10.0.tgz#b1ed26051736b436f22fdec1c8f72635f9f44892" @@ -6259,11 +6467,6 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - resolve-alpn@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" @@ -6361,9 +6564,9 @@ safe-regex-test@^1.0.3: is-regex "^1.1.4" safe-stable-stringify@^2.3.1, safe-stable-stringify@^2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" - integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + version "2.5.0" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" + integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== sax@>=0.6.0: version "1.4.1" @@ -6476,12 +6679,16 @@ shelljs@^0.8.4, shelljs@^0.8.5: interpret "^1.0.0" rechoir "^0.6.2" -shiki@^1.9.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-1.12.1.tgz#72d9d230a8d68ddaf8cf7c94a1dc6a5f2625324e" - integrity sha512-nwmjbHKnOYYAe1aaQyEBHvQymJgfm86ZSS7fT8OaPRr4sbAcBNz7PbfAikMEFSDQ6se2j2zobkXvVKcBOm0ysg== +shiki@^1.16.2: + version "1.18.0" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-1.18.0.tgz#4f9ca2f442b3612849017ab1dcac47c35ee52276" + integrity sha512-8jo7tOXr96h9PBQmOHVrltnETn1honZZY76YA79MHheGQg55jBvbm9dtU+MI5pjC5NJCFuA6rvVTLVeSW5cE4A== dependencies: - "@shikijs/core" "1.12.1" + "@shikijs/core" "1.18.0" + "@shikijs/engine-javascript" "1.18.0" + "@shikijs/engine-oniguruma" "1.18.0" + "@shikijs/types" "1.18.0" + "@shikijs/vscode-textmate" "^9.2.2" "@types/hast" "^3.0.4" side-channel@^1.0.4: @@ -6582,9 +6789,9 @@ socks@^2.8.3: smart-buffer "^4.2.0" sonic-boom@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.0.1.tgz#515b7cef2c9290cb362c4536388ddeece07aed30" - integrity sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ== + version "4.1.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.1.0.tgz#4f039663ba191fac5cfe4f1dc330faac079e4342" + integrity sha512-NGipjjRicyJJ03rPiZCJYjwlsuP2d1/5QUviozRXC7S3WdVWNK5e3Ojieb9CCyfhq2UC+3+SRd9nG3I2lPRvUw== dependencies: atomic-sleep "^1.0.0" @@ -6593,10 +6800,10 @@ sort-object-keys@^1.1.3: resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45" integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg== -sort-package-json@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-2.10.0.tgz#6be07424bf3b7db9fbb1bdd69e7945f301026d8a" - integrity sha512-MYecfvObMwJjjJskhxYfuOADkXp1ZMMnCFC8yhp+9HDsk7HhR336hd7eiBs96lTXfiqmUNI+WQCeCMRBhl251g== +sort-package-json@^2.10.1: + version "2.10.1" + resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-2.10.1.tgz#18e7fa0172233cb2d4d926f7c99e6bfcf4d1d25c" + integrity sha512-d76wfhgUuGypKqY72Unm5LFnMpACbdxXsLPcL27pOsSrmVqH3PztFp1uq+Z22suk15h7vXmTesuh2aEjdCqb5w== dependencies: detect-indent "^7.0.1" detect-newline "^4.0.0" @@ -6620,6 +6827,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +space-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== + spawn-wrap@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" @@ -6662,9 +6874,9 @@ spdx-expression-parse@^4.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.18" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326" - integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== + version "3.0.20" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz#e44ed19ed318dd1e5888f93325cee800f0f51b89" + integrity sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw== split2@^3.0.0, split2@^3.2.2: version "3.2.2" @@ -6771,6 +6983,14 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +stringify-entities@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3" + integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== + dependencies: + character-entities-html4 "^2.0.0" + character-entities-legacy "^3.0.0" + "strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -6909,6 +7129,18 @@ tiny-jsonc@^1.0.1: resolved "https://registry.yarnpkg.com/tiny-jsonc/-/tiny-jsonc-1.0.1.tgz#71de47c9d812b411e87a9f3ab4a5fe42cd8d8f9c" integrity sha512-ik6BCxzva9DoiEfDX/li0L2cWKPPENYvixUprFdl3YPi4bZZUhDnNI9YUkacrv+uIG90dnxR5mNqaoD6UhD6Bw== +tldts-core@^6.1.47: + version "6.1.47" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.47.tgz#bb6deb97abb6ef04243af60968d2d0055a65cbd7" + integrity sha512-6SWyFMnlst1fEt7GQVAAu16EGgFK0cLouH/2Mk6Ftlwhv3Ol40L0dlpGMcnnNiiOMyD2EV/aF3S+U2nKvvLvrA== + +tldts@^6.1.32: + version "6.1.47" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.47.tgz#bab4edf5867e2bbd763e72d9435289de97b082df" + integrity sha512-R/K2tZ5MiY+mVrnSkNJkwqYT2vUv1lcT6wJvd2emGaMJ7PHUGRY4e3tUsdFCXgqxi2QgbHjL3yJgXCo40v9Hxw== + dependencies: + tldts-core "^6.1.47" + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -6922,20 +7154,22 @@ to-regex-range@^5.0.1: is-number "^7.0.0" tough-cookie@*: - version "4.1.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" - integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== + version "5.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-5.0.0.tgz#6b6518e2b5c070cf742d872ee0f4f92d69eac1af" + integrity sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q== dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" + tldts "^6.1.32" tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + trim-newlines@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" @@ -6994,9 +7228,9 @@ tsconfig-paths@^3.15.0: strip-bom "^3.0.0" tslib@^2.0.1, tslib@^2.0.3, tslib@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" - integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + version "2.7.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== tunnel-agent@*, tunnel-agent@^0.6.0: version "0.6.0" @@ -7109,20 +7343,20 @@ typedoc-plugin-missing-exports@^3.0.0: integrity sha512-R7D8fYrK34mBFZSlF1EqJxfqiUSlQSmyrCiQgTQD52nNm6+kUtqwiaqaNkuJ2rA2wBgWFecUA8JzHT7x2r7ePg== typedoc@^0.26.5: - version "0.26.5" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.26.5.tgz#08032bd57cac3d56e8ac296a07e3482dc0c645ac" - integrity sha512-Vn9YKdjKtDZqSk+by7beZ+xzkkr8T8CYoiasqyt4TTRFy5+UHzL/mF/o4wGBjRF+rlWQHDb0t6xCpA3JNL5phg== + version "0.26.7" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.26.7.tgz#1980e3ed51c6c315b7a09786b2b9af1106a3aa80" + integrity sha512-gUeI/Wk99vjXXMi8kanwzyhmeFEGv1LTdTQsiyIsmSYsBebvFxhbcyAx7Zjo4cMbpLGxM4Uz3jVIjksu/I2v6Q== dependencies: lunr "^2.3.9" markdown-it "^14.1.0" minimatch "^9.0.5" - shiki "^1.9.1" - yaml "^2.4.5" + shiki "^1.16.2" + yaml "^2.5.1" "typescript@^4.6.4 || ^5.2.2", typescript@^5.5.4: - version "5.5.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" - integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== + version "5.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0" + integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw== typescript@~5.4.2: version "5.4.5" @@ -7135,9 +7369,9 @@ uc.micro@^2.0.0, uc.micro@^2.1.0: integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== uglify-js@^3.1.4: - version "3.19.2" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.2.tgz#319ae26a5fbd18d03c7dc02496cfa1d6f1cd4307" - integrity sha512-S8KA6DDI47nQXJSi2ctQ629YzwOVs+bQML6DAtvy0wgNdpi+0ySpQK0g2pxBq2xfF2z3YCscu7NNA8nXT9PlIQ== + version "3.19.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f" + integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== unbox-primitive@^1.0.2: version "1.0.2" @@ -7154,26 +7388,59 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici-types@~6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.13.0.tgz#e3e79220ab8c81ed1496b5812471afd7cf075ea5" - integrity sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg== +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== unicorn-magic@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== +unist-util-is@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" + integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-position@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" + integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-stringify-position@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" + integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-visit-parents@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" + integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + +unist-util-visit@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" + integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - universalify@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" @@ -7208,24 +7475,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -uuid@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" - integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== - uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -7254,6 +7508,22 @@ validate-npm-package-name@^5.0.1: resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== +vfile-message@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" + integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-stringify-position "^4.0.0" + +vfile@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.3.tgz#3652ab1c496531852bf55a6bac57af981ebc38ab" + integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q== + dependencies: + "@types/unist" "^3.0.0" + vfile-message "^4.0.0" + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -7323,9 +7593,9 @@ widest-line@^3.1.0: string-width "^4.0.0" wireit@^0.14.5: - version "0.14.7" - resolved "https://registry.yarnpkg.com/wireit/-/wireit-0.14.7.tgz#8b4de32ac9bd6445ce4f6f89a91b4241980ae09d" - integrity sha512-bMyyaKtH8fTYD3cmI8ZULIwifDcgNRHyHfYF54QFISvKiDtDJ4yHJZRlW/q2j0DaRjuFbMkIhpE++/GtI5iipQ== + version "0.14.9" + resolved "https://registry.yarnpkg.com/wireit/-/wireit-0.14.9.tgz#72fb1e3a605f246104c0e292f10472ecc106fe1d" + integrity sha512-hFc96BgyslfO1WGSzQqOVYd5N3TB+4u9w70L9GHR/T7SYjvFmeznkYMsRIjMLhPcVabCEYPW1vV66wmIVDs+dQ== dependencies: brace-expansion "^4.0.0" chokidar "^3.5.3" @@ -7437,10 +7707,10 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^2.4.5: - version "2.5.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d" - integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw== +yaml@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.1.tgz#c9772aacf62cb7494a95b0c4f1fb065b563db130" + integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q== yargs-parser@^18.1.2: version "18.1.3" @@ -7527,3 +7797,8 @@ yoctocolors-cjs@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242" integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA== + +zwitch@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== From 6112c2670757f63715da58b5346cfd494043c66d Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Wed, 25 Sep 2024 16:22:59 -0600 Subject: [PATCH 06/11] fix: allow formdata --- src/commands/api/request/rest.ts | 36 ++++++++++++++----------------- src/shared/shared.ts | 37 +++++++++++++++++++------------- 2 files changed, 38 insertions(+), 35 deletions(-) diff --git a/src/commands/api/request/rest.ts b/src/commands/api/request/rest.ts index 5bfbfce..c0ef3f2 100644 --- a/src/commands/api/request/rest.ts +++ b/src/commands/api/request/rest.ts @@ -5,7 +5,6 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import { readFileSync, createReadStream } from 'node:fs'; -import { basename } from 'node:path'; import { ProxyAgent } from 'proxy-agent'; import { Flags, SfCommand } from '@salesforce/sf-plugins-core'; import { Messages, Org, SFDX_HTTP_HEADERS, SfError } from '@salesforce/core'; @@ -17,7 +16,7 @@ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-api', 'rest'); const methodOptions = ['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE'] as const; -type PostmanSchema = { +export type PostmanSchema = { url: { raw: string } | string; method: typeof methodOptions; description?: string; @@ -79,23 +78,14 @@ export class Rest extends SfCommand { ? (JSON.parse(readFileSync(flags.file, 'utf8')) as PostmanSchema) : undefined; + // validate that we have a URL to hit if (!args.url && !fileOptions?.url) { throw new SfError("The url is required either in --file file's content or as an argument"); } - const headers = getHeaders(flags.header ?? []); - if (typeof fileOptions?.header === 'string') { - const [key, ...rest] = fileOptions.header.split(':'); - headers[key.toLowerCase()] = rest.join(':').trim(); - } else { - (fileOptions?.header ?? []).map((header) => { - if (!header.disabled) { - headers[header.key.toLowerCase()] = header.value; - } - }); - } + const headers = getHeaders(flags.header ?? fileOptions?.header); - // the conditional above ensures we either have an arg or it's in the file + // the conditional above ensures we either have an arg or it's in the file - now we just have to find where the URL value is const specified = args.url ?? (fileOptions?.url as { raw: string }).raw ?? fileOptions?.url; const url = new URL( `${org.getField(Org.Fields.INSTANCE_URL)}/services/data/v${ @@ -104,6 +94,7 @@ export class Rest extends SfCommand { }/${specified.replace(/\//y, '')}` ); + // default the method to GET here to allow flags to override, but not hinder reading from files, rather than setting the default in the flag definition const method = flags.method ?? fileOptions?.method ?? 'GET'; // @ts-expect-error users _could_ put one of these in their file without knowing it's wrong - TS is smarter than users here :) if (!methodOptions.includes(method)) { @@ -111,9 +102,13 @@ export class Rest extends SfCommand { throw new SfError(`"${method}" must be one of ${methodOptions.join(', ')}`); } - await org.refreshAuth(); + const body = method !== 'GET' ? flags.body ?? getBodyContents(fileOptions?.body) : undefined; - const body = method !== 'GET' ? (flags.body ? flags.body : getBodyContents(fileOptions?.body)) : undefined; + let formDataHeaders = {}; + if (body instanceof FormData) { + // if it's a multi-part formdata request, those have extra headers + formDataHeaders = body.getHeaders(); + } const options = { agent: { https: new ProxyAgent() }, @@ -126,21 +121,21 @@ export class Rest extends SfCommand { org.getConnection().getConnectionOptions().accessToken! }`, ...headers, + ...formDataHeaders, }, body, throwHttpErrors: false, followRedirect: false, }; - // eslint-disable-next-line no-console - console.log('op', options); + await org.refreshAuth(); await sendAndPrintRequest({ streamFile, url, options, include: flags.include, this: this }); } } const getBodyContents = (body?: PostmanSchema['body']): string | FormData => { if (body?.mode === 'raw') { - return body.raw; + return JSON.stringify(body.raw); } else { // parse formdata const form = new FormData(); @@ -148,11 +143,12 @@ const getBodyContents = (body?: PostmanSchema['body']): string | FormData => { if (data.type === 'text') { form.append(data.key, data.value); } else if (data.type === 'file' && typeof data.src === 'string') { - form.append(data.key, createReadStream(data.src), basename(data.src)); + form.append(data.key, createReadStream(data.src)); } else if (Array.isArray(data.src)) { form.append(data.key, data.src); } }); + return form; } }; diff --git a/src/shared/shared.ts b/src/shared/shared.ts index 4967df0..a929278 100644 --- a/src/shared/shared.ts +++ b/src/shared/shared.ts @@ -11,26 +11,32 @@ import { Flags, SfCommand } from '@salesforce/sf-plugins-core'; import ansis from 'ansis'; import { AnyJson } from '@salesforce/ts-types'; import got from 'got'; +import { PostmanSchema } from '../commands/api/request/rest.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-api', 'shared'); -export function getHeaders(keyValPair: string[] | string): Headers { +export function getHeaders(keyValPair: string[] | PostmanSchema['header'] | undefined): Headers { + if (!keyValPair) return {}; const headers: { [key: string]: string } = {}; if (typeof keyValPair === 'string') { const [key, ...rest] = keyValPair.split(':'); - headers[key] = rest.join(':').trim(); + headers[key.toLowerCase()] = rest.join(':').trim(); } else { - for (const header of keyValPair) { - const [key, ...rest] = header.split(':'); - const value = rest.join(':').trim(); - if (!key || !value) { - throw new SfError(`Failed to parse HTTP header: "${header}".`, 'Failed To Parse HTTP Header', [ - 'Make sure the header is in a "key:value" format, e.g. "Accept: application/json"', - ]); + keyValPair.map((header) => { + if (typeof header === 'string') { + const [key, ...rest] = header.split(':'); + const value = rest.join(':').trim(); + if (!key || !value) { + throw new SfError(`Failed to parse HTTP header: "${header}".`, 'Failed To Parse HTTP Header', [ + 'Make sure the header is in a "key:value" format, e.g. "Accept: application/json"', + ]); + } + headers[key.toLowerCase()] = value; + } else if (!header.disabled) { + headers[header.key.toLowerCase()] = header.value; } - headers[key] = value; - } + }); } return headers; @@ -60,10 +66,11 @@ export async function sendAndPrintRequest(options: { throw SfError.wrap(error); }); } else { - const res = options.options.method - ? // default to 'POST' if not specified - await got(options.url, options.options) - : await got.post(options.url, options.options); + const res = + options.options.method !== 'POST' + ? // default to 'POST' if not specified + await got(options.url, options.options) + : await got.post(options.url, options.options); // Print HTTP response status and headers. if (options.include) { options.this.log(`HTTP/${res.httpVersion} ${res.statusCode}`); From 9fabf2b6825b494cf044c0b62d57755b12288e11 Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Thu, 26 Sep 2024 15:51:12 -0600 Subject: [PATCH 07/11] test: migrate towards NUTs, add NUT coverage for new functionality --- src/shared/shared.ts | 9 +- .../api/request/graphql/graphql.test.ts | 14 ++-- test/commands/api/request/rest/rest.nut.ts | 25 ++++++ test/commands/api/request/rest/rest.test.ts | 77 ++---------------- test/test-files/data-project/fileUpload.json | 24 ++++++ test/test-files/data-project/pfp.jpeg | Bin 0 -> 220944 bytes .../data-project/profilePicUpload.json | 29 +++++++ test/test-files/data-project/raw.json | 19 +++++ 8 files changed, 118 insertions(+), 79 deletions(-) create mode 100644 test/test-files/data-project/fileUpload.json create mode 100644 test/test-files/data-project/pfp.jpeg create mode 100644 test/test-files/data-project/profilePicUpload.json create mode 100644 test/test-files/data-project/raw.json diff --git a/src/shared/shared.ts b/src/shared/shared.ts index a929278..e8d8232 100644 --- a/src/shared/shared.ts +++ b/src/shared/shared.ts @@ -66,11 +66,10 @@ export async function sendAndPrintRequest(options: { throw SfError.wrap(error); }); } else { - const res = - options.options.method !== 'POST' - ? // default to 'POST' if not specified - await got(options.url, options.options) - : await got.post(options.url, options.options); + const res = options.options.method + ? // default to 'POST' if not specified + await got(options.url, options.options) + : await got.post(options.url, options.options); // Print HTTP response status and headers. if (options.include) { options.this.log(`HTTP/${res.httpVersion} ${res.statusCode}`); diff --git a/test/commands/api/request/graphql/graphql.test.ts b/test/commands/api/request/graphql/graphql.test.ts index add319a..fa35f68 100644 --- a/test/commands/api/request/graphql/graphql.test.ts +++ b/test/commands/api/request/graphql/graphql.test.ts @@ -77,7 +77,8 @@ describe('graphql', () => { await Graphql.run(['--target-org', 'test@hub.com', '--body', 'standard.txt']); - const output = stripAnsi(stdoutSpy.args.flat().join('')); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + const output = stripAnsi(stdoutSpy!.args.at(0)!.at(0)); expect(JSON.parse(output)).to.deep.equal(serverResponse); }); @@ -89,16 +90,17 @@ describe('graphql', () => { // gives it a second to resolve promises and close streams before we start asserting await sleep(1000); - const output = stripAnsi(stdoutSpy.args.flat().join('')); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + const output = stripAnsi(stdoutSpy!.args.at(0)!.at(0)); expect(output).to.deep.equal('File saved to myOutput1.txt' + '\n'); expect(await fs.promises.readFile('myOutput1.txt', 'utf8')).to.deep.equal( '{"data":{"uiapi":{"query":{"Account":{"edges":[{"node":{"Id":"0017g00001nEdPjAAK","Name":{"value":"Sample Account for Entitlements"}}}]}}}},"errors":[]}' ); + }); - after(() => { - // more than a UT - fs.rmSync(path.join(process.cwd(), 'myOutput1.txt')); - }); + after(() => { + // more than a UT + fs.rmSync(path.join(process.cwd(), 'myOutput1.txt')); }); }); diff --git a/test/commands/api/request/rest/rest.nut.ts b/test/commands/api/request/rest/rest.nut.ts index 2b5e240..d36b09e 100644 --- a/test/commands/api/request/rest/rest.nut.ts +++ b/test/commands/api/request/rest/rest.nut.ts @@ -76,6 +76,31 @@ skipIfWindows('api:request:rest NUT', () => { // the headers will change this to xml expect(result.startsWith('')).to.be.true; }); + + it('can store an entire request and send with --file', () => { + const res = execCmd(`api request rest --file ${join(testSession.project.dir, 'fileUpload.json')}`).shellOutput + .stdout; + // this prints as json to stdout, verify a few key/values + expect(res).to.include('"title": "standard.txt"'); + expect(res).to.include('"name": "standard.txt"'); + }); + + it('can send FormData', () => { + const res = execCmd(`api request rest --file ${join(testSession.project.dir, 'profilePicUpload.json')}`) + .shellOutput.stdout; + // this prints as json to stdout, verify a few key/valuess + expect(res).to.include('"fullEmailPhotoUrl"'); + expect(res).to.include('"url": "/services/data/'); + expect(res).to.include('"standardEmailPhotoUrl"'); + }); + + it('can send raw data, with disabled headers', () => { + const res = execCmd(`api request rest --file ${join(testSession.project.dir, 'raw.json')}`).shellOutput.stdout; + // this prints as json to stdout, verify a few key/valuess + expect(res).to.include('"AnalyticsExternalDataSizeMB":'); + expect(res).to.include('"SingleEmail"'); + expect(res).to.include('"PermissionSets"'); + }); }); describe('stream-to-file', () => { diff --git a/test/commands/api/request/rest/rest.test.ts b/test/commands/api/request/rest/rest.test.ts index e681746..30955ed 100644 --- a/test/commands/api/request/rest/rest.test.ts +++ b/test/commands/api/request/rest/rest.test.ts @@ -56,16 +56,6 @@ describe('rest', () => { expect(uxStub.styledJSON.args[0][0]).to.deep.equal(orgLimitsResponse); }); - it('should read everything from --file', async () => { - nock(testOrg.instanceUrl).get('/services/data/v56.0/limits').reply(200, orgLimitsResponse); - - $$.SANDBOX.stub(fs, 'existsSync').returns(true); - $$.SANDBOX.stub(fs, 'readFileSync').returns(JSON.stringify({ url: 'myUrlToBeOverriden' })); - await Rest.run(['limits', '--api-version', '56.0', '--file', 'body.json', '--target-org', 'test@hub.com']); - - expect(uxStub.styledJSON.args[0][0]).to.deep.equal(orgLimitsResponse); - }); - it("should strip leading '/'", async () => { nock(testOrg.instanceUrl).get('/services/data/v56.0/limits').reply(200, orgLimitsResponse); @@ -103,13 +93,17 @@ describe('rest', () => { // gives it a second to resolve promises and close streams before we start asserting await sleep(1000); - expect(writeSpy.args.flat().join('')).to.deep.equal('File saved to myOutput.txt' + '\n'); + expect(writeSpy.args.flat().join('')).to.include('File saved to myOutput.txt' + '\n'); expect(JSON.parse(fs.readFileSync('myOutput.txt', 'utf8'))).to.deep.equal(orgLimitsResponse); + }); - after(() => { - // more than a UT + after(() => { + // more than a UT + try { fs.rmSync(path.join(process.cwd(), 'myOutput.txt')); - }); + } catch (e) { + // do nothing + } }); it('should set "Accept" HTTP header', async () => { @@ -135,61 +129,8 @@ describe('rest', () => { 'test@hub.com', ]); - const output = stripAnsi(writeSpy.args.flat().join('')); - - // https://github.com/oclif/core/blob/ff76400fb0bdfc4be0fa93056e86183b9205b323/src/command.ts#L248-L253 - expect(output).to.equal(xmlRes + '\n'); - }); - - it('should override "Accept" HTTP header from --file', async () => { - const writeSpy = $$.SANDBOX.stub(process.stdout, 'write'); - - nock(testOrg.instanceUrl, { - reqheaders: { - accept: 'application/xml', - }, - }) - .get('/services/data/v42.0/') - .reply(200, xmlRes); - - $$.SANDBOX.stub(fs, 'readFileSync').returns(JSON.stringify({ header: ['Accept: application/json'] })); - - await Rest.run([ - '/', - '--api-version', - '42.0', - '--file', - 'file.json', - '--header', - 'Accept: application/xml', - '--target-org', - 'test@hub.com', - ]); - - const output = stripAnsi(writeSpy.args.flat().join('')); - - // https://github.com/oclif/core/blob/ff76400fb0bdfc4be0fa93056e86183b9205b323/src/command.ts#L248-L253 - expect(output).to.equal(xmlRes + '\n'); - }); - it('should set "Accept" HTTP header from --file', async () => { - const writeSpy = $$.SANDBOX.stub(process.stdout, 'write'); - - nock(testOrg.instanceUrl, { - reqheaders: { - accept: 'application/xml', - }, - }) - .get('/services/data/v42.0/') - .reply(200, xmlRes); - - $$.SANDBOX.stub(fs, 'readFileSync').returns(JSON.stringify({ header: ['Accept: application/xml'] })); - - await Rest.run(['/', '--api-version', '42.0', '--file', 'file.json', '--target-org', 'test@hub.com']); - - const output = stripAnsi(writeSpy.args.flat().join('')); - // https://github.com/oclif/core/blob/ff76400fb0bdfc4be0fa93056e86183b9205b323/src/command.ts#L248-L253 - expect(output).to.equal(xmlRes + '\n'); + expect(stripAnsi(writeSpy.args.flat().join(''))).to.include(xmlRes + '\n'); }); it('should validate HTTP headers are in a "key:value" format', async () => { diff --git a/test/test-files/data-project/fileUpload.json b/test/test-files/data-project/fileUpload.json new file mode 100644 index 0000000..c68fd48 --- /dev/null +++ b/test/test-files/data-project/fileUpload.json @@ -0,0 +1,24 @@ +{ + "method": "POST", + "header": [ + { + "key": "content-type", + "value": "multipart/form-data" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "fileData", + "type": "file", + "src": "standard.txt" + } + ] + }, + "url": "connect/files/users/me" +} diff --git a/test/test-files/data-project/pfp.jpeg b/test/test-files/data-project/pfp.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..ad4a3e56cdc21598044bb1fc4f08eccf27283677 GIT binary patch literal 220944 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

Z+@v?lJO112H$uONdu5QUJGV2qJKA4trTDJS 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%0A6qZ)T3Cv?rlW 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 Date: Fri, 27 Sep 2024 09:51:00 -0600 Subject: [PATCH 08/11] chore: consolidate shared methods, update examples, clean up formdata headers --- messages/rest.md | 34 ++++++++++++++++++++++++++++- src/commands/api/request/rest.ts | 37 ++++++++++++++++++++++++++------ src/shared/shared.ts | 28 ------------------------ 3 files changed, 64 insertions(+), 35 deletions(-) diff --git a/messages/rest.md b/messages/rest.md index 9737f6c..9394e9a 100644 --- a/messages/rest.md +++ b/messages/rest.md @@ -63,7 +63,39 @@ HTTP method for the request. # flags.file.summary -A json file to store values for header/body/method/url - this is the same format as a Postman Collection Format +A json file to store values for header/body/method/url - this is a similar format as a Postman Collection Format. + +{ +"method": "POST", +"header": [ +{ +"key": "content-type", +"value": "multipart/form-data" +}, +{ +"key": "Accept", +"value": "application/json" +} +], +"body": { +"mode": "formdata", +"formdata": [ +{ +"key": "json", +"type": "text", +"value": "{\"cropY\":\"0\",\"cropX\":\"0\",\"cropSize\":\"200\"}" +} , +{ +"key": "fileUpload", +"type": "file", +"src": "myImg.jpeg" +} +] +}, +"url": "connect/user-profiles/me/photo" +} + +see more examples in this repo's test directory https://github.com/salesforcecli/plugin-api/tree/main/test/test-files/data-project # flags.header.summary diff --git a/src/commands/api/request/rest.ts b/src/commands/api/request/rest.ts index b1ec9f9..d283a99 100644 --- a/src/commands/api/request/rest.ts +++ b/src/commands/api/request/rest.ts @@ -6,11 +6,12 @@ */ import { readFileSync, createReadStream } from 'node:fs'; import { ProxyAgent } from 'proxy-agent'; +import type { Headers } from 'got'; import { Flags, SfCommand } from '@salesforce/sf-plugins-core'; import { Messages, Org, SFDX_HTTP_HEADERS, SfError } from '@salesforce/core'; import { Args } from '@oclif/core'; import FormData from 'form-data'; -import { getHeaders, includeFlag, sendAndPrintRequest, streamToFileFlag } from '../../../shared/shared.js'; +import { includeFlag, sendAndPrintRequest, streamToFileFlag } from '../../../shared/shared.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-api', 'rest'); @@ -84,8 +85,6 @@ export class Rest extends SfCommand { throw new SfError("The url is required either in --file file's content or as an argument"); } - const headers = getHeaders(flags.header ?? fileOptions?.header); - // the conditional above ensures we either have an arg or it's in the file - now we just have to find where the URL value is const specified = args.url ?? (fileOptions?.url as { raw: string }).raw ?? fileOptions?.url; const url = new URL( @@ -104,11 +103,11 @@ export class Rest extends SfCommand { } const body = method !== 'GET' ? flags.body ?? getBodyContents(fileOptions?.body) : undefined; + let headers = getHeaders(flags.header ?? fileOptions?.header); - let formDataHeaders = {}; if (body instanceof FormData) { // if it's a multi-part formdata request, those have extra headers - formDataHeaders = body.getHeaders(); + headers = { ...headers, ...body.getHeaders() }; } const options = { @@ -122,7 +121,6 @@ export class Rest extends SfCommand { org.getConnection().getConnectionOptions().accessToken! }`, ...headers, - ...formDataHeaders, }, body, throwHttpErrors: false, @@ -153,3 +151,30 @@ const getBodyContents = (body?: PostmanSchema['body']): string | FormData => { return form; } }; + +function getHeaders(keyValPair: string[] | PostmanSchema['header'] | undefined): Headers { + if (!keyValPair) return {}; + const headers: { [key: string]: string } = {}; + + if (typeof keyValPair === 'string') { + const [key, ...rest] = keyValPair.split(':'); + headers[key.toLowerCase()] = rest.join(':').trim(); + } else { + keyValPair.map((header) => { + if (typeof header === 'string') { + const [key, ...rest] = header.split(':'); + const value = rest.join(':').trim(); + if (!key || !value) { + throw new SfError(`Failed to parse HTTP header: "${header}".`, 'Failed To Parse HTTP Header', [ + 'Make sure the header is in a "key:value" format, e.g. "Accept: application/json"', + ]); + } + headers[key.toLowerCase()] = value; + } else if (!header.disabled) { + headers[header.key.toLowerCase()] = header.value; + } + }); + } + + return headers; +} diff --git a/src/shared/shared.ts b/src/shared/shared.ts index e8d8232..036510c 100644 --- a/src/shared/shared.ts +++ b/src/shared/shared.ts @@ -6,41 +6,13 @@ */ import { createWriteStream } from 'node:fs'; import { Messages, SfError } from '@salesforce/core'; -import type { Headers } from 'got'; import { Flags, SfCommand } from '@salesforce/sf-plugins-core'; import ansis from 'ansis'; import { AnyJson } from '@salesforce/ts-types'; import got from 'got'; -import { PostmanSchema } from '../commands/api/request/rest.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-api', 'shared'); -export function getHeaders(keyValPair: string[] | PostmanSchema['header'] | undefined): Headers { - if (!keyValPair) return {}; - const headers: { [key: string]: string } = {}; - - if (typeof keyValPair === 'string') { - const [key, ...rest] = keyValPair.split(':'); - headers[key.toLowerCase()] = rest.join(':').trim(); - } else { - keyValPair.map((header) => { - if (typeof header === 'string') { - const [key, ...rest] = header.split(':'); - const value = rest.join(':').trim(); - if (!key || !value) { - throw new SfError(`Failed to parse HTTP header: "${header}".`, 'Failed To Parse HTTP Header', [ - 'Make sure the header is in a "key:value" format, e.g. "Accept: application/json"', - ]); - } - headers[key.toLowerCase()] = value; - } else if (!header.disabled) { - headers[header.key.toLowerCase()] = header.value; - } - }); - } - - return headers; -} export async function sendAndPrintRequest(options: { streamFile?: string; From eacc3165c8d11653bf3cbb70c171426890659829 Mon Sep 17 00:00:00 2001 From: Juliet Shackell Date: Tue, 1 Oct 2024 09:13:47 -0700 Subject: [PATCH 09/11] fix: edit messages --- messages/rest.md | 50 ++++++++++++++++++-------------- src/commands/api/request/rest.ts | 1 + 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/messages/rest.md b/messages/rest.md index 9394e9a..8e609f0 100644 --- a/messages/rest.md +++ b/messages/rest.md @@ -34,36 +34,42 @@ For a full list of supported REST endpoints and resources, see https://developer <%= config.bin %> <%= command.id %> 'sobjects/account/' --body "{\"BillingCity\": \"San Francisco\"}" --method PATCH -- You can store every flag option as a parameter in a json file, with the following schema: - { - url: { raw: string } | string; - method: 'GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE'; - description?: string; - header: string | Array>; - body: { mode: 'raw' | 'formdata'; raw: string; formdata: FormData }; - } - - looking at the example above, we could store all of this information in the file, and change the command to +- Rather than specify all the argument and flag values at the command line, store them in a file which you pass to the command; see the description of the --file flag for more information: <%= config.bin %> <%= command.id %> --file myFile.json - where myFile.json contains - { - "url": "sobjects/Account/", - "method": "PATCH", - "body" : {"BillingCity": "Boise"} - } - -- If you work in Postman a lot this schema may look familiar, because it shares as many similar properties as we could. Building an API call in postman then exporting and saving the file and executing via the CLI is now possible. -- - # flags.method.summary HTTP method for the request. # flags.file.summary -A json file to store values for header/body/method/url - this is a similar format as a Postman Collection Format. +JSON file to store values for the header/body/method/url + +# flags.file.description + +You can store every flag option as a parameter in a json file, with the following schema: + +{ +url: { raw: string } | string; +method: 'GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE'; +description?: string; +header: string | Array>; +body: { mode: 'raw' | 'formdata'; raw: string; formdata: FormData }; +} + +<%= config.bin %> <%= command.id %> --file myFile.json + +where myFile.json contains +{ +"url": "sobjects/Account/", +"method": "PATCH", +"body" : {"BillingCity": "Boise"} +} + +If you work in Postman a lot this schema may look familiar, because it shares as many similar properties as we could. Building an API call in postman then exporting and saving the file and executing via the CLI is now possible. + +The format of the file is similar to the Postman Collection Format. For example: { "method": "POST", @@ -95,7 +101,7 @@ A json file to store values for header/body/method/url - this is a similar forma "url": "connect/user-profiles/me/photo" } -see more examples in this repo's test directory https://github.com/salesforcecli/plugin-api/tree/main/test/test-files/data-project +See more examples in this repo's test directory https://github.com/salesforcecli/plugin-api/tree/main/test/test-files/data-project. # flags.header.summary diff --git a/src/commands/api/request/rest.ts b/src/commands/api/request/rest.ts index d283a99..f5755e3 100644 --- a/src/commands/api/request/rest.ts +++ b/src/commands/api/request/rest.ts @@ -52,6 +52,7 @@ export class Rest extends SfCommand { }), file: Flags.file({ summary: messages.getMessage('flags.file.summary'), + description: messages.getMessage('flags.file.description'), helpValue: 'file', char: 'f', }), From b4907053ef835825fad19614c7931cec9407e679 Mon Sep 17 00:00:00 2001 From: Juliet Shackell Date: Tue, 1 Oct 2024 09:57:03 -0700 Subject: [PATCH 10/11] fix: more edits --- messages/rest.md | 47 +++++++---------------------------------------- 1 file changed, 7 insertions(+), 40 deletions(-) diff --git a/messages/rest.md b/messages/rest.md index 8e609f0..c690b28 100644 --- a/messages/rest.md +++ b/messages/rest.md @@ -34,7 +34,7 @@ For a full list of supported REST endpoints and resources, see https://developer <%= config.bin %> <%= command.id %> 'sobjects/account/' --body "{\"BillingCity\": \"San Francisco\"}" --method PATCH -- Rather than specify all the argument and flag values at the command line, store them in a file which you pass to the command; see the description of the --file flag for more information: +- Store the values for the request header, body, and so on, in a file, which you then specify with the --file flag; see the description of --file for more information: <%= config.bin %> <%= command.id %> --file myFile.json @@ -44,11 +44,11 @@ HTTP method for the request. # flags.file.summary -JSON file to store values for the header/body/method/url +JSON file that contains values for the request header, body, method, and URL. # flags.file.description -You can store every flag option as a parameter in a json file, with the following schema: +Use this flag instead of specifying the request details with individual flags, such as --body or --method. This schema defines how to create the JSON file: { url: { raw: string } | string; @@ -58,50 +58,17 @@ header: string | Array>; body: { mode: 'raw' | 'formdata'; raw: string; formdata: FormData }; } -<%= config.bin %> <%= command.id %> --file myFile.json +Salesforce CLI defined this schema to be mimic Postman schemas; both share similar properties. The CLI's schema also supports Postman Collections to reuse and share requests. As a result, you can build an API call using Postman, export and save it to a file, and then use the file as a value to this flag. For information about Postman, see https://learning.postman.com/. + +Here's a simple example of a JSON file that contains values for the request URL, method, and body: -where myFile.json contains { "url": "sobjects/Account/", "method": "PATCH", "body" : {"BillingCity": "Boise"} } -If you work in Postman a lot this schema may look familiar, because it shares as many similar properties as we could. Building an API call in postman then exporting and saving the file and executing via the CLI is now possible. - -The format of the file is similar to the Postman Collection Format. For example: - -{ -"method": "POST", -"header": [ -{ -"key": "content-type", -"value": "multipart/form-data" -}, -{ -"key": "Accept", -"value": "application/json" -} -], -"body": { -"mode": "formdata", -"formdata": [ -{ -"key": "json", -"type": "text", -"value": "{\"cropY\":\"0\",\"cropX\":\"0\",\"cropSize\":\"200\"}" -} , -{ -"key": "fileUpload", -"type": "file", -"src": "myImg.jpeg" -} -] -}, -"url": "connect/user-profiles/me/photo" -} - -See more examples in this repo's test directory https://github.com/salesforcecli/plugin-api/tree/main/test/test-files/data-project. +See more examples in the plugin-api test directory, including JSON files that use "formdata" to define collections: https://github.com/salesforcecli/plugin-api/tree/main/test/test-files/data-project. # flags.header.summary From 8a02d5a7e1063c0381da945b82246bc4568d574a Mon Sep 17 00:00:00 2001 From: Willie Ruemmele Date: Thu, 3 Oct 2024 12:22:43 -0600 Subject: [PATCH 11/11] chore: add validation, break apart types for TS usage, add UTs --- messages/rest.md | 7 ++- src/commands/api/request/rest.ts | 40 ++++++++++++--- test/commands/api/request/rest/rest.test.ts | 55 ++++++++++++++++++++- 3 files changed, 93 insertions(+), 9 deletions(-) diff --git a/messages/rest.md b/messages/rest.md index c690b28..c23d80f 100644 --- a/messages/rest.md +++ b/messages/rest.md @@ -65,7 +65,12 @@ Here's a simple example of a JSON file that contains values for the request URL, { "url": "sobjects/Account/", "method": "PATCH", -"body" : {"BillingCity": "Boise"} +"body" : { +"mode": "raw", +"raw": { +"BillingCity": "Boise" +} +} } See more examples in the plugin-api test directory, including JSON files that use "formdata" to define collections: https://github.com/salesforcecli/plugin-api/tree/main/test/test-files/data-project. diff --git a/src/commands/api/request/rest.ts b/src/commands/api/request/rest.ts index f5755e3..a263a25 100644 --- a/src/commands/api/request/rest.ts +++ b/src/commands/api/request/rest.ts @@ -17,16 +17,34 @@ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-api', 'rest'); const methodOptions = ['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE'] as const; +type FileFormData = { + type: 'file'; + src: string | string[]; + key: string; +}; + +type StringFormData = { + type: 'text'; + value: string; + key: string; +}; + +type FormDataPostmanSchema = { + mode: 'formdata'; + formdata: Array; +}; + +type RawPostmanSchema = { + mode: 'raw'; + raw: string | Record; +}; + export type PostmanSchema = { url: { raw: string } | string; method: typeof methodOptions; description?: string; header: string | Array<{ key: string; value: string; disabled?: boolean; description?: string }>; - body: { - mode: 'raw' | 'formdata'; - raw: string; - formdata: Array<{ key: string; type: 'file' | 'text'; src?: string | string[]; value: string }>; - }; + body: RawPostmanSchema | FormDataPostmanSchema; }; export class Rest extends SfCommand { @@ -133,7 +151,12 @@ export class Rest extends SfCommand { await sendAndPrintRequest({ streamFile, url, options, include: flags.include, this: this }); } } -const getBodyContents = (body?: PostmanSchema['body']): string | FormData => { + +export const getBodyContents = (body?: PostmanSchema['body']): string | FormData => { + if (!body?.mode) { + throw new SfError("No 'mode' found in 'body' entry", undefined, ['add "mode":"raw" | "formdata" to your body']); + } + if (body?.mode === 'raw') { return JSON.stringify(body.raw); } else { @@ -153,7 +176,7 @@ const getBodyContents = (body?: PostmanSchema['body']): string | FormData => { } }; -function getHeaders(keyValPair: string[] | PostmanSchema['header'] | undefined): Headers { +export function getHeaders(keyValPair: string[] | PostmanSchema['header'] | undefined): Headers { if (!keyValPair) return {}; const headers: { [key: string]: string } = {}; @@ -172,6 +195,9 @@ function getHeaders(keyValPair: string[] | PostmanSchema['header'] | undefined): } headers[key.toLowerCase()] = value; } else if (!header.disabled) { + if (!header.key || !header.value) { + throw new SfError(`Failed to validate header: missing key: ${header.key} or value: ${header.value}`); + } headers[header.key.toLowerCase()] = header.value; } }); diff --git a/test/commands/api/request/rest/rest.test.ts b/test/commands/api/request/rest/rest.test.ts index 30955ed..699d7c6 100644 --- a/test/commands/api/request/rest/rest.test.ts +++ b/test/commands/api/request/rest/rest.test.ts @@ -15,7 +15,8 @@ import { MockTestOrgData, TestContext } from '@salesforce/core/testSetup'; import { sleep } from '@salesforce/kit'; import nock = require('nock'); import { stubUx } from '@salesforce/sf-plugins-core'; -import { Rest } from '../../../../../src/commands/api/request/rest.js'; +import * as FormData from 'form-data'; +import { getBodyContents, getHeaders, PostmanSchema, Rest } from '../../../../../src/commands/api/request/rest.js'; describe('rest', () => { const $$ = new TestContext(); @@ -148,6 +149,58 @@ describe('rest', () => { } }); + it('will error when mode not specified', () => { + try { + getBodyContents({ + raw: { + name: 'Mr Doe', + }, + } as unknown as PostmanSchema['body']); + assert.fail('the above should throw an error, no mode found'); + } catch (e) { + expect((e as SfError).message).to.equal("No 'mode' found in 'body' entry"); + expect((e as SfError).actions).to.deep.equal(['add "mode":"raw" | "formdata" to your body']); + } + }); + + it('will validate raw content', () => { + const result = getBodyContents({ + mode: 'raw', + raw: "{name: 'Mr Doe'}", + }); + expect(result).to.equal('"{name: \'Mr Doe\'}"'); + }); + + it('will validate formdata content', () => { + const result = getBodyContents({ + mode: 'formdata', + formdata: [ + { + key: 'info', + type: 'text', + value: 'myInfoHere', + }, + ], + }); + expect((result as FormData).getBuffer().toString()).to.include('myInfoHere'); + }); + + it('should validate header format', () => { + try { + getHeaders([ + { + value: 'application/xml', + }, + ] as PostmanSchema['header']); + assert.fail('the above should throw an error, invalid header format'); + } catch (e) { + expect(e instanceof SfError).to.be.true; + expect((e as SfError).message).to.equal( + 'Failed to validate header: missing key: undefined or value: application/xml' + ); + } + }); + it('should not follow redirects', async () => { nock(testOrg.instanceUrl) .get('/services/data/v56.0/limites')