diff --git a/.eslintrc.json b/.eslintrc.json index 78e9f7e84..9ec49752a 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -12,7 +12,8 @@ "project": "./tsconfig.json" }, "rules": { - "@typescript-eslint/no-unused-vars": ["error", {"argsIgnorePattern": "^_"}] + "@typescript-eslint/no-unused-vars": ["error", {"argsIgnorePattern": "^_"}], + "@typescript-eslint/unbound-method": ["error", {"ignoreStatic": true}] }, "plugins": [ "@typescript-eslint", diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 720708b73..21c6a9bdd 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -46,10 +46,35 @@ jobs: path: | ./reports ./coverage + + # The smoke tests should mimic a production setup as closely as possible. To that end, we'll spin up a tarball and + # then upload it as an artifact, so the smoke test jobs can pull it down and install it. + build-installable-tarball: + runs-on: ubuntu-latest + steps: + # Obviously, we need to get the code first + - uses: actions/checkout@v4 + with: + ref: ${{ inputs.target-branch }} + # Make sure we're on the right version of Node + - uses: actions/setup-node@v4 + with: + node-version: 'lts/*' # Always use Node LTS for building the tarball + # Install/build dependencies + - run: yarn + - run: yarn build + # Create the tarball + - run: npm pack + # Upload the tarball as an artifact + - uses: actions/upload-artifact@v4 + with: + name: smoke-test-tarball + path: ./salesforce-plugin-code-analyzer-*.tgz # For now, the smoke tests are no-ops, so the job doesn't have to do anything exciting. # When smoke-tests stop being no-ops, we'll need a build-dependencies step to create a tarball artifact, and so forth. # We'll be able to use the v4 workflow as a template. smoke-tests: + needs: build-installable-tarball strategy: # By default, if any job in a matrix fails, all other jobs are automatically cancelled. This makes the jobs run # to completion instead. @@ -59,8 +84,47 @@ jobs: os: [{vm: ubuntu-latest, exe: .sh}, {vm: macos-latest, exe: .sh}, {vm: windows-latest, exe: .cmd}] runs-on: ${{ matrix.os.vm }} steps: + # Check out the code - uses: actions/checkout@v4 with: ref: ${{ inputs.target-branch }} - - run: smoke-tests/smoke-test${{ matrix.os.exe }} sf + # Set up Node and Java + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node.version }} + - uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '11' + # Install SF CLI via NPM + - run: npm install -g @salesforce/cli + # Download and install the Tarball artifact + - uses: actions/download-artifact@v4 + id: download + with: + name: smoke-test-tarball + # Download the tarball to a subdirectory of HOME, to guarantee that it's somewhere the installation command + # can see + path: ~/downloads/tarball + - name: Echo tarball download location + run: echo ${{ steps.download.outputs.download-path }} + - name: Install Tarball + shell: bash + run: | + # We need to determine the Tarball's name first. + TARBALL_NAME=$(ls ~/downloads/tarball | grep salesforce-plugin-code-analyzer-5\\.0\\.0-alpha\\.[0-9]*\\.tgz) + # We need to determine the Tarball's location in an installable way. + # Get the path to the download folder. Swap out backslashes for forward slashes to ensure Windows compatibility. + RAW_TARBALL_PATH=`echo '${{ steps.download.outputs.download-path }}' | tr '\\' '/'` + # If the path starts with "C:", that needs to be pulled off. + ADJUSTED_TARBALL_PATH=`[[ $RAW_TARBALL_PATH = C* ]] && echo $RAW_TARBALL_PATH | cut -d':' -f 2 || echo $RAW_TARBALL_PATH` + # Install the tarball, piping in a `y` to simulate agreeing to install an unsigned package. Use the URI of the file's full path. + echo y | sf plugins install "file://${ADJUSTED_TARBALL_PATH}/${TARBALL_NAME}" + - name: Run smoke tests + run: smoke-tests/smoke-test${{ matrix.os.exe }} sf + - uses: actions/upload-artifact@v4 + if: ${{always()}} + with: + name: smoke-test-results-${{ runner.os }}-node-${{ matrix.node.artifact }} + path: smoke-test-results diff --git a/.images/vscodeScreenshot.png b/.images/vscodeScreenshot.png deleted file mode 100644 index 4b7206a47..000000000 Binary files a/.images/vscodeScreenshot.png and /dev/null differ diff --git a/messages/action-summary-viewer.md b/messages/action-summary-viewer.md new file mode 100644 index 000000000..2fe72f796 --- /dev/null +++ b/messages/action-summary-viewer.md @@ -0,0 +1,15 @@ +# common.summary-header + +Summary + +# common.logfile-location + +Additional log information written to: + +# config-action.no-outfiles + +No output file was specified. + +# config-action.outfile-location + +Configuration written to: diff --git a/messages/config-model.md b/messages/config-model.md index 54eadeabd..414a20c34 100644 --- a/messages/config-model.md +++ b/messages/config-model.md @@ -12,3 +12,6 @@ Empty object used because rule selection returned no rules # template.yaml.no-rules-selected Remove this empty object {} when you are ready to specify your first rule override + +# template.common.end-of-config +END OF CODE ANALYZER CONFIGURATION diff --git a/messages/config-writer.md b/messages/config-writer.md index be162b732..3a75fde1c 100644 --- a/messages/config-writer.md +++ b/messages/config-writer.md @@ -1,3 +1,7 @@ # error.unrecognized-file-format The output file %s has an unsupported extension. Valid extensions include: .yaml/.yml. + +# prompt.overwrite-existing-file + +A file named %s already exists. Do you want to overwrite it? diff --git a/messages/progress-event-listener.md b/messages/progress-event-listener.md index 39f1576aa..e8f383b91 100644 --- a/messages/progress-event-listener.md +++ b/messages/progress-event-listener.md @@ -1,9 +1,12 @@ # selection-spinner.action Selecting rules -# selection-spinner.status +# selection-spinner.in-progress-status Eligible engines: %s; Completion: %d%; Elapsed time: %ds +# selection-spinner.finished-status +done. Selected rules from %s. + # execution-spinner.action Executing rules @@ -13,6 +16,5 @@ Executing rules # execution-spinner.engine-status - %s at %d% completion. -# base-spinner.done -done - +# execution-spinner.finished-status +done. Executed rules from %s. diff --git a/package.json b/package.json index 84ee336b6..b7f6f06bd 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,17 @@ { "name": "@salesforce/plugin-code-analyzer", "description": "Static code scanner that applies quality and security rules to Apex code, and provides feedback.", - "version": "5.0.0-alpha.2", + "version": "5.0.0-alpha.3", "author": "Salesforce Code Analyzer Team", "bugs": "https://github.com/forcedotcom/sfdx-scanner/issues", "dependencies": { "@oclif/core": "^3.3.2", - "@salesforce/code-analyzer-core": "^0.13.2", - "@salesforce/code-analyzer-engine-api": "0.10.0", - "@salesforce/code-analyzer-eslint-engine": "0.10.0", - "@salesforce/code-analyzer-pmd-engine": "0.10.1", - "@salesforce/code-analyzer-regex-engine": "0.10.0", - "@salesforce/code-analyzer-retirejs-engine": "0.10.0", + "@salesforce/code-analyzer-core": "0.14.1", + "@salesforce/code-analyzer-engine-api": "0.11.1", + "@salesforce/code-analyzer-eslint-engine": "0.11.1", + "@salesforce/code-analyzer-pmd-engine": "0.11.1", + "@salesforce/code-analyzer-regex-engine": "0.11.1", + "@salesforce/code-analyzer-retirejs-engine": "0.11.1", "@salesforce/core": "^5", "@salesforce/sf-plugins-core": "^5.0.4", "@salesforce/ts-types": "^2.0.9", diff --git a/smoke-tests/smoke-test-generator.js b/smoke-tests/smoke-test-generator.js index eb9190c2c..954ed7e77 100644 --- a/smoke-tests/smoke-test-generator.js +++ b/smoke-tests/smoke-test-generator.js @@ -1,4 +1,5 @@ const fs = require('fs'); +const path = require('path'); console.log('Switching to smoke test directory'); process.chdir(__dirname); @@ -13,7 +14,7 @@ function generateScriptHeader(isBash) { // All scripts should start with the same boilerplate disclaimer. header += `${cmt} Auto-generated on ${new Date(Date.now()).toDateString()} -${cmt} This script WILL EVENTUALLY run a smoke test of the entire plugin by running a series of commands that collectively +${cmt} This script performs a smoke test of the entire plugin by running a series of commands that collectively ${cmt} hit a vertical slice of all major features. If they all succeed, then we can reasonably assume that the plugin is ${cmt} approximately stable. ${cmt} DO NOT EDIT THIS SCRIPT DIRECTLY! INSTEAD, MAKE CHANGES IN ./smoke-tests/smoke-test-generator.js AND RERUN THAT @@ -31,11 +32,87 @@ ${cmt} SCRIPT FROM THE PROJECT ROOT!\n`; } function generateScriptBody(isBash, delim) { + const exeName = isBash ? '$EXE_NAME' : '%EXE_NAME%'; + + const commands = [ - // Log an explainer that since we're in the Alpha stage, we don't have a fully fleshed out smoke test. - `echo "At this point in the alpha, the smoke tests are no-ops and it is fine."` - ] + // Log a header. + `echo "====== SETUP FOR SMOKE TESTS ======"`, + // Delete the smoke test result directory if it already exists + `echo "====== Delete a a pre-existing smoke-test-results directory ======"`, + isBash ? 'rm -rf smoke-test-results' : 'if exist smoke-test-results rmdir /s /q smoke-test-results || exit /b 1', + // Create the output directory + `echo "====== Create smoke-test-results directory ======"`, + isBash ? 'mkdir -p smoke-test-results' : 'if not exist smoke-test-results mkdir smoke-test-results || exit /b 1', + `\n`, + `echo "====== SMOKE TESTS FOR CONFIG COMMAND ======"`, + // Show the default configuration for all engines + `echo "====== Show default config for all engines ======"`, + `${exeName} code-analyzer config`, + // Show the default configuration for only one engine + `echo "====== Show default config for PMD only ======"`, + `${exeName} code-analyzer config -r pmd`, + // Write the default config for PMD to a file + `echo "====== Write PMD's default config to a file ======"`, + `${exeName} code-analyzer config -r pmd -f ${path.join('.', 'smoke-test-results', 'pmd-only-config.yml')}`, + // Show the configuration from the config file we just created + `echo "====== Show configuration from last step's output file ======"`, + `${exeName} code-analyzer config -c ${path.join('.', 'smoke-test-results', 'pmd-only-config.yml')}`, + `echo "====== Show configuration from pre-existing config file ======"`, + `${exeName} code-analyzer config -c ${path.join('.', 'smoke-tests', 'test-data', 'config-files', 'existing-config.yml')}`, + `\n`, + `echo "====== SMOKE TESTS FOR RULES COMMAND ======"`, + // List all rules + `echo "====== List all rules ======"`, + `${exeName} code-analyzer rules`, + // List only rules from ESLint + `echo "====== List ESLint rules only ======"`, + `${exeName} code-analyzer rules -r eslint`, + // List only rules from RetireJS + `echo "====== List RetireJS rules only ======"`, + `${exeName} code-analyzer rules -r retire-js`, + // List only rules that are relevant to a provided workspace + `echo "====== List rules relevant to apex-only workspace ======"`, + `${exeName} code-analyzer rules -w ${path.join('.', 'smoke-tests', 'test-data', 'workspace-with-apex-files')}`, + // List only rules that match nonsensical selector (i.e., list no rules) + `echo "====== List rules matching a nonsensical selector (i.e. list no rules) ======"`, + `${exeName} code-analyzer rules -r asdfasdfasdf`, + // List one rule using a config with overrides + `echo "====== List rule overridden in config file ======"`, + `${exeName} code-analyzer rules -r no-unsafe-assignment -c ${path.join('.', 'smoke-tests', 'test-data', 'config-files', 'existing-config.yml')}`, + '\n', + `echo "====== SMOKE TESTS FOR RUN COMMAND ======"`, + // Run all rules against a folder + `echo "====== Run all rules against a folder ======"`, + `${exeName} code-analyzer run -w ${path.join('.', 'smoke-tests', 'test-data', 'workspace-with-mixed-files')}`, + // Run all rules against a file + `echo "====== Run all rules against a file ======"`, + `${exeName} code-analyzer run -w ${path.join('.', 'smoke-tests', 'test-data', 'workspace-with-mixed-files', 'my-script.ts')}`, + // Run all rules against a folder and write the output to some files + `echo "====== Run all rules against a folder and write to outfiles ======"`, + `${exeName} code-analyzer run -w ${path.join('.', 'smoke-tests', 'test-data', 'workspace-with-apex-files')} -f ${path.join('.', 'smoke-test-results', 'outfile.json')} -f ${path.join('.', 'smoke-test-results', 'outfile.html')}`, + // Run a selection of rules against a folder + `echo "====== Run a selection of rules against a folder ======"`, + `${exeName} code-analyzer run -r regex -w ${path.join('.', 'smoke-tests', 'test-data', 'workspace-with-mixed-files')}`, + // Run rules using a config file with overrides + `echo "====== Run rules using a config file with overrides ======"`, + `${exeName} code-analyzer run -c ${path.join('.', 'smoke-tests', 'test-data', 'config-files', 'existing-config.yml')} -w ${path.join('.', 'smoke-tests', 'test-data', 'workspace-with-mixed-files')}`, + '\n', + `echo "====== CONCLUSION ======"`, + `echo "If you are seeing this message, the smoke tests ran successfully, and all is (approximately) well"` + ]; + + // In a cmd script, you need to prepend plugin commands with "call" in order to make sure that the script continues, + // and you need to postfix it with another snippet to make it actually exist when an error is encountered. + if (!isBash) { + for (let i = 0; i < commands.length; i++) { + if (commands[i].startsWith(exeName)) { + commands[i] = `call ${commands[i]} || exit /b 1` + } + } + } + // Combine the commands and return the script body. return commands.join('\n'); } diff --git a/smoke-tests/smoke-test.cmd b/smoke-tests/smoke-test.cmd index 0e5350764..7cead315d 100755 --- a/smoke-tests/smoke-test.cmd +++ b/smoke-tests/smoke-test.cmd @@ -1,9 +1,58 @@ @echo off -REM Auto-generated on Tue Aug 27 2024 -REM This script WILL EVENTUALLY run a smoke test of the entire plugin by running a series of commands that collectively +REM Auto-generated on Fri Oct 18 2024 +REM This script performs a smoke test of the entire plugin by running a series of commands that collectively REM hit a vertical slice of all major features. If they all succeed, then we can reasonably assume that the plugin is REM approximately stable. REM DO NOT EDIT THIS SCRIPT DIRECTLY! INSTEAD, MAKE CHANGES IN ./smoke-tests/smoke-test-generator.js AND RERUN THAT REM SCRIPT FROM THE PROJECT ROOT! SET EXE_NAME=%1 -echo "At this point in the alpha, the smoke tests are no-ops and it is fine." \ No newline at end of file +echo "====== SETUP FOR SMOKE TESTS ======" +echo "====== Delete a a pre-existing smoke-test-results directory ======" +if exist smoke-test-results rmdir /s /q smoke-test-results || exit /b 1 +echo "====== Create smoke-test-results directory ======" +if not exist smoke-test-results mkdir smoke-test-results || exit /b 1 + + +echo "====== SMOKE TESTS FOR CONFIG COMMAND ======" +echo "====== Show default config for all engines ======" +call %EXE_NAME% code-analyzer config || exit /b 1 +echo "====== Show default config for PMD only ======" +call %EXE_NAME% code-analyzer config -r pmd || exit /b 1 +echo "====== Write PMD's default config to a file ======" +call %EXE_NAME% code-analyzer config -r pmd -f smoke-test-results/pmd-only-config.yml || exit /b 1 +echo "====== Show configuration from last step's output file ======" +call %EXE_NAME% code-analyzer config -c smoke-test-results/pmd-only-config.yml || exit /b 1 +echo "====== Show configuration from pre-existing config file ======" +call %EXE_NAME% code-analyzer config -c smoke-tests/test-data/config-files/existing-config.yml || exit /b 1 + + +echo "====== SMOKE TESTS FOR RULES COMMAND ======" +echo "====== List all rules ======" +call %EXE_NAME% code-analyzer rules || exit /b 1 +echo "====== List ESLint rules only ======" +call %EXE_NAME% code-analyzer rules -r eslint || exit /b 1 +echo "====== List RetireJS rules only ======" +call %EXE_NAME% code-analyzer rules -r retire-js || exit /b 1 +echo "====== List rules relevant to apex-only workspace ======" +call %EXE_NAME% code-analyzer rules -w smoke-tests/test-data/workspace-with-apex-files || exit /b 1 +echo "====== List rules matching a nonsensical selector (i.e. list no rules) ======" +call %EXE_NAME% code-analyzer rules -r asdfasdfasdf || exit /b 1 +echo "====== List rule overridden in config file ======" +call %EXE_NAME% code-analyzer rules -r no-unsafe-assignment -c smoke-tests/test-data/config-files/existing-config.yml || exit /b 1 + + +echo "====== SMOKE TESTS FOR RUN COMMAND ======" +echo "====== Run all rules against a folder ======" +call %EXE_NAME% code-analyzer run -w smoke-tests/test-data/workspace-with-mixed-files || exit /b 1 +echo "====== Run all rules against a file ======" +call %EXE_NAME% code-analyzer run -w smoke-tests/test-data/workspace-with-mixed-files/my-script.ts || exit /b 1 +echo "====== Run all rules against a folder and write to outfiles ======" +call %EXE_NAME% code-analyzer run -w smoke-tests/test-data/workspace-with-apex-files -f smoke-test-results/outfile.json -f smoke-test-results/outfile.html || exit /b 1 +echo "====== Run a selection of rules against a folder ======" +call %EXE_NAME% code-analyzer run -r regex -w smoke-tests/test-data/workspace-with-mixed-files || exit /b 1 +echo "====== Run rules using a config file with overrides ======" +call %EXE_NAME% code-analyzer run -c smoke-tests/test-data/config-files/existing-config.yml -w smoke-tests/test-data/workspace-with-mixed-files || exit /b 1 + + +echo "====== CONCLUSION ======" +echo "If you are seeing this message, the smoke tests ran successfully, and all is (approximately) well" \ No newline at end of file diff --git a/smoke-tests/smoke-test.sh b/smoke-tests/smoke-test.sh index 6aa7f0639..1adf98b10 100755 --- a/smoke-tests/smoke-test.sh +++ b/smoke-tests/smoke-test.sh @@ -1,10 +1,59 @@ #!/bin/bash -# Auto-generated on Tue Aug 27 2024 -# This script WILL EVENTUALLY run a smoke test of the entire plugin by running a series of commands that collectively +# Auto-generated on Fri Oct 18 2024 +# This script performs a smoke test of the entire plugin by running a series of commands that collectively # hit a vertical slice of all major features. If they all succeed, then we can reasonably assume that the plugin is # approximately stable. # DO NOT EDIT THIS SCRIPT DIRECTLY! INSTEAD, MAKE CHANGES IN ./smoke-tests/smoke-test-generator.js AND RERUN THAT # SCRIPT FROM THE PROJECT ROOT! set -e EXE_NAME=$1 -echo "At this point in the alpha, the smoke tests are no-ops and it is fine." \ No newline at end of file +echo "====== SETUP FOR SMOKE TESTS ======" +echo "====== Delete a a pre-existing smoke-test-results directory ======" +rm -rf smoke-test-results +echo "====== Create smoke-test-results directory ======" +mkdir -p smoke-test-results + + +echo "====== SMOKE TESTS FOR CONFIG COMMAND ======" +echo "====== Show default config for all engines ======" +$EXE_NAME code-analyzer config +echo "====== Show default config for PMD only ======" +$EXE_NAME code-analyzer config -r pmd +echo "====== Write PMD's default config to a file ======" +$EXE_NAME code-analyzer config -r pmd -f smoke-test-results/pmd-only-config.yml +echo "====== Show configuration from last step's output file ======" +$EXE_NAME code-analyzer config -c smoke-test-results/pmd-only-config.yml +echo "====== Show configuration from pre-existing config file ======" +$EXE_NAME code-analyzer config -c smoke-tests/test-data/config-files/existing-config.yml + + +echo "====== SMOKE TESTS FOR RULES COMMAND ======" +echo "====== List all rules ======" +$EXE_NAME code-analyzer rules +echo "====== List ESLint rules only ======" +$EXE_NAME code-analyzer rules -r eslint +echo "====== List RetireJS rules only ======" +$EXE_NAME code-analyzer rules -r retire-js +echo "====== List rules relevant to apex-only workspace ======" +$EXE_NAME code-analyzer rules -w smoke-tests/test-data/workspace-with-apex-files +echo "====== List rules matching a nonsensical selector (i.e. list no rules) ======" +$EXE_NAME code-analyzer rules -r asdfasdfasdf +echo "====== List rule overridden in config file ======" +$EXE_NAME code-analyzer rules -r no-unsafe-assignment -c smoke-tests/test-data/config-files/existing-config.yml + + +echo "====== SMOKE TESTS FOR RUN COMMAND ======" +echo "====== Run all rules against a folder ======" +$EXE_NAME code-analyzer run -w smoke-tests/test-data/workspace-with-mixed-files +echo "====== Run all rules against a file ======" +$EXE_NAME code-analyzer run -w smoke-tests/test-data/workspace-with-mixed-files/my-script.ts +echo "====== Run all rules against a folder and write to outfiles ======" +$EXE_NAME code-analyzer run -w smoke-tests/test-data/workspace-with-apex-files -f smoke-test-results/outfile.json -f smoke-test-results/outfile.html +echo "====== Run a selection of rules against a folder ======" +$EXE_NAME code-analyzer run -r regex -w smoke-tests/test-data/workspace-with-mixed-files +echo "====== Run rules using a config file with overrides ======" +$EXE_NAME code-analyzer run -c smoke-tests/test-data/config-files/existing-config.yml -w smoke-tests/test-data/workspace-with-mixed-files + + +echo "====== CONCLUSION ======" +echo "If you are seeing this message, the smoke tests ran successfully, and all is (approximately) well" \ No newline at end of file diff --git a/smoke-tests/test-data/config-files/existing-config.yml b/smoke-tests/test-data/config-files/existing-config.yml new file mode 100644 index 000000000..a0999c777 --- /dev/null +++ b/smoke-tests/test-data/config-files/existing-config.yml @@ -0,0 +1,20 @@ + +engines: + regex: + custom_rules: + NoTodos: + regex: "/todo/gi" + file_extensions: + - ".ts" + description: "detects todos" + tags: ["recommended", "beep"] + +rules: + pmd: + WhileLoopsMustUseBraces: + severity: HIGH + tags: + - CodeStyle + - Recommended + - apexLanguage + - Beep diff --git a/smoke-tests/test-data/workspace-with-apex-files/MyClass1.cls b/smoke-tests/test-data/workspace-with-apex-files/MyClass1.cls new file mode 100644 index 000000000..0976d0f2b --- /dev/null +++ b/smoke-tests/test-data/workspace-with-apex-files/MyClass1.cls @@ -0,0 +1,7 @@ +public class MyClass1 { + public static void doSomeQueries(string[] accNames) { + for (string accName : accNames) { + Account acc = [SELECT Name FROM Account LIMIT 1]; + } + } +} diff --git a/smoke-tests/test-data/workspace-with-apex-files/MyClass2.cls b/smoke-tests/test-data/workspace-with-apex-files/MyClass2.cls new file mode 100644 index 000000000..18b90a57e --- /dev/null +++ b/smoke-tests/test-data/workspace-with-apex-files/MyClass2.cls @@ -0,0 +1,5 @@ +public class MyClass2 { + public static void doSomeDebugging() { + System.debug(LoggingLevel.ERROR, 'aasdfasdfasdasdf'); + } +} diff --git a/smoke-tests/test-data/workspace-with-apex-files/MyClass3.cls b/smoke-tests/test-data/workspace-with-apex-files/MyClass3.cls new file mode 100644 index 000000000..ab168d61b --- /dev/null +++ b/smoke-tests/test-data/workspace-with-apex-files/MyClass3.cls @@ -0,0 +1,7 @@ +public class MyClass3 { + public static void declareUnusedVariables() { + Account acc = null; + boolean b = false; + string s = 'asdfasdfasdf'; + } +} diff --git a/smoke-tests/test-data/workspace-with-mixed-files/MyClass1.cls b/smoke-tests/test-data/workspace-with-mixed-files/MyClass1.cls new file mode 100644 index 000000000..0976d0f2b --- /dev/null +++ b/smoke-tests/test-data/workspace-with-mixed-files/MyClass1.cls @@ -0,0 +1,7 @@ +public class MyClass1 { + public static void doSomeQueries(string[] accNames) { + for (string accName : accNames) { + Account acc = [SELECT Name FROM Account LIMIT 1]; + } + } +} diff --git a/smoke-tests/test-data/workspace-with-mixed-files/my-script.ts b/smoke-tests/test-data/workspace-with-mixed-files/my-script.ts new file mode 100644 index 000000000..c52655138 --- /dev/null +++ b/smoke-tests/test-data/workspace-with-mixed-files/my-script.ts @@ -0,0 +1,6 @@ +// TODO This is just something to trip a Regex Rule looking for this kind of statement + +console.log('asdfasdfasdsasdf'); +const s: string = 'asdfasdf'; + +console.log(`s is ${s}`); diff --git a/src/commands/code-analyzer/config.ts b/src/commands/code-analyzer/config.ts index f7634059b..04459fdeb 100644 --- a/src/commands/code-analyzer/config.ts +++ b/src/commands/code-analyzer/config.ts @@ -2,6 +2,7 @@ import {Flags, SfCommand} from '@salesforce/sf-plugins-core'; import {ConfigAction, ConfigDependencies} from '../../lib/actions/ConfigAction'; import {ConfigFileWriter} from '../../lib/writers/ConfigWriter'; import {ConfigStyledYamlViewer} from '../../lib/viewers/ConfigViewer'; +import {ConfigActionSummaryViewer} from '../../lib/viewers/ActionSummaryViewer'; import {CodeAnalyzerConfigFactoryImpl} from '../../lib/factories/CodeAnalyzerConfigFactory'; import {EnginePluginsFactoryImpl} from '../../lib/factories/EnginePluginsFactory'; import {BundleName, getMessage, getMessages} from '../../lib/messages'; @@ -70,10 +71,11 @@ export default class ConfigCommand extends SfCommand implements Displayabl logEventListeners: [new LogEventDisplayer(uxDisplay)], progressEventListeners: [new RuleSelectionProgressSpinner(uxDisplay)], modelGenerator: modelGeneratorFunction, + actionSummaryViewer: new ConfigActionSummaryViewer(uxDisplay), viewer: new ConfigStyledYamlViewer(uxDisplay) }; if (outputFile) { - dependencies.writer = ConfigFileWriter.fromFile(outputFile); + dependencies.writer = ConfigFileWriter.fromFile(outputFile, uxDisplay); } return dependencies; } diff --git a/src/lib/Display.ts b/src/lib/Display.ts index 2e1bfbd3b..b7f002e82 100644 --- a/src/lib/Display.ts +++ b/src/lib/Display.ts @@ -33,6 +33,12 @@ export interface Display { */ displayTable(data: R[], columns: Ux.Table.Columns): void; + /** + * Prompt the user to confirm that the described action should be carried out, and block until they respond (or a timeout + * elapses). Resolves to {@code true} if the user confirms, or {@code false} if they don't. + */ + confirm(message: string): Promise; + spinnerStart(msg: string, status?: string): void; spinnerUpdate(status: string): void; @@ -71,6 +77,10 @@ export class UxDisplay implements Display { this.displayable.table(data, columns); } + public confirm(message: string): Promise { + return this.displayable.confirm(message); + } + public spinnerStart(msg: string, status?: string): void { this.spinner.start(msg, status); } @@ -100,6 +110,9 @@ export interface Displayable { // Output message to stdout at log-level (non-blocking) only when "--json" flag is not present. [Implemented by Command] log(message?: string): void; + // Prompt the user to confirm that the described action should be performed. [Implemented by SfCommand] + confirm(message: string): Promise; + // Output table to stdout only when "--json" flag is not present. [Implemented by SfCommand] table(data: R[], columns: Ux.Table.Columns, options?: Ux.Table.Options): void; } diff --git a/src/lib/actions/ConfigAction.ts b/src/lib/actions/ConfigAction.ts index ea8eefa95..e588334ae 100644 --- a/src/lib/actions/ConfigAction.ts +++ b/src/lib/actions/ConfigAction.ts @@ -7,6 +7,7 @@ import {ConfigViewer} from '../viewers/ConfigViewer'; import {createWorkspace} from '../utils/WorkspaceUtil'; import {LogEventListener, LogEventLogger} from '../listeners/LogEventListener'; import {ProgressEventListener} from '../listeners/ProgressEventListener'; +import {ConfigActionSummaryViewer} from '../viewers/ActionSummaryViewer'; import {ConfigModel, ConfigModelGeneratorFunction, ConfigContext} from '../models/ConfigModel'; export type ConfigDependencies = { @@ -16,11 +17,13 @@ export type ConfigDependencies = { logEventListeners: LogEventListener[]; progressEventListeners: ProgressEventListener[]; writer?: ConfigWriter; + actionSummaryViewer: ConfigActionSummaryViewer; viewer: ConfigViewer; }; export type ConfigInput = { 'config-file'?: string; + 'output-file'?: string; 'rule-selector': string[]; workspace?: string[]; }; @@ -38,7 +41,8 @@ export class ConfigAction { const defaultConfig: CodeAnalyzerConfig = CodeAnalyzerConfig.withDefaults(); // We always add a Logger Listener to the appropriate listeners list, because we should always be logging. - const logEventLogger: LogEventLogger = new LogEventLogger(await LogFileWriter.fromConfig(userConfig)); + const logFileWriter: LogFileWriter = await LogFileWriter.fromConfig(userConfig); + const logEventLogger: LogEventLogger = new LogEventLogger(logFileWriter); this.dependencies.logEventListeners.push(logEventLogger); // The User's config produces one Core. @@ -118,7 +122,10 @@ export class ConfigAction { const configModel: ConfigModel = this.dependencies.modelGenerator(relevantEngines, userConfigContext, defaultConfigContext); this.dependencies.viewer.view(configModel); - this.dependencies.writer?.write(configModel); + const fileWritten: boolean = this.dependencies.writer + ? await this.dependencies.writer.write(configModel) + : false; + this.dependencies.actionSummaryViewer.view(logFileWriter.getLogDestination(), fileWritten ? input['output-file'] : undefined); return Promise.resolve(); } diff --git a/src/lib/actions/RunAction.ts b/src/lib/actions/RunAction.ts index e4fc4018c..43780761c 100644 --- a/src/lib/actions/RunAction.ts +++ b/src/lib/actions/RunAction.ts @@ -80,7 +80,7 @@ export class RunAction { this.dependencies.logEventListeners.forEach(listener => listener.stopListening()); this.dependencies.writer.write(results); this.dependencies.resultsViewer.view(results); - this.dependencies.runSummaryViewer.view(results, config, input['output-file']); + this.dependencies.runSummaryViewer.view(results, logWriter.getLogDestination(), input['output-file']); const thresholdValue = input['severity-threshold']; if (thresholdValue) { diff --git a/src/lib/listeners/ProgressEventListener.ts b/src/lib/listeners/ProgressEventListener.ts index 7a46307db..a23c7e6c2 100644 --- a/src/lib/listeners/ProgressEventListener.ts +++ b/src/lib/listeners/ProgressEventListener.ts @@ -31,20 +31,20 @@ abstract class ProgressSpinner { return; } this.startTime = Date.now(); - this.display.spinnerStart(action, this.createSpinnerStatus()); + this.display.spinnerStart(action, this.createInProgressSpinnerStatus()); if (this.tickTime > 0) { // `setInterval` means the callback will be called repeatedly. This allows us to automatically refresh the // spinner on a regular interval even if nothing happened. This is primarily useful for incrementing a timer, // so the user doesn't feel like the system is frozen. this.tickIntervalId = setInterval(() => { - this.display.spinnerUpdate(this.createSpinnerStatus()); + this.display.spinnerUpdate(this.createInProgressSpinnerStatus()); }, this.tickTime); } this._isSpinning = true; } protected updateSpinner(): void { - this.display.spinnerUpdate(this.createSpinnerStatus()); + this.display.spinnerUpdate(this.createInProgressSpinnerStatus()); } protected stopSpinning(): void { @@ -52,7 +52,7 @@ abstract class ProgressSpinner { clearInterval(this.tickIntervalId); } if (this._isSpinning) { - this.display.spinnerStop(getMessage(BundleName.ProgressEventListener, 'base-spinner.done')); + this.display.spinnerStop(this.createFinishedSpinnerStatus()); this._isSpinning = false; } } @@ -69,7 +69,9 @@ abstract class ProgressSpinner { return Math.floor((Date.now() - this.startTime) / 1000); } - protected abstract createSpinnerStatus(): string; + protected abstract createInProgressSpinnerStatus(): string; + + protected abstract createFinishedSpinnerStatus(): string; } export class RuleSelectionProgressSpinner extends ProgressSpinner implements ProgressEventListener { @@ -128,12 +130,17 @@ export class RuleSelectionProgressSpinner extends ProgressSpinner implements Pro } } - protected createSpinnerStatus(): string { + protected createInProgressSpinnerStatus(): string { const aggregateCompletionPercentage: number = Math.floor(this.completionPercentages.reduce((prevTotal, next) => prevTotal + next, 0) / this.completionPercentages.length); - return getMessage(BundleName.ProgressEventListener, 'selection-spinner.status', + return getMessage(BundleName.ProgressEventListener, 'selection-spinner.in-progress-status', [[...this.engineNames.keys()].join(', '), aggregateCompletionPercentage, this.getSecondsSpentSpinning()]); } + + protected createFinishedSpinnerStatus(): string { + return getMessage(BundleName.ProgressEventListener, 'selection-spinner.finished-status', + [[...this.engineNames.keys()].join(', ')]); + } } export class EngineRunProgressSpinner extends ProgressSpinner implements ProgressEventListener { @@ -189,7 +196,7 @@ export class EngineRunProgressSpinner extends ProgressSpinner implements Progres this.updateSpinner(); } - protected createSpinnerStatus(): string { + protected createInProgressSpinnerStatus(): string { const secondsRunning = this.getSecondsSpentSpinning(); const totalEngines = this.progressMap.size; let unfinishedEngines = 0; @@ -205,4 +212,9 @@ export class EngineRunProgressSpinner extends ProgressSpinner implements Progres ...engineLines ].join('\n'); } + + protected createFinishedSpinnerStatus(): string { + return getMessage(BundleName.ProgressEventListener, 'execution-spinner.finished-status', + [[...this.progressMap.keys()].join(', ')]); + } } diff --git a/src/lib/messages.ts b/src/lib/messages.ts index 6d7edc4cb..218091880 100644 --- a/src/lib/messages.ts +++ b/src/lib/messages.ts @@ -5,6 +5,7 @@ import {Tokens} from '@salesforce/core/lib/messages'; Messages.importMessagesDirectory(__dirname); export enum BundleName { + ActionSummaryViewer = 'action-summary-viewer', ConfigCommand = 'config-command', ConfigModel = 'config-model', ConfigWriter = 'config-writer', diff --git a/src/lib/models/ConfigModel.ts b/src/lib/models/ConfigModel.ts index 5f151d025..479526d8e 100644 --- a/src/lib/models/ConfigModel.ts +++ b/src/lib/models/ConfigModel.ts @@ -1,4 +1,4 @@ -import * as yaml from 'js-yaml'; +import {dump as yamlDump} from 'js-yaml'; import { CodeAnalyzer, CodeAnalyzerConfig, @@ -9,6 +9,7 @@ import { } from '@salesforce/code-analyzer-core'; import {indent, makeGrey} from '../utils/StylingUtil'; import {BundleName, getMessage} from '../messages'; +import path from "node:path"; export enum OutputFormat { RAW_YAML = "RAW_YAML", @@ -41,9 +42,9 @@ export class AnnotatedConfigModel implements ConfigModel { toFormattedOutput(format: OutputFormat): string { // istanbul ignore else: Should be impossible if (format === OutputFormat.STYLED_YAML) { - return toYaml(this.relevantEngines, this.userContext, this.defaultContext, true); + return new StyledYamlFormatter(this.relevantEngines, this.userContext, this.defaultContext).toYaml(); } else if (format === OutputFormat.RAW_YAML) { - return toYaml(this.relevantEngines, this.userContext, this.defaultContext, false); + return new PlainYamlFormatter(this.relevantEngines, this.userContext, this.defaultContext).toYaml(); } else { throw new Error(`Unsupported`) } @@ -54,153 +55,192 @@ export class AnnotatedConfigModel implements ConfigModel { } } -function toYaml(relevantEngines: Set, userContext: ConfigContext, defaultContext: ConfigContext, styled: boolean): string { - let result: string = ''; +abstract class YamlFormatter { + private readonly relevantEngines: Set; + private readonly userContext: ConfigContext; + private readonly defaultContext: ConfigContext; - // First, add the header. - const topLevelDescription: ConfigDescription = CodeAnalyzerConfig.getConfigDescription(); - result += `${toYamlComment(getYamlSectionWrapper(), styled)}\n` - result += `${toYamlComment(topLevelDescription.overview!, styled)}\n`; - result += `${toYamlComment(getYamlSectionWrapper(), styled)}\n` - result += '\n'; + protected constructor(relevantEngines: Set, userContext: ConfigContext, defaultContext: ConfigContext) { + this.relevantEngines = relevantEngines; + this.userContext = userContext; + this.defaultContext = defaultContext; + } - // Next add `config_root` - result += `${toYamlComment(topLevelDescription.fieldDescriptions!.config_root, styled)}\n`; - result += `config_root: ${toYamlWithDerivedValueComment(userContext.config.getConfigRoot(), process.cwd(), styled)}\n`; - result += '\n'; + protected abstract toYamlComment(commentText: string): string - // Then `log_folder' - result += `${toYamlComment(topLevelDescription.fieldDescriptions!.log_folder, styled)}\n`; - result += `log_folder: ${toYamlWithDerivedValueComment(userContext.config.getLogFolder(), defaultContext.config.getLogFolder(), styled)}\n`; - result += '\n'; + private toYamlSectionHeadingComment(commentText: string): string { + const horizontalLine: string = '='.repeat(70); + return this.toYamlComment(`${horizontalLine}\n${commentText}\n${horizontalLine}`); + } - // Then the `rules` section - result += `${toYamlComment(topLevelDescription.fieldDescriptions!.rules, styled)}\n`; - result += `${toYamlRules(userContext, defaultContext, styled)}\n`; - result += '\n'; + private toYamlUncheckedField(fieldName: string, fieldValue: unknown): string { + return yamlDump({[fieldName]: fieldValue}).trim(); + } - // Then the `engines` section - result += `${toYamlComment(topLevelDescription.fieldDescriptions!.engines, styled)}\n`; - result += `${toYamlEngines(relevantEngines, userContext, defaultContext, styled)}`; + private toYamlUncheckedFieldWithInlineComment(fieldName: string, fieldValue: unknown, commentText: string): string { + const yamlCode: string = this.toYamlUncheckedField(fieldName, fieldValue); + const comment: string = this.toYamlComment(commentText); + return yamlCode.replace(/(\r?\n|$)/, ` ${comment}$1`); + } - return result; -} + private toYamlField(fieldName: string, userValue: unknown, defaultValue: unknown): string { + if (looksLikeAPathValue(userValue) && userValue === defaultValue) { + // We special handle a path value when it is equal to the default value, making it equal null because + // chances are it is a derived file or folder value based on the specific environment that we do not want to + // actually want to hard code since checking in the config to CI/CD system may create a different value + const commentText: string = getMessage(BundleName.ConfigModel, 'template.last-calculated-as', [JSON.stringify(userValue)]); + return this.toYamlUncheckedFieldWithInlineComment(fieldName, null, commentText); + } else if (JSON.stringify(userValue) === JSON.stringify(defaultValue)) { + return this.toYamlUncheckedField(fieldName, userValue); + } -function getYamlSectionWrapper(): string { - return '='.repeat(70); -} + userValue = replaceAbsolutePathsWithRelativePathsWherePossible(userValue, this.userContext.config.getConfigRoot() + path.sep); -function toYamlComment(comment: string, styled: boolean, indentLength: number = 0): string { - // At the start of the string, and at the start of every line... - return comment.replace(/^.*/gm, s => { - // ...Inject a `# ` at the start to make it a comment... - let commented = `# ${s}`; - // ...Apply styling if requested... - commented = styled ? makeGrey(commented) : commented; - // ...And indent to the requested amount - return indent(commented, indentLength); - }); -} + const commentText: string = getMessage(BundleName.ConfigModel, 'template.modified-from', [JSON.stringify(defaultValue)]); + return this.toYamlUncheckedFieldWithInlineComment(fieldName, userValue, commentText); + } -function toYamlWithDerivedValueComment(userValue: string, defaultValue: string, styled: boolean): string { - if (userValue == null || userValue === defaultValue) { - const comment = getMessage(BundleName.ConfigModel, 'template.last-calculated-as', [defaultValue]); - return `null ${toYamlComment(comment, styled)}`; - } else { - return `${userValue}`; + toYaml(): string { + const topLevelDescription: ConfigDescription = CodeAnalyzerConfig.getConfigDescription(); + return this.toYamlSectionHeadingComment(topLevelDescription.overview!) + '\n' + + '\n' + + this.toYamlComment(topLevelDescription.fieldDescriptions!.config_root) + '\n' + + this.toYamlField('config_root', this.userContext.config.getConfigRoot(), this.defaultContext.config.getConfigRoot()) + '\n' + + '\n' + + this.toYamlComment(topLevelDescription.fieldDescriptions!.log_folder) + '\n' + + this.toYamlField('log_folder', this.userContext.config.getLogFolder(), this.defaultContext.config.getLogFolder()) + '\n' + + '\n' + + this.toYamlComment(topLevelDescription.fieldDescriptions!.rules) + '\n' + + this.toYamlRuleOverrides() + '\n' + + '\n' + + this.toYamlComment(topLevelDescription.fieldDescriptions!.engines) + '\n' + + this.toYamlEngineOverrides() + '\n' + + '\n' + + this.toYamlSectionHeadingComment(getMessage(BundleName.ConfigModel, 'template.common.end-of-config')) + '\n'; } -} -function toYamlRules(userContext: ConfigContext, defaultContext: ConfigContext, styled: boolean): string { - if (userContext.rules.getCount() === 0) { - const comment = getMessage(BundleName.ConfigModel, 'template.yaml.no-rules-selected'); - return `rules: {} ${toYamlComment(comment, styled)}`; - } - let results: string = 'rules:\n'; - for (const engineName of userContext.rules.getEngineNames()) { - results += `\n${toYamlComment(getYamlSectionWrapper(), styled, 2)}\n`; - results += `${toYamlComment(getMessage(BundleName.ConfigModel, 'template.rule-overrides-section', [engineName.toUpperCase()]), styled, 2)}\n`; - results += `${toYamlComment(getYamlSectionWrapper(), styled, 2)}\n`; - results += indent(`${engineName}:`, 2) + '\n'; - for (const userRule of userContext.rules.getRulesFor(engineName)) { - const defaultRule = getDefaultRule(defaultContext, engineName, userRule.getName()); - results += indent(toYamlRule(userRule, defaultRule, styled), 4); + private toYamlRuleOverrides(): string { + if (this.userContext.rules.getCount() === 0) { + const commentText: string = getMessage(BundleName.ConfigModel, 'template.yaml.no-rules-selected'); + return `rules: {} ${this.toYamlComment(commentText)}`; } - } - return results; -} -function getDefaultRule(defaultContext: ConfigContext, engineName: string, ruleName: string): Rule|null { - try { - return defaultContext.rules.getRule(engineName, ruleName); - } catch (e) { - // istanbul ignore next - return null; + let yamlCode: string = 'rules:\n'; + for (const engineName of this.userContext.rules.getEngineNames()) { + yamlCode += '\n'; + yamlCode += indent(this.toYamlRuleOverridesForEngine(engineName), 2) + '\n'; + } + return yamlCode.trimEnd(); } -} - -function toYamlRule(userRule: Rule, defaultRule: Rule|null, styled: boolean): string { - const ruleName: string = userRule.getName(); - const userSeverity: SeverityLevel = userRule.getSeverityLevel(); - const userTags: string[] = userRule.getTags(); - - let severityYaml = yaml.dump({severity: userSeverity}); - let tagsYaml = yaml.dump({tags: userTags}); - if (defaultRule != null) { - const defaultSeverity: SeverityLevel = defaultRule.getSeverityLevel(); - const defaultTagsJson: string = JSON.stringify(defaultRule.getTags()); - - if (userSeverity !== defaultSeverity) { - const comment = getMessage(BundleName.ConfigModel, 'template.modified-from', [defaultSeverity]); - severityYaml = severityYaml.replace('\n', ` ${toYamlComment(comment, styled)}\n`); + private toYamlRuleOverridesForEngine(engineName: string): string { + const engineConfigHeader: string = getMessage(BundleName.ConfigModel, 'template.rule-overrides-section', + [engineName.toUpperCase()]); + let yamlCode: string = this.toYamlSectionHeadingComment(engineConfigHeader) + '\n'; + yamlCode += `${engineName}:\n`; + for (const userRule of this.userContext.rules.getRulesFor(engineName)) { + const defaultRule: Rule|null = this.getDefaultRuleFor(engineName, userRule.getName()); + yamlCode += indent(this.toYamlRuleOverridesForRule(userRule, defaultRule), 2) + '\n'; } + return yamlCode.trimEnd(); + } - if (JSON.stringify(userTags) !== defaultTagsJson) { - const comment = getMessage(BundleName.ConfigModel, 'template.modified-from', [defaultTagsJson]); - // The YAML spec requires a trailing newline, so we know that there's at least one newline somewhere in the - // string. If we inject a comment before the first newline we encounter, then it will look clean. - tagsYaml = tagsYaml.replace('\n', ` ${toYamlComment(comment, styled)}\n`); + private getDefaultRuleFor(engineName: string, ruleName: string): Rule|null { + try { + return this.defaultContext.rules.getRule(engineName, ruleName); + } catch (e) { + // istanbul ignore next + return null; } } - return `"${ruleName}":\n${indent(severityYaml, 2)}${indent(tagsYaml, 2)}`; -} -function toYamlEngines(relevantEngines: Set, userContext: ConfigContext, defaultContext: ConfigContext, styled: boolean): string { - if (relevantEngines.size === 0) { - const comment = getMessage(BundleName.ConfigModel, 'template.yaml.no-engines-selected'); - return `engines: {} ${toYamlComment(comment, styled)}`; + private toYamlRuleOverridesForRule(userRule: Rule, defaultRule: Rule|null): string { + const userSeverity: SeverityLevel = userRule.getSeverityLevel(); + const userTags: string[] = userRule.getTags(); + return `"${userRule.getName()}":\n` + + indent(this.toYamlField('severity', userSeverity, defaultRule !== null ? defaultRule.getSeverityLevel() : userSeverity), 2) + '\n' + + indent(this.toYamlField('tags', userTags, defaultRule !== null ? defaultRule.getTags() : userTags), 2); } - let results: string = 'engines:\n' + private toYamlEngineOverrides(): string { + if (this.relevantEngines.size === 0) { + const commentText: string = getMessage(BundleName.ConfigModel, 'template.yaml.no-engines-selected'); + return `engines: {} ${this.toYamlComment(commentText)}`; + } - for (const engineName of relevantEngines.keys()) { - const engineConfigDescriptor = userContext.core.getEngineConfigDescription(engineName); - const userEngineConfig = userContext.core.getEngineConfig(engineName); - const defaultEngineConfig = defaultContext.core.getEngineConfig(engineName); + let yamlCode: string = 'engines:\n' + for (const engineName of this.relevantEngines.keys()) { + yamlCode += indent(this.toYamlEngineOverridesForEngine(engineName), 2) + '\n'; + } + return yamlCode.trimEnd(); + } - results += `\n${toYamlComment(getYamlSectionWrapper(), styled, 2)}\n` - // Engines are guaranteed to have an overview, even if it's just generic text. - results += `${toYamlComment(engineConfigDescriptor.overview!, styled, 2)}\n`; - results += `${toYamlComment(getYamlSectionWrapper(), styled, 2)}\n` + private toYamlEngineOverridesForEngine(engineName: string): string { + const engineConfigDescriptor = this.userContext.core.getEngineConfigDescription(engineName); + const userEngineConfig = this.userContext.core.getEngineConfig(engineName); + const defaultEngineConfig = this.defaultContext.core.getEngineConfig(engineName); - results += indent(`${engineName}:`, 2) + '\n'; + let yamlCode: string = '\n' + + this.toYamlSectionHeadingComment(engineConfigDescriptor.overview!) + '\n' + + `${engineName}:\n`; // By fiat, the field description will always include, at minimum, an entry for "disable_engine", so we can // assume that the object is not undefined. for (const configField of Object.keys(engineConfigDescriptor.fieldDescriptions!)) { const fieldDescription = engineConfigDescriptor.fieldDescriptions![configField]; - const defaultFieldValue = defaultEngineConfig[configField] ?? null; - const userFieldValue = userEngineConfig[configField] ?? defaultFieldValue; + const defaultValue = defaultEngineConfig[configField] ?? null; + const userValue = userEngineConfig[configField] ?? defaultValue; // Add a leading newline to visually break up the property from the previous one. - results += '\n' + toYamlComment(fieldDescription, styled, 4) + '\n'; - let fieldYaml = indent(`${yaml.dump({[configField]: userFieldValue})}`, 4); - if(JSON.stringify(userFieldValue) !== JSON.stringify(defaultFieldValue)) { - const comment = getMessage(BundleName.ConfigModel, 'template.modified-from', [JSON.stringify(defaultFieldValue)]); - fieldYaml = fieldYaml.replace('\n', ` ${toYamlComment(comment, styled)}\n`); - } - results += fieldYaml; + yamlCode += '\n' + + indent(this.toYamlComment(fieldDescription), 2) + '\n' + + indent(this.toYamlField(configField, userValue, defaultValue), 2) + '\n'; } + return yamlCode.trimEnd(); + } +} + +class PlainYamlFormatter extends YamlFormatter { + constructor(relevantEngines: Set, userContext: ConfigContext, defaultContext: ConfigContext) { + super(relevantEngines, userContext, defaultContext); + } + + protected toYamlComment(commentText: string): string { + return commentText.replace(/^.*/gm, s => `# ${s}`); } - return results; } +class StyledYamlFormatter extends YamlFormatter { + constructor(relevantEngines: Set, userContext: ConfigContext, defaultContext: ConfigContext) { + super(relevantEngines, userContext, defaultContext); + } + + protected toYamlComment(commentText: string): string { + return commentText.replace(/^.*/gm, s => makeGrey(`# ${s}`)); + } +} + +function looksLikeAPathValue(value: unknown) { + return typeof(value) === 'string' && !value.includes('\n') && value.includes(path.sep); +} + +function replaceAbsolutePathsWithRelativePathsWherePossible(value: unknown, parentFolder: string): unknown { + if (typeof value === 'string') { + // Check if the string starts with the parent folder + if (value.startsWith(parentFolder)) { + // Strip the parent folder from the start of the string + return value.substring(parentFolder.length); + } + return value; // Return unchanged if it doesn't start with the parent folder + } else if (Array.isArray(value)) { + // If value is an array, recursively process each element + return value.map(item => replaceAbsolutePathsWithRelativePathsWherePossible(item, parentFolder)); + } else if (typeof value === 'object' && value !== null) { + // If value is an object, recursively process each key-value pair + const updatedObject: object = {}; + for (const key in value) { + updatedObject[key] = replaceAbsolutePathsWithRelativePathsWherePossible(value[key], parentFolder); + } + return updatedObject; + } + // Return the value unchanged if it's a number, boolean, or null + return value; +} diff --git a/src/lib/utils/FileUtil.ts b/src/lib/utils/FileUtil.ts new file mode 100644 index 000000000..e333a7266 --- /dev/null +++ b/src/lib/utils/FileUtil.ts @@ -0,0 +1,10 @@ +import * as fs from 'node:fs'; + +export async function exists(filename: string): Promise { + try { + await fs.promises.access(filename, fs.constants.F_OK); + return true; + } catch (e) { + return false; + } +} diff --git a/src/lib/viewers/ActionSummaryViewer.ts b/src/lib/viewers/ActionSummaryViewer.ts new file mode 100644 index 000000000..0754696d2 --- /dev/null +++ b/src/lib/viewers/ActionSummaryViewer.ts @@ -0,0 +1,49 @@ +import {Display} from '../Display'; +import {toStyledHeader, indent} from '../utils/StylingUtil'; +import {BundleName, getMessage} from '../messages'; + +abstract class AbstractActionSummaryViewer { + protected readonly display: Display; + + protected constructor(display: Display) { + this.display = display; + } + + protected displaySummaryHeader(): void { + this.display.displayLog(toStyledHeader(getMessage(BundleName.ActionSummaryViewer, 'common.summary-header'))); + } + + protected displayLineSeparator(): void { + this.display.displayLog(""); + } + + protected displayLogFileInfo(logFile: string): void { + this.display.displayLog(getMessage(BundleName.ActionSummaryViewer, 'common.logfile-location')); + this.display.displayLog(indent(logFile)); + } +} + +export class ConfigActionSummaryViewer extends AbstractActionSummaryViewer { + public constructor(display: Display) { + super(display); + } + + public view(logFile: string, outfile?: string): void { + this.displaySummaryHeader(); + this.displayLineSeparator(); + + if (outfile) { + this.displayOutfile(outfile); + } else { + this.display.displayLog(getMessage(BundleName.ActionSummaryViewer, 'config-action.no-outfiles')); + } + this.displayLineSeparator(); + + this.displayLogFileInfo(logFile); + } + + private displayOutfile(outfile: string): void { + this.display.displayLog(getMessage(BundleName.ActionSummaryViewer, 'config-action.outfile-location')); + this.display.displayLog(indent(outfile)); + } +} diff --git a/src/lib/viewers/RunSummaryViewer.ts b/src/lib/viewers/RunSummaryViewer.ts index d7471eed0..290c464fb 100644 --- a/src/lib/viewers/RunSummaryViewer.ts +++ b/src/lib/viewers/RunSummaryViewer.ts @@ -1,20 +1,20 @@ -import {CodeAnalyzerConfig, RunResults, SeverityLevel} from '@salesforce/code-analyzer-core'; +import {RunResults, SeverityLevel} from '@salesforce/code-analyzer-core'; import {Display} from '../Display'; import {indent, toStyledHeader} from '../utils/StylingUtil'; import {BundleName, getMessage} from '../messages'; export interface RunSummaryViewer { - view(results: RunResults, config: CodeAnalyzerConfig, outfiles: string[]): void; + view(results: RunResults, logFile: string, outfiles: string[]): void; } -export class RunSummaryDisplayer { +export class RunSummaryDisplayer implements RunSummaryViewer { protected display: Display; public constructor(display: Display) { this.display = display; } - public view(results: RunResults, config: CodeAnalyzerConfig, outfiles: string[]): void { + public view(results: RunResults, logFile: string, outfiles: string[]): void { this.display.displayLog(toStyledHeader(getMessage(BundleName.RunSummaryViewer, 'summary.header'))); // Use empty line as a visual separator this.display.displayLog(''); @@ -36,7 +36,7 @@ export class RunSummaryDisplayer { this.display.displayLog(''); this.display.displayLog(getMessage(BundleName.RunSummaryViewer, 'summary.log-file-location')); - this.display.displayLog(indent(config.getLogFolder())); + this.display.displayLog(indent(logFile)); } private displayResultsSummary(results: RunResults): void { diff --git a/src/lib/writers/ConfigWriter.ts b/src/lib/writers/ConfigWriter.ts index e3718b186..8a2f82573 100644 --- a/src/lib/writers/ConfigWriter.ts +++ b/src/lib/writers/ConfigWriter.ts @@ -2,28 +2,38 @@ import path from 'node:path'; import fs from 'node:fs'; import {ConfigModel, OutputFormat} from '../models/ConfigModel'; import {BundleName, getMessage} from '../messages'; +import {Display} from '../Display'; +import {exists} from '../utils/FileUtil'; export interface ConfigWriter { - write(model: ConfigModel): void; + write(model: ConfigModel): Promise; } export class ConfigFileWriter implements ConfigWriter { private readonly file: string; private readonly format: OutputFormat; + private readonly display: Display; - private constructor(file: string, format: OutputFormat) { + private constructor(file: string, format: OutputFormat, display: Display) { this.file = file; this.format = format; + this.display = display; } - public write(model: ConfigModel): void { - fs.writeFileSync(this.file, model.toFormattedOutput(this.format)); + public async write(model: ConfigModel): Promise { + // Only write to the file if it doesn't already exist, or if the user confirms that they want to overwrite it. + if (!(await exists(this.file)) || await this.display.confirm(getMessage(BundleName.ConfigWriter, 'prompt.overwrite-existing-file', [this.file]))) { + fs.writeFileSync(this.file, model.toFormattedOutput(this.format)); + return true; + } else { + return false; + } } - public static fromFile(file: string): ConfigFileWriter { + public static fromFile(file: string, display: Display): ConfigFileWriter { const ext = path.extname(file).toLowerCase(); if (ext === '.yaml' || ext === '.yml') { - return new ConfigFileWriter(file, OutputFormat.RAW_YAML); + return new ConfigFileWriter(file, OutputFormat.RAW_YAML, display); } else { throw new Error(getMessage(BundleName.ConfigWriter, 'error.unrecognized-file-format', [file])); } diff --git a/src/lib/writers/LogWriter.ts b/src/lib/writers/LogWriter.ts index 531b2faf5..5bca25cb5 100644 --- a/src/lib/writers/LogWriter.ts +++ b/src/lib/writers/LogWriter.ts @@ -4,20 +4,27 @@ import {CodeAnalyzerConfig} from '@salesforce/code-analyzer-core'; export interface LogWriter { writeToLog(message: string): void; + getLogDestination(): string; closeLog(): void; } export class LogFileWriter implements LogWriter { private readonly writeStream: NodeJS.WritableStream; + private readonly destination: string; - private constructor(writeStream: NodeJS.WritableStream) { + private constructor(writeStream: NodeJS.WritableStream, destination: string) { this.writeStream = writeStream; + this.destination = destination; } public writeToLog(message: string): void { this.writeStream.write(message); } + public getLogDestination(): string { + return this.destination; + } + public closeLog(): void { this.writeStream.end(); } @@ -29,6 +36,6 @@ export class LogFileWriter implements LogWriter { const logFile = path.join(logFolder, `sfca-${Date.now()}.log`); // 'w' flag causes the file to be created if it doesn't already exist. const fh = await fs.open(logFile, 'w'); - return new LogFileWriter(fh.createWriteStream({})); + return new LogFileWriter(fh.createWriteStream({}), logFile); } } diff --git a/test/commands/code-analyzer/config.test.ts b/test/commands/code-analyzer/config.test.ts index 494f5ae7e..986f602c3 100644 --- a/test/commands/code-analyzer/config.test.ts +++ b/test/commands/code-analyzer/config.test.ts @@ -3,6 +3,7 @@ import {TestContext} from '@salesforce/core/lib/testSetup'; import ConfigCommand from '../../../src/commands/code-analyzer/config'; import {ConfigAction, ConfigInput} from '../../../src/lib/actions/ConfigAction'; import {ConfigFileWriter} from '../../../src/lib/writers/ConfigWriter'; +import {SpyDisplay} from '../../stubs/SpyDisplay'; describe('`code-analyzer config` tests', () => { const $$ = new TestContext(); @@ -164,7 +165,7 @@ describe('`code-analyzer config` tests', () => { const originalFromFile = ConfigFileWriter.fromFile; fromFileSpy = jest.spyOn(ConfigFileWriter, 'fromFile').mockImplementation(file => { receivedFile = file; - return originalFromFile(file); + return originalFromFile(file, new SpyDisplay()); }); }); @@ -176,6 +177,7 @@ describe('`code-analyzer config` tests', () => { expect(createActionSpy).toHaveBeenCalled(); expect(fromFileSpy).toHaveBeenCalled(); expect(receivedFile).toEqual(inputValue); + expect(receivedActionInput).toHaveProperty('output-file', inputValue); }); it('Can be referenced by its shortname, -f', async () => { @@ -185,6 +187,7 @@ describe('`code-analyzer config` tests', () => { expect(createActionSpy).toHaveBeenCalled(); expect(fromFileSpy).toHaveBeenCalled(); expect(receivedFile).toEqual(inputValue); + expect(receivedActionInput).toHaveProperty('output-file', inputValue); }); it('Cannot be supplied multiple times', async () => { @@ -200,6 +203,7 @@ describe('`code-analyzer config` tests', () => { expect(executeSpy).toHaveBeenCalled(); expect(createActionSpy).toHaveBeenCalled(); expect(fromFileSpy).not.toHaveBeenCalled(); + expect(receivedActionInput['output-file']).toBeUndefined(); }); }); diff --git a/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/action-summaries/no-outfile-created.txt.goldfile b/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/action-summaries/no-outfile-created.txt.goldfile new file mode 100644 index 000000000..3bcdbe5f2 --- /dev/null +++ b/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/action-summaries/no-outfile-created.txt.goldfile @@ -0,0 +1,5 @@ +=== Summary + +No output file was specified. + +Additional log information written to: \ No newline at end of file diff --git a/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/action-summaries/outfile-created.txt.goldfile b/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/action-summaries/outfile-created.txt.goldfile new file mode 100644 index 000000000..fbe024e3c --- /dev/null +++ b/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/action-summaries/outfile-created.txt.goldfile @@ -0,0 +1,6 @@ +=== Summary + +Configuration written to: + out-config.yml + +Additional log information written to: \ No newline at end of file diff --git a/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/derivables-as-non-defaults/config_root.yml.goldfile b/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/derivables-as-non-defaults/config_root.yml.goldfile index 05e5e45c1..c7af8e5af 100644 --- a/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/derivables-as-non-defaults/config_root.yml.goldfile +++ b/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/derivables-as-non-defaults/config_root.yml.goldfile @@ -1 +1 @@ -config_root: __DUMMY_CONFIG_ROOT__ +config_root: __DUMMY_CONFIG_ROOT__ # Modified from: __DUMMY_DEFAULT_CONFIG_ROOT__ diff --git a/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/derivables-as-non-defaults/log_folder.yml.goldfile b/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/derivables-as-non-defaults/log_folder.yml.goldfile index d5585725c..dc1f1f644 100644 --- a/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/derivables-as-non-defaults/log_folder.yml.goldfile +++ b/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/derivables-as-non-defaults/log_folder.yml.goldfile @@ -1 +1 @@ -log_folder: __DUMMY_LOG_FOLDER__ +log_folder: __DUMMY_LOG_FOLDER__ # Modified from: __DUMMY_DEFAULT_LOG_FOLDER__ diff --git a/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/header-comments/top-level-end.yml.goldfile b/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/header-comments/top-level-end.yml.goldfile new file mode 100644 index 000000000..de1d3d889 --- /dev/null +++ b/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/header-comments/top-level-end.yml.goldfile @@ -0,0 +1,3 @@ +# ====================================================================== +# END OF CODE ANALYZER CONFIGURATION +# ====================================================================== diff --git a/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/header-comments/top-level.yml.goldfile b/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/header-comments/top-level-start.yml.goldfile similarity index 100% rename from test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/header-comments/top-level.yml.goldfile rename to test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/header-comments/top-level-start.yml.goldfile diff --git a/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/override-configurations/StubEngine2_forConfigWithRelativePathScenario.yml.goldfile b/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/override-configurations/StubEngine2_forConfigWithRelativePathScenario.yml.goldfile new file mode 100644 index 000000000..37775d47a --- /dev/null +++ b/test/fixtures/comparison-files/lib/actions/ConfigAction.test.ts/override-configurations/StubEngine2_forConfigWithRelativePathScenario.yml.goldfile @@ -0,0 +1,12 @@ + # ====================================================================== + # Some overview for StubEngine2 + # ====================================================================== + StubEngine2: + + # Whether to turn off the 'StubEngine2' engine so that it is not included when running Code Analyzer commands. + disable_engine: false + + # Some description for top_field + top_field: # Modified from: null + sub_field: + - optional-input-config.yml \ No newline at end of file diff --git a/test/fixtures/example-workspaces/ConfigAction.test.ts/optional-input-config.yml b/test/fixtures/example-workspaces/ConfigAction.test.ts/optional-input-config.yml index eb4dee090..b3dae7640 100644 --- a/test/fixtures/example-workspaces/ConfigAction.test.ts/optional-input-config.yml +++ b/test/fixtures/example-workspaces/ConfigAction.test.ts/optional-input-config.yml @@ -12,6 +12,10 @@ engines: SubProperty2: false Property5: ['bada-bing', 'bada-boom'] # Property6 is not set, so it should default to null + StubEngine2: + top_field: + sub_field: + - __DUMMY_STUBENGINE2_SUBFIELD__ StubEngine3: disable_engine: true rules: diff --git a/test/lib/actions/ConfigAction.test.ts b/test/lib/actions/ConfigAction.test.ts index 85f64b0d0..10edee0ab 100644 --- a/test/lib/actions/ConfigAction.test.ts +++ b/test/lib/actions/ConfigAction.test.ts @@ -9,15 +9,18 @@ import {CodeAnalyzerConfigFactory} from "../../../src/lib/factories/CodeAnalyzer import {EnginePluginsFactory} from '../../../src/lib/factories/EnginePluginsFactory'; import {ConfigAction, ConfigDependencies, ConfigInput} from '../../../src/lib/actions/ConfigAction'; import {AnnotatedConfigModel} from '../../../src/lib/models/ConfigModel'; -import {ConfigStyledYamlViewer} from '../../../lib/lib/viewers/ConfigViewer'; +import {ConfigStyledYamlViewer} from '../../../src/lib/viewers/ConfigViewer'; +import {ConfigActionSummaryViewer} from '../../../src/lib/viewers/ActionSummaryViewer'; import {SpyConfigWriter} from '../../stubs/SpyConfigWriter'; import {DisplayEventType, SpyDisplay} from '../../stubs/SpyDisplay'; -const PATH_TO_EXAMPLE_WORKSPACE = path.join(__dirname, '..', '..', 'fixtures', 'example-workspaces', 'ConfigAction.test.ts'); +const PATH_TO_FIXTURES = path.join(__dirname, '..', '..', 'fixtures'); + +const PATH_TO_EXAMPLE_WORKSPACE = path.join(PATH_TO_FIXTURES, 'example-workspaces', 'ConfigAction.test.ts'); describe('ConfigAction tests', () => { - const PATH_TO_COMPARISON_DIR = path.join(__dirname, '..', '..', 'fixtures', 'comparison-files', 'lib', 'actions', 'ConfigAction.test.ts'); + const PATH_TO_COMPARISON_DIR = path.join(PATH_TO_FIXTURES, 'comparison-files', 'lib', 'actions', 'ConfigAction.test.ts'); let spyDisplay: SpyDisplay; let dependencies: ConfigDependencies; @@ -26,7 +29,7 @@ describe('ConfigAction tests', () => { describe('When there IS NOT an existing config...', () => { - beforeEach(async () => { + beforeEach(() => { spyDisplay = new SpyDisplay(); dependencies = { logEventListeners: [], @@ -34,17 +37,21 @@ describe('ConfigAction tests', () => { viewer: new ConfigStyledYamlViewer(spyDisplay), configFactory: new DefaultStubCodeAnalyzerConfigFactory(), modelGenerator: AnnotatedConfigModel.fromSelection, + actionSummaryViewer: new ConfigActionSummaryViewer(spyDisplay), pluginsFactory: new StubEnginePluginFactory() }; }); - it('Top-level overview-comment is correct', async () => { + it.each([ + {position: 'start'}, + {position: 'end'} + ])('Top-level $position comment is correct', async ({position}) => { // ==== TESTED BEHAVIOR ==== // Just select all rules for this test, since we don't care about the rules here. const output = await runActionAndGetDisplayedConfig(dependencies, ['all']); // ==== ASSERTIONS ==== - const goldFileContents = await readGoldFile(path.join(PATH_TO_COMPARISON_DIR, 'header-comments', 'top-level.yml.goldfile')); + const goldFileContents = await readGoldFile(path.join(PATH_TO_COMPARISON_DIR, 'header-comments', `top-level-${position}.yml.goldfile`)); expect(output).toContain(goldFileContents); }); @@ -72,9 +79,10 @@ describe('ConfigAction tests', () => { const output = await runActionAndGetDisplayedConfig(dependencies, ['all']); // ==== ASSERTIONS ==== + const defaultConfig = CodeAnalyzerConfig.withDefaults(); const goldFileContents = (await readGoldFile(path.join(PATH_TO_COMPARISON_DIR, 'derivables-as-defaults', `${prop}.yml.goldfile`))) - .replaceAll('__DUMMY_CONFIG_ROOT__', CodeAnalyzerConfig.withDefaults().getConfigRoot()) - .replaceAll('__DUMMY_LOG_FOLDER__', CodeAnalyzerConfig.withDefaults().getLogFolder()); + .replaceAll('__DUMMY_CONFIG_ROOT__', JSON.stringify(defaultConfig.getConfigRoot())) + .replaceAll('__DUMMY_LOG_FOLDER__', JSON.stringify(defaultConfig.getLogFolder())); expect(output).toContain(goldFileContents); }); @@ -147,7 +155,7 @@ describe('ConfigAction tests', () => { let stubConfigFactory: AlternativeStubCodeAnalyzerConfigFactory; - beforeEach(async () => { + beforeEach(() => { stubConfigFactory = new AlternativeStubCodeAnalyzerConfigFactory(); spyDisplay = new SpyDisplay(); dependencies = { @@ -156,12 +164,16 @@ describe('ConfigAction tests', () => { viewer: new ConfigStyledYamlViewer(spyDisplay), configFactory: stubConfigFactory, modelGenerator: AnnotatedConfigModel.fromSelection, + actionSummaryViewer: new ConfigActionSummaryViewer(spyDisplay), pluginsFactory: new StubEnginePluginFactory() }; }); - it('Top-level overview-comment is correct', async () => { + it.each([ + {position: 'start'}, + {position: 'end'} + ])('Top-level $position comment is correct', async ({position}) => { // ==== SETUP ==== // Set the dummy config properties to null; it's fine for this test. stubConfigFactory.setDummyConfigRoot('null'); @@ -172,7 +184,7 @@ describe('ConfigAction tests', () => { const output = await runActionAndGetDisplayedConfig(dependencies, ['all']); // ==== ASSERTIONS ==== - const goldFileContents = await readGoldFile(path.join(PATH_TO_COMPARISON_DIR, 'header-comments', 'top-level.yml.goldfile')); + const goldFileContents = await readGoldFile(path.join(PATH_TO_COMPARISON_DIR, 'header-comments', `top-level-${position}.yml.goldfile`)); expect(output).toContain(goldFileContents); }); @@ -209,9 +221,10 @@ describe('ConfigAction tests', () => { const output = await runActionAndGetDisplayedConfig(dependencies, ['all']); // ==== ASSERTIONS ==== + const defaultConfig = CodeAnalyzerConfig.withDefaults(); const goldFileContents = (await readGoldFile(path.join(PATH_TO_COMPARISON_DIR, 'derivables-as-defaults', `${prop}.yml.goldfile`))) - .replaceAll('__DUMMY_CONFIG_ROOT__', CodeAnalyzerConfig.withDefaults().getConfigRoot()) - .replaceAll('__DUMMY_LOG_FOLDER__', CodeAnalyzerConfig.withDefaults().getLogFolder()); + .replaceAll('__DUMMY_CONFIG_ROOT__', JSON.stringify(defaultConfig.getConfigRoot())) + .replaceAll('__DUMMY_LOG_FOLDER__', JSON.stringify(defaultConfig.getLogFolder())); expect(output).toContain(goldFileContents); }); @@ -228,9 +241,10 @@ describe('ConfigAction tests', () => { const output = await runActionAndGetDisplayedConfig(dependencies, ['all']); // ==== ASSERTIONS ==== + const defaultConfig = CodeAnalyzerConfig.withDefaults(); const goldFileContents = (await readGoldFile(path.join(PATH_TO_COMPARISON_DIR, 'derivables-as-defaults', `${prop}.yml.goldfile`))) - .replaceAll('__DUMMY_CONFIG_ROOT__', CodeAnalyzerConfig.withDefaults().getConfigRoot()) - .replaceAll('__DUMMY_LOG_FOLDER__', CodeAnalyzerConfig.withDefaults().getLogFolder()); + .replaceAll('__DUMMY_CONFIG_ROOT__', JSON.stringify(defaultConfig.getConfigRoot())) + .replaceAll('__DUMMY_LOG_FOLDER__', JSON.stringify(defaultConfig.getLogFolder())); expect(output).toContain(goldFileContents); }); @@ -249,9 +263,12 @@ describe('ConfigAction tests', () => { const output = await runActionAndGetDisplayedConfig(dependencies, ['all']); // ==== ASSERTIONS ==== + const defaultConfig = CodeAnalyzerConfig.withDefaults(); const goldFileContents = (await readGoldFile(path.join(PATH_TO_COMPARISON_DIR, 'derivables-as-non-defaults', `${prop}.yml.goldfile`))) - .replaceAll('__DUMMY_CONFIG_ROOT__', parentOfCurrentDirectory) - .replaceAll('__DUMMY_LOG_FOLDER__', parentOfCurrentDirectory); + .replace('__DUMMY_CONFIG_ROOT__', parentOfCurrentDirectory) + .replace('__DUMMY_LOG_FOLDER__', parentOfCurrentDirectory) + .replace('__DUMMY_DEFAULT_CONFIG_ROOT__', JSON.stringify(defaultConfig.getConfigRoot())) + .replace('__DUMMY_DEFAULT_LOG_FOLDER__', JSON.stringify(defaultConfig.getLogFolder())) expect(output).toContain(goldFileContents); }); @@ -356,11 +373,24 @@ describe('ConfigAction tests', () => { const goldFileContents = await readGoldFile(path.join(PATH_TO_COMPARISON_DIR, 'override-configurations', `${ruleName}.yml.goldfile`)); expect(output).toContain(goldFileContents); }); + + it('If config is provided with relative path to config_root, then it remains relative in config output even though core makes it absolute for engines', async () => { + // ==== SETUP ==== + stubConfigFactory.setDummyConfigRoot(PATH_TO_EXAMPLE_WORKSPACE); + stubConfigFactory.setDummyLogFolder('null'); + + // ==== TESTED BEHAVIOR ==== + const output = await runActionAndGetDisplayedConfig(dependencies, ['Stub2Rule1']); + + // ==== ASSERTIONS ==== + const goldFileContents = await readGoldFile(path.join(PATH_TO_COMPARISON_DIR, 'override-configurations', `StubEngine2_forConfigWithRelativePathScenario.yml.goldfile`)); + expect(output).toContain(goldFileContents); + }); }); }); describe('File Creation', () => { - beforeEach(async () => { + beforeEach(() => { spyDisplay = new SpyDisplay(); dependencies = { logEventListeners: [], @@ -368,6 +398,7 @@ describe('ConfigAction tests', () => { viewer: new ConfigStyledYamlViewer(spyDisplay), configFactory: new DefaultStubCodeAnalyzerConfigFactory(), modelGenerator: AnnotatedConfigModel.fromSelection, + actionSummaryViewer: new ConfigActionSummaryViewer(spyDisplay), pluginsFactory: new StubEnginePluginFactory() }; }); @@ -385,17 +416,86 @@ describe('ConfigAction tests', () => { expect(spyWriter.getCallHistory()).toHaveLength(1); }); }); + + describe('Summary generation', () => { + beforeEach(() => { + spyDisplay = new SpyDisplay(); + dependencies = { + logEventListeners: [], + progressEventListeners: [], + viewer: new ConfigStyledYamlViewer(spyDisplay), + configFactory: new DefaultStubCodeAnalyzerConfigFactory(), + modelGenerator: AnnotatedConfigModel.fromSelection, + actionSummaryViewer: new ConfigActionSummaryViewer(spyDisplay), + pluginsFactory: new StubEnginePluginFactory() + } + }); + + it('When an Outfile is created, it is mentioned by the Summarizer', async () => { + // ==== SETUP ==== + // Assign a Writer to the dependencies. + dependencies.writer = new SpyConfigWriter(true); + + // ==== TESTED BEHAVIOR ==== + // Invoke the action, specifying an outfile. + const action = ConfigAction.createAction(dependencies); + const input: ConfigInput = { + 'rule-selector': ['all'], + 'output-file': 'out-config.yml' + }; + await action.execute(input); + + // ==== ASSERTIONS ==== + const displayEvents = spyDisplay.getDisplayEvents(); + const displayedLogEvents = ansis.strip(displayEvents + .filter(e => e.type === DisplayEventType.LOG) + .map(e => e.data) + .join('\n')); + + const goldfileContents: string = await readGoldFile(path.join(PATH_TO_COMPARISON_DIR, 'action-summaries', 'outfile-created.txt.goldfile')); + expect(displayedLogEvents).toContain(goldfileContents); + }); + + it.each([ + {case: 'an Outfile is specified but not written', writer: new SpyConfigWriter(false), outfile: 'out-config.yml'}, + {case: 'an Outfile is not specified at all', writer: undefined, outfile: undefined} + ])('When $case, the Summarizer mentions no outfile', async ({writer, outfile}) => { + // ==== SETUP ==== + // Add the specified Writer (or lack-of-Writer) to the dependencies. + dependencies.writer = writer; + + // ==== TESTED BEHAVIOR ==== + // Invoke the action, specifying an outfile (or lack of one). + const action = ConfigAction.createAction(dependencies); + const input: ConfigInput = { + 'rule-selector': ['all'], + 'output-file': outfile + }; + await action.execute(input); + + // ==== ASSERTIONS ==== + const displayEvents = spyDisplay.getDisplayEvents(); + const displayedLogEvents = ansis.strip(displayEvents + .filter(e => e.type === DisplayEventType.LOG) + .map(e => e.data) + .join('\n')); + + const goldfileContents: string = await readGoldFile(path.join(PATH_TO_COMPARISON_DIR, 'action-summaries', 'no-outfile-created.txt.goldfile')); + expect(displayedLogEvents).toContain(goldfileContents); + }); + }) // ====== HELPER FUNCTIONS ====== async function readGoldFile(goldFilePath: string): Promise { return fsp.readFile(goldFilePath, {encoding: 'utf-8'}); } - async function runActionAndGetDisplayedConfig(dependencies: ConfigDependencies, ruleSelectors: string[]): Promise { + async function runActionAndGetDisplayedConfig(dependencies: ConfigDependencies, ruleSelectors: string[], configFile?: string): Promise { // ==== SETUP ==== const action = ConfigAction.createAction(dependencies); const input: ConfigInput = { - 'rule-selector': ruleSelectors + 'rule-selector': ruleSelectors, + 'config-file': configFile }; // ==== TESTED BEHAVIOR ==== @@ -403,7 +503,6 @@ describe('ConfigAction tests', () => { // ==== OUTPUT PROCESSING ==== const displayEvents = spyDisplay.getDisplayEvents(); - expect(displayEvents).toHaveLength(1); expect(displayEvents[0].type).toEqual(DisplayEventType.LOG); return ansis.strip(displayEvents[0].data); } @@ -430,11 +529,13 @@ class AlternativeStubCodeAnalyzerConfigFactory implements CodeAnalyzerConfigFact } public create(): CodeAnalyzerConfig { - const rawConfigFileContents = fs.readFileSync(path.join(PATH_TO_EXAMPLE_WORKSPACE, 'optional-input-config.yml'), {encoding: 'utf-8'}); + const rawConfigFileContents = fs.readFileSync(path.join(PATH_TO_EXAMPLE_WORKSPACE, 'optional-input-config.yml'), 'utf-8'); const validatedConfigFileContents = rawConfigFileContents .replaceAll('__DUMMY_CONFIG_ROOT__', this.dummyConfigRoot) - .replaceAll('__DUMMY_LOG_FOLDER__', this.dummyLogFolder); - return CodeAnalyzerConfig.fromYamlString(validatedConfigFileContents, process.cwd()); + .replaceAll('__DUMMY_LOG_FOLDER__', this.dummyLogFolder) + .replaceAll('__DUMMY_STUBENGINE2_SUBFIELD__', this.dummyConfigRoot && this.dummyConfigRoot !== 'null' ? + path.join(this.dummyConfigRoot, 'optional-input-config.yml') : 'dummy'); + return CodeAnalyzerConfig.fromYamlString(validatedConfigFileContents, process.cwd()); } } @@ -461,8 +562,13 @@ class StubEnginePlugin extends EngineApi.EnginePluginV1 { 'Property5': 'This is the description for Property5', 'Property6': 'This is the description for Property6' } + }, + StubEngine2: { + overview: 'Some overview for StubEngine2', + fieldDescriptions: { + 'top_field': 'Some description for top_field' + } } - // StubEngine2 has no overview and no documented properties. // StubEngine3 also has no overview or documented properties. } diff --git a/test/lib/listeners/ProgressEventListener.test.ts b/test/lib/listeners/ProgressEventListener.test.ts index 781beb6bf..b4e48127a 100644 --- a/test/lib/listeners/ProgressEventListener.test.ts +++ b/test/lib/listeners/ProgressEventListener.test.ts @@ -87,7 +87,7 @@ describe('ProgressEventListener implementations', () => { expect(percentagesInOrder).toEqual([0, 25, 50, 100]); const endEvent = displayEvents[displayEvents.length - 1]; expect(endEvent).toHaveProperty('type', DisplayEventType.SPINNER_STOP); - expect(endEvent.data).toContain('done'); + expect(endEvent.data).toContain(`done. Selected rules from stubEngine1, stubEngine2.`); }); it('Properly aggregates percentages across multiple Cores', async () => { @@ -123,7 +123,7 @@ describe('ProgressEventListener implementations', () => { expect(percentagesInOrder).toEqual([0, 12, 25, 50, 62, 75, 100]); const endEvent = displayEvents[displayEvents.length - 1]; expect(endEvent).toHaveProperty('type', DisplayEventType.SPINNER_STOP); - expect(endEvent.data).toContain('done'); + expect(endEvent.data).toContain('done. Selected rules from stubEngine1, stubEngine2.'); }); it('Properly interleaves progress updates with ticking', async () => { @@ -159,7 +159,7 @@ describe('ProgressEventListener implementations', () => { expect(percentagesInOrder).toEqual([0, 20, 40, 50, 60, 80, 100]); const endEvent = displayEvents[displayEvents.length - 1]; expect(endEvent).toHaveProperty('type', DisplayEventType.SPINNER_STOP); - expect(endEvent.data).toContain('done'); + expect(endEvent.data).toContain('done. Selected rules from timeableEngine1, timeableEngine2.'); }); }); @@ -252,7 +252,7 @@ describe('ProgressEventListener implementations', () => { expect(percentagesInOrder).toEqual([0, 50, 100]); const endEvent = displayEvents[displayEvents.length - 1]; expect(endEvent).toHaveProperty('type', DisplayEventType.SPINNER_STOP); - expect(endEvent.data).toContain('done'); + expect(endEvent.data).toContain('done. Executed rules from stubEngine1.'); }); it('Properly interleaves progress updates from multiple engines', async () => { @@ -296,7 +296,7 @@ describe('ProgressEventListener implementations', () => { // The final event should be the Stop event. const endEvent = displayEvents[displayEvents.length - 1]; expect(endEvent).toHaveProperty('type', DisplayEventType.SPINNER_STOP); - expect(endEvent.data).toContain('done'); + expect(endEvent.data).toContain('done. Executed rules from timeableEngine1, timeableEngine2.'); }); it('Properly interleaves progress updates with ticking', async () => { @@ -332,7 +332,7 @@ describe('ProgressEventListener implementations', () => { expect(percentagesInOrder).toEqual([0, 50, 100]); const endEvent = displayEvents[displayEvents.length - 1]; expect(endEvent).toHaveProperty('type', DisplayEventType.SPINNER_STOP); - expect(endEvent.data).toContain('done'); + expect(endEvent.data).toContain('done. Executed rules from timeableEngine1.'); }, 10000); // There's currently no need for this Spinner to accept multiple Cores, so we've opted to not implement that diff --git a/test/lib/viewers/RunSummaryViewer.test.ts b/test/lib/viewers/RunSummaryViewer.test.ts index 76056302d..7a06b8d4f 100644 --- a/test/lib/viewers/RunSummaryViewer.test.ts +++ b/test/lib/viewers/RunSummaryViewer.test.ts @@ -63,14 +63,15 @@ describe('RunSummaryViewer implementations', () => { // Create Displayers for the empty-input and non-empty-input cases. const emptyInputsDisplayer: RunSummaryDisplayer = new RunSummaryDisplayer(emptyInputsSpyDisplay); const nonEmptyInputsDisplayer: RunSummaryDisplayer = new RunSummaryDisplayer(nonEmptyInputsSpyDisplay); + const fakeLogFile: string = path.join('path', 'to', 'fakelogfile.log'); let emptyInputsDisplayEvents: DisplayEvent[]; let nonEmptyInputsDisplayEvents: DisplayEvent[]; beforeAll(() => { - emptyInputsDisplayer.view(emptyResults, config, []); + emptyInputsDisplayer.view(emptyResults, fakeLogFile, []); emptyInputsDisplayEvents = emptyInputsSpyDisplay.getDisplayEvents(); - nonEmptyInputsDisplayer.view(nonEmptyResults, config, [PATH_TO_OUTFILE1, PATH_TO_OUTFILE2]) + nonEmptyInputsDisplayer.view(nonEmptyResults, fakeLogFile, [PATH_TO_OUTFILE1, PATH_TO_OUTFILE2]) nonEmptyInputsDisplayEvents = nonEmptyInputsSpyDisplay.getDisplayEvents(); }); @@ -121,7 +122,7 @@ describe('RunSummaryViewer implementations', () => { describe('Logging breakdown', () => { it('Logfile is correctly displayed', () => { const expectation = `Additional log information written to:\n` + - ` ${config.getLogFolder()}`; + ` ${fakeLogFile}`; const emptyContents = emptyInputsDisplayEvents.map(e => e.data).join('\n'); const nonEmptyContents = nonEmptyInputsDisplayEvents.map(e => e.data).join('\n'); expect(emptyContents).toContain(expectation); diff --git a/test/lib/writers/ConfigWriter.test.ts b/test/lib/writers/ConfigWriter.test.ts index 90ad33e32..367f42526 100644 --- a/test/lib/writers/ConfigWriter.test.ts +++ b/test/lib/writers/ConfigWriter.test.ts @@ -1,7 +1,9 @@ import fs from 'node:fs'; +import path from 'node:path'; import {OutputFormat} from '../../../src/lib/models/ConfigModel'; import {ConfigFileWriter} from '../../../src/lib/writers/ConfigWriter'; import {StubConfigModel} from '../../stubs/StubConfigModel'; +import {DisplayEvent, DisplayEventType, SpyDisplay} from '../../stubs/SpyDisplay'; describe('ConfigWriter implementations', () => { describe('ConfigWriterImpl', () => { @@ -22,13 +24,17 @@ describe('ConfigWriter implementations', () => { it.each([ {ext: '.yaml', expectedOutput: `# This is a leading comment\nResults formatted as ${OutputFormat.RAW_YAML}`}, {ext: '.yml', expectedOutput: `# This is a leading comment\nResults formatted as ${OutputFormat.RAW_YAML}`} - ])('Accepts and outputs valid file format: *$ext', ({ext, expectedOutput}) => { + ])('Accepts and outputs valid file format: *$ext', async ({ext, expectedOutput}) => { const validFile = `beep${ext}`; - const configFileWriter = ConfigFileWriter.fromFile(validFile); + const spyDisplay: SpyDisplay = new SpyDisplay(true); + const configFileWriter = ConfigFileWriter.fromFile(validFile, spyDisplay); const stubbedConfig = new StubConfigModel(); - configFileWriter.write(stubbedConfig); + const result: boolean = await configFileWriter.write(stubbedConfig); + + expect(result).toEqual(true); + expect(spyDisplay.getDisplayEvents()).toHaveLength(0); expect(writeFileSpy).toHaveBeenCalled(); expect(writeFileInvocations).toEqual([{ @@ -37,9 +43,31 @@ describe('ConfigWriter implementations', () => { }]); }); - it('Rejects invalid file format: *.txt', () => { + it.each([ + {case: 'Confirmation granted', confirmation: true, expectedCallCount: 1}, + {case: 'Confirmation denied', confirmation: false, expectedCallCount: 0} + ])('Only overwrites existing file after requesting user confirmation. Case: $case', async ({confirmation, expectedCallCount}) => { + const validFile = path.resolve(__dirname, '..', '..', 'fixtures', 'example-workspaces', 'workspace-with-yml-config', 'code-analyzer.yml'); + const spyDisplay: SpyDisplay = new SpyDisplay(confirmation); + const configFileWriter = ConfigFileWriter.fromFile(validFile, spyDisplay); + + const stubbedConfig = new StubConfigModel(); + + const result: boolean = await configFileWriter.write(stubbedConfig); + + const displayEvents: DisplayEvent[] = spyDisplay.getDisplayEvents(); + expect(displayEvents).toHaveLength(1); + expect(result).toEqual(confirmation); + // The user should be prompted to confirm override. + expect(displayEvents[0].type).toEqual(DisplayEventType.CONFIRM); + expect(displayEvents[0].data).toContain('overwrite'); + expect(writeFileSpy).toHaveBeenCalledTimes(expectedCallCount); + }); + + it('Rejects invalid file format: *.txt', async () => { const invalidFile = 'beep.txt'; - expect(() => ConfigFileWriter.fromFile(invalidFile)).toThrow(invalidFile); + const spyDisplay: SpyDisplay = new SpyDisplay(true); + expect(() => ConfigFileWriter.fromFile(invalidFile, spyDisplay)).toThrow(invalidFile); }) }); }); diff --git a/test/stubs/SpyConfigWriter.ts b/test/stubs/SpyConfigWriter.ts index 24dd4893b..2c56eab7a 100644 --- a/test/stubs/SpyConfigWriter.ts +++ b/test/stubs/SpyConfigWriter.ts @@ -2,10 +2,16 @@ import {ConfigModel} from '../../src/lib/models/ConfigModel'; import {ConfigWriter} from '../../src/lib/writers/ConfigWriter'; export class SpyConfigWriter implements ConfigWriter { + private simulateSuccessfulWrites: boolean; private callHistory: ConfigModel[] = []; - public write(config: ConfigModel): void { + public constructor(simulateSuccessfulWrites: boolean = true) { + this.simulateSuccessfulWrites = simulateSuccessfulWrites; + } + + public write(config: ConfigModel): Promise { this.callHistory.push(config); + return Promise.resolve(this.simulateSuccessfulWrites); } public getCallHistory(): ConfigModel[] { diff --git a/test/stubs/SpyDisplay.ts b/test/stubs/SpyDisplay.ts index 007191e8b..31079ab26 100644 --- a/test/stubs/SpyDisplay.ts +++ b/test/stubs/SpyDisplay.ts @@ -7,6 +7,12 @@ import {Ux} from '@salesforce/sf-plugins-core'; export class SpyDisplay implements Display { private displayEvents: DisplayEvent[] = []; + private readonly confirmReturnValue: boolean; + + public constructor(confirmReturnValue: boolean = true) { + this.confirmReturnValue = confirmReturnValue; + } + /** * Track that the provided message was displayed as an Error-level output. */ @@ -58,6 +64,14 @@ export class SpyDisplay implements Display { }); } + public confirm(message: string): Promise { + this.displayEvents.push({ + type: DisplayEventType.CONFIRM, + data: message + }); + return Promise.resolve(this.confirmReturnValue); + } + /** * Track that the spinner was started with the provided message, and optionally status. */ @@ -103,6 +117,7 @@ export enum DisplayEventType { INFO, LOG, TABLE, + CONFIRM, SPINNER_START, SPINNER_UPDATE, SPINNER_STOP diff --git a/test/stubs/SpyLogWriter.ts b/test/stubs/SpyLogWriter.ts index e44bdaba7..183a6e80f 100644 --- a/test/stubs/SpyLogWriter.ts +++ b/test/stubs/SpyLogWriter.ts @@ -13,6 +13,10 @@ export class SpyLogWriter implements LogWriter { this.log += message; } + public getLogDestination(): string { + return 'this value does not matter'; + } + public closeLog(): void { this.isClosed = true; } diff --git a/test/stubs/SpyRunSummaryViewer.ts b/test/stubs/SpyRunSummaryViewer.ts index 3b993d326..54870a40e 100644 --- a/test/stubs/SpyRunSummaryViewer.ts +++ b/test/stubs/SpyRunSummaryViewer.ts @@ -1,14 +1,14 @@ -import {CodeAnalyzerConfig, RunResults} from '@salesforce/code-analyzer-core'; +import {RunResults} from '@salesforce/code-analyzer-core'; import {RunSummaryViewer} from '../../src/lib/viewers/RunSummaryViewer' export class SpyRunSummaryViewer implements RunSummaryViewer { - private callHistory: {results: RunResults, config: CodeAnalyzerConfig, outfiles: string[]}[] = []; + private callHistory: {results: RunResults, logFile: string, outfiles: string[]}[] = []; - public view(results: RunResults, config: CodeAnalyzerConfig, outfiles: string[]): void { - this.callHistory.push({results, config, outfiles}); + public view(results: RunResults, logFile: string, outfiles: string[]): void { + this.callHistory.push({results, logFile, outfiles}); } - public getCallHistory(): {results: RunResults, config: CodeAnalyzerConfig, outfiles: string[]}[] { + public getCallHistory(): {results: RunResults, logFile: string, outfiles: string[]}[] { return this.callHistory; } } diff --git a/yarn.lock b/yarn.lock index 68963753f..6843b37dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -78,605 +78,617 @@ "@smithy/util-utf8" "^2.0.0" tslib "^2.6.2" -"@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== +"@aws-sdk/client-cloudfront@^3.675.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudfront/-/client-cloudfront-3.679.0.tgz#8062cc1cf25897306478ff7f44cb050bfd8cc283" + integrity sha512-C/k3ZP+K47CAWICCkaXleUJGdJCiEJRB+5XvbEpoCabrrRJDCa+x/qbgS0KfTuioS5gYb9V1DWeUfXD+iWaoCw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@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" + "@aws-sdk/client-sso-oidc" "3.679.0" + "@aws-sdk/client-sts" "3.679.0" + "@aws-sdk/core" "3.679.0" + "@aws-sdk/credential-provider-node" "3.679.0" + "@aws-sdk/middleware-host-header" "3.679.0" + "@aws-sdk/middleware-logger" "3.679.0" + "@aws-sdk/middleware-recursion-detection" "3.679.0" + "@aws-sdk/middleware-user-agent" "3.679.0" + "@aws-sdk/region-config-resolver" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@aws-sdk/util-endpoints" "3.679.0" + "@aws-sdk/util-user-agent-browser" "3.679.0" + "@aws-sdk/util-user-agent-node" "3.679.0" + "@aws-sdk/xml-builder" "3.679.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.8" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@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.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-defaults-mode-browser" "^3.0.23" + "@smithy/util-defaults-mode-node" "^3.0.23" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" + "@smithy/util-stream" "^3.1.9" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.5" + "@smithy/util-waiter" "^3.1.6" tslib "^2.6.2" -"@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== +"@aws-sdk/client-s3@^3.676.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.679.0.tgz#862088ffa9388488ab3217144d3dd3a95219a92b" + integrity sha512-P93tUbJXiDtSPgBfFpnjaijLV38hyPlE3g0XybsPTmSYNV6A9Jt1TUIF6vX+o6LdFuq3FerCiagUjhfDANWkAw== 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.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" + "@aws-sdk/client-sso-oidc" "3.679.0" + "@aws-sdk/client-sts" "3.679.0" + "@aws-sdk/core" "3.679.0" + "@aws-sdk/credential-provider-node" "3.679.0" + "@aws-sdk/middleware-bucket-endpoint" "3.679.0" + "@aws-sdk/middleware-expect-continue" "3.679.0" + "@aws-sdk/middleware-flexible-checksums" "3.679.0" + "@aws-sdk/middleware-host-header" "3.679.0" + "@aws-sdk/middleware-location-constraint" "3.679.0" + "@aws-sdk/middleware-logger" "3.679.0" + "@aws-sdk/middleware-recursion-detection" "3.679.0" + "@aws-sdk/middleware-sdk-s3" "3.679.0" + "@aws-sdk/middleware-ssec" "3.679.0" + "@aws-sdk/middleware-user-agent" "3.679.0" + "@aws-sdk/region-config-resolver" "3.679.0" + "@aws-sdk/signature-v4-multi-region" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@aws-sdk/util-endpoints" "3.679.0" + "@aws-sdk/util-user-agent-browser" "3.679.0" + "@aws-sdk/util-user-agent-node" "3.679.0" + "@aws-sdk/xml-builder" "3.679.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.8" + "@smithy/eventstream-serde-browser" "^3.0.10" + "@smithy/eventstream-serde-config-resolver" "^3.0.7" + "@smithy/eventstream-serde-node" "^3.0.9" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-blob-browser" "^3.1.6" + "@smithy/hash-node" "^3.0.7" + "@smithy/hash-stream-node" "^3.1.6" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/md5-js" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@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.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-defaults-mode-browser" "^3.0.23" + "@smithy/util-defaults-mode-node" "^3.0.23" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" + "@smithy/util-stream" "^3.1.9" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.5" + "@smithy/util-waiter" "^3.1.6" tslib "^2.6.2" -"@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== +"@aws-sdk/client-sso-oidc@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.679.0.tgz#00de670c9ea31c5073f6eed6842795e70bc63fca" + integrity sha512-/dBYWcCwbA/id4sFCIVZvf0UsvzHCC68SryxeNQk/PDkY9N4n5yRcMUkZDaEyQCjowc3kY4JOXp2AdUP037nhA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.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" + "@aws-sdk/core" "3.679.0" + "@aws-sdk/credential-provider-node" "3.679.0" + "@aws-sdk/middleware-host-header" "3.679.0" + "@aws-sdk/middleware-logger" "3.679.0" + "@aws-sdk/middleware-recursion-detection" "3.679.0" + "@aws-sdk/middleware-user-agent" "3.679.0" + "@aws-sdk/region-config-resolver" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@aws-sdk/util-endpoints" "3.679.0" + "@aws-sdk/util-user-agent-browser" "3.679.0" + "@aws-sdk/util-user-agent-node" "3.679.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.8" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@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.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-defaults-mode-browser" "^3.0.23" + "@smithy/util-defaults-mode-node" "^3.0.23" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@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== +"@aws-sdk/client-sso@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.679.0.tgz#6d6e96ae4e8c3258793e26bcd127b9f9a621dd1b" + integrity sha512-/0cAvYnpOZTo/Y961F1kx2fhDDLUYZ0SQQ5/75gh3xVImLj7Zw+vp74ieqFbqWLYGMaq8z1Arr9A8zG95mbLdg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@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" + "@aws-sdk/core" "3.679.0" + "@aws-sdk/middleware-host-header" "3.679.0" + "@aws-sdk/middleware-logger" "3.679.0" + "@aws-sdk/middleware-recursion-detection" "3.679.0" + "@aws-sdk/middleware-user-agent" "3.679.0" + "@aws-sdk/region-config-resolver" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@aws-sdk/util-endpoints" "3.679.0" + "@aws-sdk/util-user-agent-browser" "3.679.0" + "@aws-sdk/util-user-agent-node" "3.679.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.8" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@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.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-defaults-mode-browser" "^3.0.23" + "@smithy/util-defaults-mode-node" "^3.0.23" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@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== +"@aws-sdk/client-sts@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.679.0.tgz#4641c24032ebd69a6e0e4eb28477749e21e69884" + integrity sha512-3CvrT8w1RjFu1g8vKA5Azfr5V83r2/b68Ock43WE003Bq/5Y38mwmYX7vk0fPHzC3qejt4YMAWk/C3fSKOy25g== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@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" + "@aws-sdk/client-sso-oidc" "3.679.0" + "@aws-sdk/core" "3.679.0" + "@aws-sdk/credential-provider-node" "3.679.0" + "@aws-sdk/middleware-host-header" "3.679.0" + "@aws-sdk/middleware-logger" "3.679.0" + "@aws-sdk/middleware-recursion-detection" "3.679.0" + "@aws-sdk/middleware-user-agent" "3.679.0" + "@aws-sdk/region-config-resolver" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@aws-sdk/util-endpoints" "3.679.0" + "@aws-sdk/util-user-agent-browser" "3.679.0" + "@aws-sdk/util-user-agent-node" "3.679.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.8" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@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.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-defaults-mode-browser" "^3.0.23" + "@smithy/util-defaults-mode-node" "^3.0.23" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@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" +"@aws-sdk/core@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.679.0.tgz#102aa1d19db5bdcabefc2dcd044f2fb5d0771568" + integrity sha512-CS6PWGX8l4v/xyvX8RtXnBisdCa5+URzKd0L6GvHChype9qKUVxO/Gg6N/y43Hvg7MNWJt9FBPNWIxUB+byJwg== + dependencies: + "@aws-sdk/types" "3.679.0" + "@smithy/core" "^2.4.8" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/signature-v4" "^4.2.0" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/util-middleware" "^3.0.7" fast-xml-parser "4.4.1" tslib "^2.6.2" -"@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== +"@aws-sdk/credential-provider-env@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.679.0.tgz#abf297714b77197a9da0d3d95a0f5687ae28e5b3" + integrity sha512-EdlTYbzMm3G7VUNAMxr9S1nC1qUNqhKlAxFU8E7cKsAe8Bp29CD5HAs3POc56AVo9GC4yRIS+/mtlZSmrckzUA== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/property-provider" "^3.1.6" - "@smithy/types" "^3.4.2" + "@aws-sdk/core" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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" +"@aws-sdk/credential-provider-http@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.679.0.tgz#9fc29f4ec7ab52ecf394288c05295823e818d812" + integrity sha512-ZoKLubW5DqqV1/2a3TSn+9sSKg0T8SsYMt1JeirnuLJF0mCoYFUaWMyvxxKuxPoqvUsaycxKru4GkpJ10ltNBw== + dependencies: + "@aws-sdk/core" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/util-stream" "^3.1.9" tslib "^2.6.2" -"@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" +"@aws-sdk/credential-provider-ini@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.679.0.tgz#0115c9e4813de3fcf0bf20f6156b6bf4b62d8431" + integrity sha512-Rg7t8RwUzKcumpipG4neZqaeJ6DF+Bco1+FHn5BZB68jpvwvjBjcQUuWkxj18B6ctYHr1fkunnzeKEn/+vy7+w== + dependencies: + "@aws-sdk/core" "3.679.0" + "@aws-sdk/credential-provider-env" "3.679.0" + "@aws-sdk/credential-provider-http" "3.679.0" + "@aws-sdk/credential-provider-process" "3.679.0" + "@aws-sdk/credential-provider-sso" "3.679.0" + "@aws-sdk/credential-provider-web-identity" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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" +"@aws-sdk/credential-provider-node@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.679.0.tgz#f3012b7e305aa1151c1472ece3f422f66666bc7c" + integrity sha512-E3lBtaqCte8tWs6Rkssc8sLzvGoJ10TLGvpkijOlz43wPd6xCRh1YLwg6zolf9fVFtEyUs/GsgymiASOyxhFtw== + dependencies: + "@aws-sdk/credential-provider-env" "3.679.0" + "@aws-sdk/credential-provider-http" "3.679.0" + "@aws-sdk/credential-provider-ini" "3.679.0" + "@aws-sdk/credential-provider-process" "3.679.0" + "@aws-sdk/credential-provider-sso" "3.679.0" + "@aws-sdk/credential-provider-web-identity" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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== +"@aws-sdk/credential-provider-process@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.679.0.tgz#a06b5193cdad2c14382708bcd44d487af52b11dc" + integrity sha512-u/p4TV8kQ0zJWDdZD4+vdQFTMhkDEJFws040Gm113VHa/Xo1SYOjbpvqeuFoz6VmM0bLvoOWjxB9MxnSQbwKpQ== dependencies: - "@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" + "@aws-sdk/core" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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" +"@aws-sdk/credential-provider-sso@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.679.0.tgz#ad07de8f9a0c3e5fe7bd660e1847867643ab480e" + integrity sha512-SAtWonhi9asxn0ukEbcE81jkyanKgqpsrtskvYPpO9Z9KOednM4Cqt6h1bfcS9zaHjN2zu815Gv8O7WiV+F/DQ== + dependencies: + "@aws-sdk/client-sso" "3.679.0" + "@aws-sdk/core" "3.679.0" + "@aws-sdk/token-providers" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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== +"@aws-sdk/credential-provider-web-identity@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.679.0.tgz#5871c44e5846e7c93810fd033224c00493db65a3" + integrity sha512-a74tLccVznXCaBefWPSysUcLXYJiSkeUmQGtalNgJ1vGkE36W5l/8czFiiowdWdKWz7+x6xf0w+Kjkjlj42Ung== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/property-provider" "^3.1.6" - "@smithy/types" "^3.4.2" + "@aws-sdk/core" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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== +"@aws-sdk/middleware-bucket-endpoint@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.679.0.tgz#cc5acad018d3b1646340fa2d0d0d412436b95e04" + integrity sha512-5EpiPhhGgnF+uJR4DzWUk6Lx3pOn9oM6JGXxeHsiynfoBfq7vHMleq+uABHHSQS+y7XzbyZ7x8tXNQlliMwOsg== dependencies: - "@aws-sdk/types" "3.654.0" - "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/node-config-provider" "^3.1.7" - "@smithy/protocol-http" "^4.1.3" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.679.0" + "@aws-sdk/util-arn-parser" "3.679.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" "@smithy/util-config-provider" "^3.0.0" tslib "^2.6.2" -"@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== +"@aws-sdk/middleware-expect-continue@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.679.0.tgz#6b22403fa6d7a7b9b0312c4453cfef69da66334b" + integrity sha512-nYsh9PdWrF4EahTRdXHGlNud82RPc508CNGdh1lAGfPU3tNveGfMBX3PcGBtPOse3p9ebNKRWVmUc9eXSjGvHA== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/protocol-http" "^4.1.3" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.679.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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== +"@aws-sdk/middleware-flexible-checksums@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.679.0.tgz#ccf5b58f4ad3056076877898d94f2473b667083c" + integrity sha512-2Nf3rnrcog3GRRdXxc623wkQPH3WXhz8oZ+KHuXBeBKX01zbp7bz22QAZKqw3Oo2lv+LQNEDzIfQYn7leXLZGQ== dependencies: "@aws-crypto/crc32" "5.2.0" "@aws-crypto/crc32c" "5.2.0" - "@aws-sdk/types" "3.654.0" + "@aws-sdk/core" "3.679.0" + "@aws-sdk/types" "3.679.0" "@smithy/is-array-buffer" "^3.0.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/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + "@smithy/util-middleware" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@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== +"@aws-sdk/middleware-host-header@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.679.0.tgz#1eabe42250c57a9e28742dd04786781573faad1a" + integrity sha512-y176HuQ8JRY3hGX8rQzHDSbCl9P5Ny9l16z4xmaiLo+Qfte7ee4Yr3yaAKd7GFoJ3/Mhud2XZ37fR015MfYl2w== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/protocol-http" "^4.1.3" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.679.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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== +"@aws-sdk/middleware-location-constraint@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.679.0.tgz#99ed75f1bf5ec005656af1c9efdb35aa2ddc7216" + integrity sha512-SA1C1D3XgoKTGxyNsOqd016ONpk46xJLWDgJUd00Zb21Ox5wYCoY6aDRKiaMRW+1VfCJdezs1Do3XLyIU9KxyA== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.679.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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== +"@aws-sdk/middleware-logger@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.679.0.tgz#cb0f205ddb5341d8327fc9ca1897bf06526c1896" + integrity sha512-0vet8InEj7nvIvGKk+ch7bEF5SyZ7Us9U7YTEgXPrBNStKeRUsgwRm0ijPWWd0a3oz2okaEwXsFl7G/vI0XiEA== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.679.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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== +"@aws-sdk/middleware-recursion-detection@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.679.0.tgz#3542de5baa466abffbfe5ee485fd87f60d5f917e" + integrity sha512-sQoAZFsQiW/LL3DfKMYwBoGjYDEnMbA9WslWN8xneCmBAwKo6IcSksvYs23PP8XMIoBGe2I2J9BSr654XWygTQ== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/protocol-http" "^4.1.3" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.679.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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.654.0" - "@aws-sdk/types" "3.654.0" - "@aws-sdk/util-arn-parser" "3.568.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" +"@aws-sdk/middleware-sdk-s3@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.679.0.tgz#bc3ce2cf5de927f8cb75a0086ad8431a37434b7f" + integrity sha512-4zcT193F7RkEfqlS6ZdwyNQ0UUp9s66msNXgItugasTbjf7oqfWDas7N+BG8ADB/Ql3wvRUh9I+zdrVkxxw3BQ== + dependencies: + "@aws-sdk/core" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@aws-sdk/util-arn-parser" "3.679.0" + "@smithy/core" "^2.4.8" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/signature-v4" "^4.2.0" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.6" - "@smithy/util-stream" "^3.1.6" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-stream" "^3.1.9" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@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== +"@aws-sdk/middleware-ssec@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.679.0.tgz#72c68c46073d1e93654b9b47be61cbcf852d7804" + integrity sha512-4GNUxXbs1M71uFHRiCAZtN0/g23ogI9YjMe5isAuYMHXwDB3MhqF7usKf954mBP6tplvN44vYlbJ84faaLrTtg== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.679.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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.654.0" - "@aws-sdk/util-endpoints" "3.654.0" - "@smithy/protocol-http" "^4.1.3" - "@smithy/types" "^3.4.2" +"@aws-sdk/middleware-user-agent@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.679.0.tgz#11e410967405139dee2bf69ca728be76f4e617ef" + integrity sha512-4hdeXhPDURPqQLPd9jCpUEo9fQITXl3NM3W1MwcJpE0gdUM36uXkQOYsTPeeU/IRCLVjK8Htlh2oCaM9iJrLCA== + dependencies: + "@aws-sdk/core" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@aws-sdk/util-endpoints" "3.679.0" + "@smithy/core" "^2.4.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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== +"@aws-sdk/region-config-resolver@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.679.0.tgz#d205dbaea8385aaf05e637fb7cb095c60bc708be" + integrity sha512-Ybx54P8Tg6KKq5ck7uwdjiKif7n/8g1x+V0V9uTjBjRWqaIgiqzXwKWoPj6NCNkE7tJNtqI4JrNxp/3S3HvmRw== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/node-config-provider" "^3.1.7" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.679.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.6" + "@smithy/util-middleware" "^3.0.7" tslib "^2.6.2" -"@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== +"@aws-sdk/signature-v4-multi-region@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.679.0.tgz#174ed23967d70513345a446cb12cb9cd13026141" + integrity sha512-g1D57e7YBhgXihCWIRBcTUvKquS3FS27xuA24EynY9teiTIq7vHkASxxDnMMMcmKHnCKLI5pkznjk0PuDJ4uJw== dependencies: - "@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" + "@aws-sdk/middleware-sdk-s3" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/signature-v4" "^4.2.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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== +"@aws-sdk/token-providers@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.679.0.tgz#7ec462d93941dd3cfdc245104ad32971f6ebc4f6" + integrity sha512-1/+Zso/x2jqgutKixYFQEGli0FELTgah6bm7aB+m2FAWH4Hz7+iMUsazg6nSWm714sG9G3h5u42Dmpvi9X6/hA== dependencies: - "@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" + "@aws-sdk/types" "3.679.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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== +"@aws-sdk/types@3.679.0", "@aws-sdk/types@^3.222.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.679.0.tgz#3737bb0f190add9e788b838a24cd5d8106dbed4f" + integrity sha512-NwVq8YvInxQdJ47+zz4fH3BRRLC6lL+WLkvr242PVBbUOLRyK/lkwHlfiKUoeVIMyK5NF+up6TRg71t/8Bny6Q== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/util-arn-parser@3.568.0": - version "3.568.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz#6a19a8c6bbaa520b6be1c278b2b8c17875b91527" - integrity sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w== +"@aws-sdk/util-arn-parser@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.679.0.tgz#1b7793c8ae31305ca6c6f7497066f3e74ad69716" + integrity sha512-CwzEbU8R8rq9bqUFryO50RFBlkfufV9UfMArHPWlo+lmsC+NlSluHQALoj6Jkq3zf5ppn1CN0c1DDLrEqdQUXg== dependencies: tslib "^2.6.2" -"@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== +"@aws-sdk/util-endpoints@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.679.0.tgz#b249ad8b4289e634cb5dfb3873a70b7aecbf323f" + integrity sha512-YL6s4Y/1zC45OvddvgE139fjeWSKKPgLlnfrvhVL7alNyY9n7beR4uhoDpNrt5mI6sn9qiBF17790o+xLAXjjg== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/types" "^3.4.2" - "@smithy/util-endpoints" "^2.1.2" + "@aws-sdk/types" "3.679.0" + "@smithy/types" "^3.5.0" + "@smithy/util-endpoints" "^2.1.3" tslib "^2.6.2" "@aws-sdk/util-locate-window@^3.0.0": - version "3.568.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz#2acc4b2236af0d7494f7e517401ba6b3c4af11ff" - integrity sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig== + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.679.0.tgz#8d5898624691e12ccbad839e103562002bbec85e" + integrity sha512-zKTd48/ZWrCplkXpYDABI74rQlbR0DNHs8nH95htfSLj9/mWRSwaGptoxwcihaq/77vi/fl2X3y0a1Bo8bt7RA== dependencies: tslib "^2.6.2" -"@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== +"@aws-sdk/util-user-agent-browser@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.679.0.tgz#bbaa5a8771c8a16388cd3cd934bb84a641ce907d" + integrity sha512-CusSm2bTBG1kFypcsqU8COhnYc6zltobsqs3nRrvYqYaOqtMnuE46K4XTWpnzKgwDejgZGOE+WYyprtAxrPvmQ== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/types" "^3.4.2" + "@aws-sdk/types" "3.679.0" + "@smithy/types" "^3.5.0" bowser "^2.11.0" tslib "^2.6.2" -"@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== +"@aws-sdk/util-user-agent-node@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.679.0.tgz#0d1cd6eba18bfe6d0106d78fc7aa9b74889c462b" + integrity sha512-Bw4uXZ+NU5ed6TNfo4tBbhBSW+2eQxXYjYBGl5gLUNUpg2pDFToQAP6rXBFiwcG52V2ny5oLGiD82SoYuYkAVg== dependencies: - "@aws-sdk/types" "3.654.0" - "@smithy/node-config-provider" "^3.1.7" - "@smithy/types" "^3.4.2" + "@aws-sdk/middleware-user-agent" "3.679.0" + "@aws-sdk/types" "3.679.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@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== +"@aws-sdk/xml-builder@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.679.0.tgz#96ccb7a4a4d4faa881d1fec5fc0554dc726843b5" + integrity sha512-nPmhVZb39ty5bcQ7mAwtjezBcsBqTYZ9A2D9v/lE92KCLdu5RhSkPH7O71ZqbZx1mUSg9fAOxHPiG79U5VlpLQ== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.0.tgz#9374b5cd068d128dac0b94ff482594273b1c2815" + integrity sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g== dependencies: - "@babel/highlight" "^7.24.7" + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/compat-data@^7.25.2": - 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/compat-data@^7.25.9": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.0.tgz#f02ba6d34e88fadd5e8861e8b38902f43cc1c819" + integrity sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9", "@babel/core@^7.24.7": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" - integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" + integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.25.0" - "@babel/helper-compilation-targets" "^7.25.2" - "@babel/helper-module-transforms" "^7.25.2" - "@babel/helpers" "^7.25.0" - "@babel/parser" "^7.25.0" - "@babel/template" "^7.25.0" - "@babel/traverse" "^7.25.2" - "@babel/types" "^7.25.2" + "@babel/code-frame" "^7.26.0" + "@babel/generator" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.0" + "@babel/parser" "^7.26.0" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.26.0" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -705,9 +717,9 @@ semver "^6.3.1" "@babel/eslint-parser@^7.24.7": - version "7.25.1" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.1.tgz#469cee4bd18a88ff3edbdfbd227bd20e82aa9b82" - integrity sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz#603c68a63078796527bc9d0833f5e52dd5f9224c" + integrity sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" @@ -722,97 +734,79 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.24.9", "@babel/generator@^7.25.0", "@babel/generator@^7.25.6", "@babel/generator@^7.7.2": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.6.tgz#0df1ad8cb32fe4d2b01d8bf437f153d19342a87c" - integrity sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw== +"@babel/generator@^7.24.9", "@babel/generator@^7.25.9", "@babel/generator@^7.26.0", "@babel/generator@^7.7.2": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.0.tgz#505cc7c90d92513f458a477e5ef0703e7c91b8d7" + integrity sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w== dependencies: - "@babel/types" "^7.25.6" + "@babel/parser" "^7.26.0" + "@babel/types" "^7.26.0" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" + jsesc "^3.0.2" -"@babel/helper-compilation-targets@^7.24.8", "@babel/helper-compilation-targets@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" - integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== +"@babel/helper-compilation-targets@^7.24.8", "@babel/helper-compilation-targets@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" + integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== dependencies: - "@babel/compat-data" "^7.25.2" - "@babel/helper-validator-option" "^7.24.8" - browserslist "^4.23.1" + "@babel/compat-data" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-module-imports@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" - integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== +"@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" -"@babel/helper-module-transforms@^7.24.9", "@babel/helper-module-transforms@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" - integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== +"@babel/helper-module-transforms@^7.24.9", "@babel/helper-module-transforms@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" + integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-simple-access" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - "@babel/traverse" "^7.25.2" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" - integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" + integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== -"@babel/helper-simple-access@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" - integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== -"@babel/helper-string-parser@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" - integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== - -"@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== - -"@babel/helper-validator-option@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" - integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== -"@babel/helpers@^7.24.8", "@babel/helpers@^7.25.0": - 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.6" +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== -"@babel/highlight@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== +"@babel/helpers@^7.24.8", "@babel/helpers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" + integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== dependencies: - "@babel/helper-validator-identifier" "^7.24.7" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.8", "@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== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.8", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.0.tgz#710a75a7d805a8f72753154e451474e9795b121c" + integrity sha512-aP8x5pIw3xvYr/sXT+SEUwyhrXT8rUJRZltK/qN3Db80dcKpTett8cJxHyjk+xYSVXvNnl2SfcJVjbwxpOSscA== dependencies: - "@babel/types" "^7.25.6" + "@babel/types" "^7.26.0" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -843,11 +837,11 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-import-attributes@^7.24.7": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz#6d4c78f042db0e82fd6436cd65fec5dc78ad2bde" - integrity sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" + integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" @@ -864,11 +858,11 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" - integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" + integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" @@ -927,57 +921,56 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz#04db9ce5a9043d9c635e75ae7969a2cd50ca97ff" - integrity sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" + integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/runtime-corejs3@^7.12.5": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.25.6.tgz#5e3facf42775cc95bcde95746e940061931286e4" - integrity sha512-Gz0Nrobx8szge6kQQ5Z5MX9L3ObqNwCQY1PSwSNzreFL7aHGxv8Fp2j3ETV6/wWdbiV+mW6OSm8oQhg3Tcsniw== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.26.0.tgz#5af6bed16073eb4a0191233d61e158a5c768c430" + integrity sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w== dependencies: core-js-pure "^3.30.2" regenerator-runtime "^0.14.0" "@babel/runtime@^7.12.5": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.6.tgz#9afc3289f7184d8d7f98b099884c26317b9264d2" - integrity sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.24.7", "@babel/template@^7.25.0", "@babel/template@^7.3.3": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" - integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/parser" "^7.25.0" - "@babel/types" "^7.25.0" - -"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.2": - 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.6" - "@babel/parser" "^7.25.6" - "@babel/template" "^7.25.0" - "@babel/types" "^7.25.6" +"@babel/template@^7.24.7", "@babel/template@^7.25.9", "@babel/template@^7.3.3": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/traverse@^7.24.8", "@babel/traverse@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" + integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/types" "^7.25.9" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.24.9", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.6", "@babel/types@^7.3.3": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" - integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.9", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.3.3": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff" + integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA== dependencies: - "@babel/helper-string-parser" "^7.24.8" - "@babel/helper-validator-identifier" "^7.24.7" - to-fast-properties "^2.0.0" + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -1069,9 +1062,9 @@ yoctocolors-cjs "^2.1.2" "@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== + version "1.0.7" + resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.7.tgz#d050ccc0eabfacc0248c4ff647a9dfba1b01594b" + integrity sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw== "@inquirer/input@^2.2.4": version "2.3.0" @@ -1081,7 +1074,7 @@ "@inquirer/core" "^9.1.0" "@inquirer/type" "^1.5.3" -"@inquirer/select@^2.3.10": +"@inquirer/select@^2.5.0": version "2.5.0" resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-2.5.0.tgz#345c6908ecfaeef3d84ddd2f9feb2f487c558efb" integrity sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA== @@ -1354,13 +1347,12 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@jsforce/jsforce-node@^3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@jsforce/jsforce-node/-/jsforce-node-3.4.1.tgz#36f5cba775b395eeedba676a78eafe447c3f4b28" - integrity sha512-PsBKfglH0/8W/Srr4LsxEFsVmjmZjEj/T4XLGpbBoK8yVObwbiMk4VqwA6XwiA6SHqnEqqQbHZxk2rr7dZC+4A== +"@jsforce/jsforce-node@^3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@jsforce/jsforce-node/-/jsforce-node-3.6.1.tgz#cdd112a33b8139ca798dd4eef91d3dc2a5a0f291" + integrity sha512-N294vrCY7bIdHzTNAHe0t20riTxozEyvCmYPM4rp/C7uGdBX3AYrPDBdojw7rsXOBsRtoFqr7L/tUwMbw1hRTg== dependencies: "@sindresorhus/is" "^4" - abort-controller "^3.0.0" base64url "^3.0.1" csv-parse "^5.5.2" csv-stringify "^6.4.4" @@ -1369,7 +1361,6 @@ https-proxy-agent "^5.0.0" multistream "^3.1.0" node-fetch "^2.6.1" - strip-ansi "^6.0.0" xml2js "^0.6.2" "@lwc/eslint-plugin-lwc@^1.8.0": @@ -1476,10 +1467,10 @@ wordwrap "^1.0.0" wrap-ansi "^7.0.0" -"@oclif/core@^4": - version "4.0.22" - resolved "https://registry.yarnpkg.com/@oclif/core/-/core-4.0.22.tgz#acb233c0c18ff4f365caca15e29e2807a4325709" - integrity sha512-aXM2O4g7f+kPNzhhOfqGOVRVYDxTVrH7Y720MuH0Twq5WHMxI4XwntnyBaRscoCPG6FWhItZLtiZxsvaUdupGg== +"@oclif/core@^4", "@oclif/core@^4.0.29": + version "4.0.30" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-4.0.30.tgz#65672282756bf19fde3830cab6d8031bf6236064" + integrity sha512-Ak3OUdOcoovIRWZOT6oC5JhZgyJD90uWX/7HjSofn+C4LEmHxxfiyu04a73dwnezfzqDu9jEXfd2mQOOC54KZw== dependencies: ansi-escapes "^4.3.2" ansis "^3.3.2" @@ -1490,9 +1481,10 @@ get-package-type "^0.1.0" globby "^11.1.0" indent-string "^4.0.0" - is-wsl "^2.2.0" + is-wsl "^3" lilconfig "^3.1.2" minimatch "^9.0.5" + semver "^7.6.3" string-width "^4.2.3" supports-color "^8" widest-line "^3.1.0" @@ -1506,17 +1498,17 @@ dependencies: "@oclif/core" "^2.15.0" -"@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== +"@oclif/plugin-help@^6.2.14": + version "6.2.16" + resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-6.2.16.tgz#3cb6c068739bc934159dc430d4f8ca7f9effa22a" + integrity sha512-1x/Bm0LebDouDOfsjkOz+6AXqY6gIZ6JmmU/KuF/GnUmowDvj5i3MFlP9uBTiN8UsOUeT9cdLwnc1kmitHWFTg== dependencies: "@oclif/core" "^4" "@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== + version "3.2.22" + resolved "https://registry.yarnpkg.com/@oclif/plugin-not-found/-/plugin-not-found-3.2.22.tgz#f217622cfc61ae047c53059fa7990d982d1e6aff" + integrity sha512-snd/gmYjTYIa8vr5rPLNus0ymKhhITRTFWLlYCJvAZTs2kX+vUMMdpKId9pEPSzoVGmyddNVshWSCJ2FSgR0mg== dependencies: "@inquirer/confirm" "^3.2.0" "@oclif/core" "^4" @@ -1524,9 +1516,9 @@ fast-levenshtein "^3.0.0" "@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== + version "3.1.20" + resolved "https://registry.yarnpkg.com/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-3.1.20.tgz#2ac90286a0b59860c66956c37a74b27f2a4e78d0" + integrity sha512-gvovUQXwWkQZzHG7WknLq+yoSe61Cbv45rEUooKbzo7tfRDChFnCyLQ+OCCldQOsSYvS/KTsiawyyCetSaCR1g== dependencies: "@oclif/core" "^4" ansis "^3.3.1" @@ -1562,11 +1554,11 @@ integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== "@salesforce/cli-plugins-testkit@^5.3.8": - 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== + version "5.3.34" + resolved "https://registry.yarnpkg.com/@salesforce/cli-plugins-testkit/-/cli-plugins-testkit-5.3.34.tgz#456503a30dade3459e1736a77a362fce2b41947b" + integrity sha512-OiXjWiLM1euGNr+DRK8iaOYAhp1gnhkD9oxbk+TZC2gQ/RYQ39dd/FEIGqyleCmeeFQMWupKXXni1dEighgoCw== dependencies: - "@salesforce/core" "^8.5.7" + "@salesforce/core" "^8.6.2" "@salesforce/kit" "^3.2.3" "@salesforce/ts-types" "^2.0.11" "@types/shelljs" "^0.8.15" @@ -1577,35 +1569,35 @@ strip-ansi "6.0.1" ts-retry-promise "^0.8.1" -"@salesforce/code-analyzer-core@^0.13.2": - version "0.13.2" - resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-core/-/code-analyzer-core-0.13.2.tgz#c2c05d5d04a1e0a3369badad476333a80b3c92ca" - integrity sha512-SDIF3s5j4bFEOEldGgq0pUZKAKZhbwBCUQ6r5UznEmuoiawiLTEAuR7YgpAS1+upw/zfaOJg1gKoVydxDNF3Kg== +"@salesforce/code-analyzer-core@0.14.1": + version "0.14.1" + resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-core/-/code-analyzer-core-0.14.1.tgz#6b14e12b1bbfc32ea4401b03f86117330431c952" + integrity sha512-kTgrGAsDxpeV4FU+V0i91h9byvD6tECJHfX0lKv/6bTfDwNJEuLFypb1t/g+w8qfIymRLq7IYvJ+wFjYAJTdDA== dependencies: - "@salesforce/code-analyzer-engine-api" "0.10.0" + "@salesforce/code-analyzer-engine-api" "0.11.1" "@types/js-yaml" "^4.0.9" "@types/node" "^20.0.0" csv-stringify "^6.5.0" js-yaml "^4.1.0" xmlbuilder "^15.1.1" -"@salesforce/code-analyzer-engine-api@0.10.0": - version "0.10.0" - resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-engine-api/-/code-analyzer-engine-api-0.10.0.tgz#28675d8300c49bc6316cdd468ee42ea1f16ef15a" - integrity sha512-PyFJgGLOc7Wi+epOEtKg7MHQUlUhOCoKGOEXtcJWh5iaj+b1LCHxhwrN4jZvOPTN9NfB0fcVIH/5JvCdCdqkVA== +"@salesforce/code-analyzer-engine-api@0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-engine-api/-/code-analyzer-engine-api-0.11.1.tgz#c4e1ad9375263d1daf70cfef2118b11013ce4b4a" + integrity sha512-RW2OU3dHNL+ecYQ5B1TSmKCOFXlruT1M4ATG0pTp3E9wYvz0oah8wWeaFPRT37HNn+Sf7SNYpkbIVDZYwV46iw== dependencies: "@types/node" "^20.0.0" -"@salesforce/code-analyzer-eslint-engine@0.10.0": - version "0.10.0" - resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-eslint-engine/-/code-analyzer-eslint-engine-0.10.0.tgz#dabde01da4e0a37d97f0f6301b02b9e08ee94f94" - integrity sha512-wXCzSBuGsXvJ27b5Wrabkziurl4Pdj037bPcXf4EmLUFff5kv0P0ZhzDB2okW7yWtcQAG+UyVSCqTUHhy4Y5vQ== +"@salesforce/code-analyzer-eslint-engine@0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-eslint-engine/-/code-analyzer-eslint-engine-0.11.1.tgz#f640324b05411404c6907e224ca482d3b57564e0" + integrity sha512-wOuY8nAtBnnkH2Bi8kz3PlJr97Mc6fQgKzOnUJR6fC3AcdLTz8rZ9YWR8yQdi9ASEPfGQq9ZyA20PDEzJMWezQ== dependencies: "@babel/core" "^7.24.7" "@babel/eslint-parser" "^7.24.7" "@eslint/js" "^8.57.0" "@lwc/eslint-plugin-lwc" "^1.8.0" - "@salesforce/code-analyzer-engine-api" "0.10.0" + "@salesforce/code-analyzer-engine-api" "0.11.1" "@salesforce/eslint-config-lwc" "^3.5.3" "@salesforce/eslint-plugin-lightning" "^1.0.0" "@types/eslint" "^8.56.10" @@ -1616,31 +1608,33 @@ eslint-plugin-import "^2.29.1" eslint-plugin-jest "^28.6.0" -"@salesforce/code-analyzer-pmd-engine@0.10.1": - version "0.10.1" - resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-pmd-engine/-/code-analyzer-pmd-engine-0.10.1.tgz#ec63c66f7d752188b1ef6240c9d9391a32c4ddbd" - integrity sha512-X8lFTMzq5Nk6xlaod0YDkXo9BXEIulJL1PH/Jq+GAB1gDRYjnETWchk/sIo9BnbHsw8mSCK9TgtEOlRq9DVz2Q== +"@salesforce/code-analyzer-pmd-engine@0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-pmd-engine/-/code-analyzer-pmd-engine-0.11.1.tgz#8c6be62ad172ed1650149fc55840bac7490bd4df" + integrity sha512-hIbqT+PBhNiRu0NbYs66aNw8ML+PtvB0wneQ7IvOErvFhznL6RY7AokXix3FxMkCk4xyBdAC1s080m+QmojCug== dependencies: - "@salesforce/code-analyzer-engine-api" "0.10.0" + "@salesforce/code-analyzer-engine-api" "0.11.1" "@types/node" "^20.0.0" + "@types/semver" "^7.5.8" "@types/tmp" "^0.2.6" + semver "^7.6.3" tmp "^0.2.3" -"@salesforce/code-analyzer-regex-engine@0.10.0": - version "0.10.0" - resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-regex-engine/-/code-analyzer-regex-engine-0.10.0.tgz#8728a00be3117b21c0b1ac50d1eb140aed052459" - integrity sha512-e/WZYko1o1aFodnyLGdMQFSJQ/dqOosqgTpJJNd8ltrgVdLS/J9B2XyqyKBDRcTviLEcCJVNVQi7CRDIBFctIw== +"@salesforce/code-analyzer-regex-engine@0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-regex-engine/-/code-analyzer-regex-engine-0.11.1.tgz#e34974f356bc20c1afd8c9d6834fb4dcdc461fc7" + integrity sha512-KVdg44ENoIfripHIqVwmf2UemlAtQGQOw4Kn0fuqrjOXFbKATjKrJsawZZhyoKtSdejWt58ni1bjCvYesej93g== dependencies: - "@salesforce/code-analyzer-engine-api" "0.10.0" + "@salesforce/code-analyzer-engine-api" "0.11.1" "@types/node" "^20.0.0" isbinaryfile "^5.0.2" -"@salesforce/code-analyzer-retirejs-engine@0.10.0": - version "0.10.0" - resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-retirejs-engine/-/code-analyzer-retirejs-engine-0.10.0.tgz#62b521bb13af9a88ae2a5b0af08c44f64eac847f" - integrity sha512-SPbCFkdijPGoK8dsVIhEGSBlb27grahUWt7pGZrnFyhCgWmZ7hwmQ7FaSBBX7V8invV6VavvQh0SD+10ygoLxw== +"@salesforce/code-analyzer-retirejs-engine@0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-retirejs-engine/-/code-analyzer-retirejs-engine-0.11.1.tgz#2a12a97626f32ff4841182f4969361ac570d9f81" + integrity sha512-nCaU7Sg24EZ/l8RljCjQEHccs7FgM5+t5oXVYrVU0/UoOuMHjgZvELsit02WD63K65J0vAQkBEsgRO4s7mLtlQ== dependencies: - "@salesforce/code-analyzer-engine-api" "0.10.0" + "@salesforce/code-analyzer-engine-api" "0.11.1" "@types/node" "^20.0.0" "@types/tmp" "^0.2.6" isbinaryfile "^5.0.2" @@ -1695,12 +1689,12 @@ semver "^7.6.0" ts-retry-promise "^0.7.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== +"@salesforce/core@^8.6.2": + version "8.6.3" + resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.6.3.tgz#1a4d50eaa2b731c1e480986cef96b414ccafd347" + integrity sha512-fxY3J9AttGztTY45AYH4QP1cKB3OD1fJMDd1j/ALGCI6EMb2iMPp52awKVKHxrd/eTbZhn1OV5Jr0r6nJx5Hhw== dependencies: - "@jsforce/jsforce-node" "^3.4.1" + "@jsforce/jsforce-node" "^3.6.1" "@salesforce/kit" "^3.2.2" "@salesforce/schemas" "^1.9.0" "@salesforce/ts-types" "^2.0.10" @@ -1814,158 +1808,167 @@ 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.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== +"@smithy/abort-controller@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.6.tgz#d9de97b85ca277df6ffb9ee7cd83d5da793ee6de" + integrity sha512-0XuhuHQlEqbNQZp7QxxrFTdVWdwxch4vjxYgfInF91hZFkPxf9QDrdQka0KfxFMPqLNzSw0b95uGTrLliQUavQ== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@smithy/chunked-blob-reader-native@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.0.tgz#f1104b30030f76f9aadcbd3cdca4377bd1ba2695" - integrity sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg== +"@smithy/chunked-blob-reader-native@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.1.tgz#39045ed278ee1b6f4c12715c7565678557274c29" + integrity sha512-VEYtPvh5rs/xlyqpm5NRnfYLZn+q0SRPELbvBV+C/G7IQ+ouTuo+NKKa3ShG5OaFR8NYVMXls9hPYLTvIKKDrQ== dependencies: "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" -"@smithy/chunked-blob-reader@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-3.0.0.tgz#e5d3b04e9b273ba8b7ede47461e2aa96c8aa49e0" - integrity sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA== +"@smithy/chunked-blob-reader@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-4.0.0.tgz#754099909957fb1986c16eb88afad75919d7129d" + integrity sha512-jSqRnZvkT4egkq/7b6/QRCNXmmYVcHwnJldqJ3IhVpQE2atObVJ137xmGeuGFhjFUr8gCEVAOKwSY79OvpbDaQ== dependencies: tslib "^2.6.2" -"@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== +"@smithy/config-resolver@^3.0.10", "@smithy/config-resolver@^3.0.9": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.10.tgz#d9529d9893e5fae1f14cb1ffd55517feb6d7e50f" + integrity sha512-Uh0Sz9gdUuz538nvkPiyv1DZRX9+D15EKDtnQP5rYVAzM/dnYk3P8cg73jcxyOitPgT3mE3OVj7ky7sibzHWkw== dependencies: - "@smithy/node-config-provider" "^3.1.7" - "@smithy/types" "^3.4.2" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/types" "^3.6.0" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.6" + "@smithy/util-middleware" "^3.0.8" tslib "^2.6.2" -"@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/core@^2.4.8", "@smithy/core@^2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.5.1.tgz#7f635b76778afca845bcb401d36f22fa37712f15" + integrity sha512-DujtuDA7BGEKExJ05W5OdxCoyekcKT3Rhg1ZGeiUWaz2BJIWXjZmsG/DIP4W48GHno7AQwRsaCb8NcBgH3QZpg== + dependencies: + "@smithy/middleware-serde" "^3.0.8" + "@smithy/protocol-http" "^4.1.5" + "@smithy/types" "^3.6.0" "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-middleware" "^3.0.6" + "@smithy/util-middleware" "^3.0.8" + "@smithy/util-stream" "^3.2.1" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@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== +"@smithy/credential-provider-imds@^3.2.4", "@smithy/credential-provider-imds@^3.2.5": + version "3.2.5" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.5.tgz#dbfd849a4a7ebd68519cd9fc35f78d091e126d0a" + integrity sha512-4FTQGAsuwqTzVMmiRVTn0RR9GrbRfkP0wfu/tXWVHd2LgNpTY0uglQpIScXK4NaEyXbB3JmZt8gfVqO50lP8wg== dependencies: - "@smithy/node-config-provider" "^3.1.7" - "@smithy/property-provider" "^3.1.6" - "@smithy/types" "^3.4.2" - "@smithy/url-parser" "^3.0.6" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/property-provider" "^3.1.8" + "@smithy/types" "^3.6.0" + "@smithy/url-parser" "^3.0.8" tslib "^2.6.2" -"@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== +"@smithy/eventstream-codec@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.7.tgz#5bfaffbc83ae374ffd85a755a8200ba3c7aed016" + integrity sha512-kVSXScIiRN7q+s1x7BrQtZ1Aa9hvvP9FeCqCdBxv37GimIHgBCOnZ5Ip80HLt0DhnAKpiobFdGqTFgbaJNrazA== dependencies: "@aws-crypto/crc32" "5.2.0" - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" "@smithy/util-hex-encoding" "^3.0.0" tslib "^2.6.2" -"@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== +"@smithy/eventstream-serde-browser@^3.0.10": + version "3.0.11" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.11.tgz#019f3d1016d893b65ef6efec8c5e2fa925d0ac3d" + integrity sha512-Pd1Wnq3CQ/v2SxRifDUihvpXzirJYbbtXfEnnLV/z0OGCTx/btVX74P86IgrZkjOydOASBGXdPpupYQI+iO/6A== dependencies: - "@smithy/eventstream-serde-universal" "^3.0.8" - "@smithy/types" "^3.4.2" + "@smithy/eventstream-serde-universal" "^3.0.10" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/eventstream-serde-config-resolver@^3.0.7": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.8.tgz#bba17a358818e61993aaa73e36ea4023c5805556" + integrity sha512-zkFIG2i1BLbfoGQnf1qEeMqX0h5qAznzaZmMVNnvPZz9J5AWBPkOMckZWPedGUPcVITacwIdQXoPcdIQq5FRcg== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/eventstream-serde-node@^3.0.9": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.10.tgz#da40b872001390bb47807186855faba8172b3b5b" + integrity sha512-hjpU1tIsJ9qpcoZq9zGHBJPBOeBGYt+n8vfhDwnITPhEre6APrvqq/y3XMDEGUT2cWQ4ramNqBPRbx3qn55rhw== dependencies: - "@smithy/eventstream-serde-universal" "^3.0.8" - "@smithy/types" "^3.4.2" + "@smithy/eventstream-serde-universal" "^3.0.10" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/eventstream-serde-universal@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.10.tgz#b24e66fec9ec003eb0a1d6733fa22ded43129281" + integrity sha512-ewG1GHbbqsFZ4asaq40KmxCmXO+AFSM1b+DcO2C03dyJj/ZH71CiTg853FSE/3SHK9q3jiYQIFjlGSwfxQ9kww== dependencies: - "@smithy/eventstream-codec" "^3.1.5" - "@smithy/types" "^3.4.2" + "@smithy/eventstream-codec" "^3.1.7" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/fetch-http-handler@^3.2.9": + version "3.2.9" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.9.tgz#8d5199c162a37caa37a8b6848eefa9ca58221a0b" + integrity sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A== dependencies: - "@smithy/protocol-http" "^4.1.3" - "@smithy/querystring-builder" "^3.0.6" - "@smithy/types" "^3.4.2" + "@smithy/protocol-http" "^4.1.4" + "@smithy/querystring-builder" "^3.0.7" + "@smithy/types" "^3.5.0" "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" -"@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== +"@smithy/fetch-http-handler@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-4.0.0.tgz#3763cb5178745ed630ed5bc3beb6328abdc31f36" + integrity sha512-MLb1f5tbBO2X6K4lMEKJvxeLooyg7guq48C2zKr4qM7F2Gpkz4dc+hdSgu77pCJ76jVqFBjZczHYAs6dp15N+g== dependencies: - "@smithy/chunked-blob-reader" "^3.0.0" - "@smithy/chunked-blob-reader-native" "^3.0.0" - "@smithy/types" "^3.4.2" + "@smithy/protocol-http" "^4.1.5" + "@smithy/querystring-builder" "^3.0.8" + "@smithy/types" "^3.6.0" + "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" -"@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== +"@smithy/hash-blob-browser@^3.1.6": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.7.tgz#717a75129f3587e78c3cac74727448257a59dcc3" + integrity sha512-4yNlxVNJifPM5ThaA5HKnHkn7JhctFUHvcaz6YXxHlYOSIrzI6VKQPTN8Gs1iN5nqq9iFcwIR9THqchUCouIfg== + dependencies: + "@smithy/chunked-blob-reader" "^4.0.0" + "@smithy/chunked-blob-reader-native" "^3.0.1" + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + +"@smithy/hash-node@^3.0.7": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.8.tgz#f451cc342f74830466b0b39bf985dc3022634065" + integrity sha512-tlNQYbfpWXHimHqrvgo14DrMAgUBua/cNoz9fMYcDmYej7MAmUcjav/QKQbFc3NrcPxeJ7QClER4tWZmfwoPng== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@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== +"@smithy/hash-stream-node@^3.1.6": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.7.tgz#df5c3b7aa8dbe9c389ff7857ce9145694f550b7e" + integrity sha512-xMAsvJ3hLG63lsBVi1Hl6BBSfhd8/Qnp8fC06kjOpJvyyCEXdwHITa5Kvdsk6gaAXLhbZMhQMIGvgUbfnJDP6Q== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@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== +"@smithy/invalid-dependency@^3.0.7": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.8.tgz#4d381a4c24832371ade79e904a72c173c9851e5f" + integrity sha512-7Qynk6NWtTQhnGTTZwks++nJhQ1O54Mzi7fz4PqZOiYXb4Z1Flpb2yRvdALoggTS8xjtohWUM+RygOtB30YL3Q== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@smithy/is-array-buffer@^2.2.0": @@ -1982,177 +1985,179 @@ dependencies: tslib "^2.6.2" -"@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== +"@smithy/md5-js@^3.0.7": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.8.tgz#837e54094007e87bf5196e11eca453d1c1e83a26" + integrity sha512-LwApfTK0OJ/tCyNUXqnWCKoE2b4rDSr4BJlDAVCkiWYeHESr+y+d5zlAanuLW6fnitVJRD/7d9/kN/ZM9Su4mA== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@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== +"@smithy/middleware-content-length@^3.0.9": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.10.tgz#738266f6d81436d7e3a86bea931bc64e04ae7dbf" + integrity sha512-T4dIdCs1d/+/qMpwhJ1DzOhxCZjZHbHazEPJWdB4GDi2HjIZllVzeBEcdJUN0fomV8DURsgOyrbEUzg3vzTaOg== dependencies: - "@smithy/protocol-http" "^4.1.3" - "@smithy/types" "^3.4.2" + "@smithy/protocol-http" "^4.1.5" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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" +"@smithy/middleware-endpoint@^3.1.4", "@smithy/middleware-endpoint@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.1.tgz#b9ee42d29d8f3a266883d293c4d6a586f7b60979" + integrity sha512-wWO3xYmFm6WRW8VsEJ5oU6h7aosFXfszlz3Dj176pTij6o21oZnzkCLzShfmRaaCHDkBXWBdO0c4sQAvLFP6zA== + dependencies: + "@smithy/core" "^2.5.1" + "@smithy/middleware-serde" "^3.0.8" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/shared-ini-file-loader" "^3.1.9" + "@smithy/types" "^3.6.0" + "@smithy/url-parser" "^3.0.8" + "@smithy/util-middleware" "^3.0.8" tslib "^2.6.2" -"@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" +"@smithy/middleware-retry@^3.0.23": + version "3.0.25" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.25.tgz#a6b1081fc1a0991ffe1d15e567e76198af01f37c" + integrity sha512-m1F70cPaMBML4HiTgCw5I+jFNtjgz5z5UdGnUbG37vw6kh4UvizFYjqJGHvicfgKMkDL6mXwyPp5mhZg02g5sg== + dependencies: + "@smithy/node-config-provider" "^3.1.9" + "@smithy/protocol-http" "^4.1.5" + "@smithy/service-error-classification" "^3.0.8" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" + "@smithy/util-middleware" "^3.0.8" + "@smithy/util-retry" "^3.0.8" tslib "^2.6.2" uuid "^9.0.1" -"@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== +"@smithy/middleware-serde@^3.0.7", "@smithy/middleware-serde@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.8.tgz#a46d10dba3c395be0d28610d55c89ff8c07c0cd3" + integrity sha512-Xg2jK9Wc/1g/MBMP/EUn2DLspN8LNt+GMe7cgF+Ty3vl+Zvu+VeZU5nmhveU+H8pxyTsjrAkci8NqY6OuvZnjA== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/middleware-stack@^3.0.7", "@smithy/middleware-stack@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.8.tgz#f1c7d9c7fe8280c6081141c88f4a76875da1fc43" + integrity sha512-d7ZuwvYgp1+3682Nx0MD3D/HtkmZd49N3JUndYWQXfRZrYEnCWYc8BHcNmVsPAp9gKvlurdg/mubE6b/rPS9MA== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/node-config-provider@^3.1.8", "@smithy/node-config-provider@^3.1.9": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.9.tgz#d27ba8e4753f1941c24ed0af824dbc6c492f510a" + integrity sha512-qRHoah49QJ71eemjuS/WhUXB+mpNtwHRWQr77J/m40ewBVVwvo52kYAmb7iuaECgGTTcYxHS4Wmewfwy++ueew== dependencies: - "@smithy/property-provider" "^3.1.6" - "@smithy/shared-ini-file-loader" "^3.1.7" - "@smithy/types" "^3.4.2" + "@smithy/property-provider" "^3.1.8" + "@smithy/shared-ini-file-loader" "^3.1.9" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/node-http-handler@^3.2.4", "@smithy/node-http-handler@^3.2.5": + version "3.2.5" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.2.5.tgz#ad9d9ba1528bf0d4a655135e978ecc14b3df26a2" + integrity sha512-PkOwPNeKdvX/jCpn0A8n9/TyoxjGZB8WVoJmm9YzsnAgggTj4CrjpRHlTQw7dlLZ320n1mY1y+nTRUDViKi/3w== dependencies: - "@smithy/abort-controller" "^3.1.4" - "@smithy/protocol-http" "^4.1.3" - "@smithy/querystring-builder" "^3.0.6" - "@smithy/types" "^3.4.2" + "@smithy/abort-controller" "^3.1.6" + "@smithy/protocol-http" "^4.1.5" + "@smithy/querystring-builder" "^3.0.8" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/property-provider@^3.1.7", "@smithy/property-provider@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.8.tgz#b1c5a3949effbb9772785ad7ddc5b4b235b10fbe" + integrity sha512-ukNUyo6rHmusG64lmkjFeXemwYuKge1BJ8CtpVKmrxQxc6rhUX0vebcptFA9MmrGsnLhwnnqeH83VTU9hwOpjA== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/protocol-http@^4.1.4", "@smithy/protocol-http@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.5.tgz#a1f397440f299b6a5abeed6866957fecb1bf5013" + integrity sha512-hsjtwpIemmCkm3ZV5fd/T0bPIugW1gJXwZ/hpuVubt2hEUApIoUTrf6qIdh9MAWlw0vjMrA1ztJLAwtNaZogvg== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/querystring-builder@^3.0.7", "@smithy/querystring-builder@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.8.tgz#0d845be53aa624771c518d1412881236ce12ed4f" + integrity sha512-btYxGVqFUARbUrN6VhL9c3dnSviIwBYD9Rz1jHuN1hgh28Fpv2xjU1HeCeDJX68xctz7r4l1PBnFhGg1WBBPuA== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" "@smithy/util-uri-escape" "^3.0.0" tslib "^2.6.2" -"@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== +"@smithy/querystring-parser@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.8.tgz#057a8e2d301eea8eac7071923100ba38a824d7df" + integrity sha512-BtEk3FG7Ks64GAbt+JnKqwuobJNX8VmFLBsKIwWr1D60T426fGrV2L3YS5siOcUhhp6/Y6yhBw1PSPxA5p7qGg== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/service-error-classification@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.8.tgz#265ad2573b972f6c7bdd1ad6c5155a88aeeea1c4" + integrity sha512-uEC/kCCFto83bz5ZzapcrgGqHOh/0r69sZ2ZuHlgoD5kYgXJEThCoTuw/y1Ub3cE7aaKdznb+jD9xRPIfIwD7g== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" -"@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== +"@smithy/shared-ini-file-loader@^3.1.8", "@smithy/shared-ini-file-loader@^3.1.9": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.9.tgz#1b77852b5bb176445e1d80333fa3f739313a4928" + integrity sha512-/+OsJRNtoRbtsX0UpSgWVxFZLsJHo/4sTr+kBg/J78sr7iC+tHeOvOJrS5hCpVQ6sWBbhWLp1UNiuMyZhE6pmA== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/signature-v4@^4.2.0": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.2.1.tgz#a918fd7d99af9f60aa07617506fa54be408126ee" + integrity sha512-NsV1jF4EvmO5wqmaSzlnTVetemBS3FZHdyc5CExbDljcyJCEEkJr8ANu2JvtNbVg/9MvKAWV44kTrGS+Pi4INg== dependencies: "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.3" - "@smithy/types" "^3.4.2" + "@smithy/protocol-http" "^4.1.5" + "@smithy/types" "^3.6.0" "@smithy/util-hex-encoding" "^3.0.0" - "@smithy/util-middleware" "^3.0.6" + "@smithy/util-middleware" "^3.0.8" "@smithy/util-uri-escape" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@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" +"@smithy/smithy-client@^3.4.0", "@smithy/smithy-client@^3.4.2": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.4.2.tgz#a6e3ed98330ce170cf482e765bd0c21e0fde8ae4" + integrity sha512-dxw1BDxJiY9/zI3cBqfVrInij6ShjpV4fmGHesGZZUiP9OSE/EVfdwdRz0PgvkEvrZHpsj2htRaHJfftE8giBA== + dependencies: + "@smithy/core" "^2.5.1" + "@smithy/middleware-endpoint" "^3.2.1" + "@smithy/middleware-stack" "^3.0.8" + "@smithy/protocol-http" "^4.1.5" + "@smithy/types" "^3.6.0" + "@smithy/util-stream" "^3.2.1" tslib "^2.6.2" -"@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== +"@smithy/types@^3.5.0", "@smithy/types@^3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.6.0.tgz#03a52bfd62ee4b7b2a1842c8ae3ada7a0a5ff3a4" + integrity sha512-8VXK/KzOHefoC65yRgCn5vG1cysPJjHnOVt9d0ybFQSmJgQj152vMn4EkYhGuaOmnnZvCPav/KnYyE6/KsNZ2w== dependencies: tslib "^2.6.2" -"@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== +"@smithy/url-parser@^3.0.7", "@smithy/url-parser@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.8.tgz#8057d91d55ba8df97d74576e000f927b42da9e18" + integrity sha512-4FdOhwpTW7jtSFWm7SpfLGKIBC9ZaTKG5nBF0wK24aoQKQyDIKUw3+KFWCQ9maMzrgTJIuOvOnsV2lLGW5XjTg== dependencies: - "@smithy/querystring-parser" "^3.0.6" - "@smithy/types" "^3.4.2" + "@smithy/querystring-parser" "^3.0.8" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@smithy/util-base64@^3.0.0": @@ -2201,37 +2206,37 @@ dependencies: tslib "^2.6.2" -"@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== +"@smithy/util-defaults-mode-browser@^3.0.23": + version "3.0.25" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.25.tgz#ef9b84272d1db23503ff155f9075a4543ab6dab7" + integrity sha512-fRw7zymjIDt6XxIsLwfJfYUfbGoO9CmCJk6rjJ/X5cd20+d2Is7xjU5Kt/AiDt6hX8DAf5dztmfP5O82gR9emA== dependencies: - "@smithy/property-provider" "^3.1.6" - "@smithy/smithy-client" "^3.3.2" - "@smithy/types" "^3.4.2" + "@smithy/property-provider" "^3.1.8" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" bowser "^2.11.0" tslib "^2.6.2" -"@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" +"@smithy/util-defaults-mode-node@^3.0.23": + version "3.0.25" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.25.tgz#c16fe3995c8e90ae318e336178392173aebe1e37" + integrity sha512-H3BSZdBDiVZGzt8TG51Pd2FvFO0PAx/A0mJ0EH8a13KJ6iUCdYnw/Dk/MdC1kTd0eUuUGisDFaxXVXo4HHFL1g== + dependencies: + "@smithy/config-resolver" "^3.0.10" + "@smithy/credential-provider-imds" "^3.2.5" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/property-provider" "^3.1.8" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/util-endpoints@^2.1.3": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.4.tgz#a29134c2b1982442c5fc3be18d9b22796e8eb964" + integrity sha512-kPt8j4emm7rdMWQyL0F89o92q10gvCUa6sBkBtDJ7nV2+P7wpXczzOfoDJ49CKXe5CCqb8dc1W+ZdLlrKzSAnQ== dependencies: - "@smithy/node-config-provider" "^3.1.7" - "@smithy/types" "^3.4.2" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@smithy/util-hex-encoding@^3.0.0": @@ -2241,31 +2246,31 @@ dependencies: tslib "^2.6.2" -"@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== +"@smithy/util-middleware@^3.0.7", "@smithy/util-middleware@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.8.tgz#372bc7a2845408ad69da039d277fc23c2734d0c6" + integrity sha512-p7iYAPaQjoeM+AKABpYWeDdtwQNxasr4aXQEA/OmbOaug9V0odRVDy3Wx4ci8soljE/JXQo+abV0qZpW8NX0yA== dependencies: - "@smithy/types" "^3.4.2" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/util-retry@^3.0.7", "@smithy/util-retry@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.8.tgz#9c607c175a4d8a87b5d8ebaf308f6b849e4dc4d0" + integrity sha512-TCEhLnY581YJ+g1x0hapPz13JFqzmh/pMWL2KEFASC51qCfw3+Y47MrTmea4bUE5vsdxQ4F6/KFbUeSz22Q1ow== dependencies: - "@smithy/service-error-classification" "^3.0.6" - "@smithy/types" "^3.4.2" + "@smithy/service-error-classification" "^3.0.8" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@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== +"@smithy/util-stream@^3.1.9", "@smithy/util-stream@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.2.1.tgz#f3055dc4c8caba8af4e47191ea7e773d0e5a429d" + integrity sha512-R3ufuzJRxSJbE58K9AEnL/uSZyVdHzud9wLS8tIbXclxKzoe09CRohj2xV8wpx5tj7ZbiJaKYcutMm1eYgz/0A== dependencies: - "@smithy/fetch-http-handler" "^3.2.7" - "@smithy/node-http-handler" "^3.2.2" - "@smithy/types" "^3.4.2" + "@smithy/fetch-http-handler" "^4.0.0" + "@smithy/node-http-handler" "^3.2.5" + "@smithy/types" "^3.6.0" "@smithy/util-base64" "^3.0.0" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-hex-encoding" "^3.0.0" @@ -2295,13 +2300,13 @@ "@smithy/util-buffer-from" "^3.0.0" tslib "^2.6.2" -"@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== +"@smithy/util-waiter@^3.1.6": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.7.tgz#e94f7b9fb8e3b627d78f8886918c76030cf41815" + integrity sha512-d5yGlQtmN/z5eoTtIYgkvOw27US2Ous4VycnXatyoImIF9tzlcpnKqQ/V7qhvJmb2p6xZne1NopCLakdTnkBBQ== dependencies: - "@smithy/abort-controller" "^3.1.4" - "@smithy/types" "^3.4.2" + "@smithy/abort-controller" "^3.1.6" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@szmarczak/http-timer@^5.0.1": @@ -2437,9 +2442,9 @@ "@types/istanbul-lib-report" "*" "@types/jest@^29.5.12": - version "29.5.13" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.13.tgz#8bc571659f401e6a719a7bf0dbcb8b78c71a8adc" - integrity sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg== + version "29.5.14" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" + integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -2472,11 +2477,11 @@ "@types/node" "*" "@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== + version "22.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.8.0.tgz#193c6f82f9356ce0e6bba86b59f2ffe06e7e320b" + integrity sha512-84rafSBHC/z1i1E3p0cJwKA+CfYDNSXX9WSZBRopjIzLET8oNt6ht2tei4C7izwDeEiLLfdeSVBv1egOH916hg== dependencies: - undici-types "~6.19.2" + undici-types "~6.19.8" "@types/node@^12.19.9": version "12.20.55" @@ -2484,13 +2489,13 @@ integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^20.0.0": - version "20.16.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.16.5.tgz#d43c7f973b32ffdf9aa7bd4f80e1072310fd7a53" - integrity sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA== + version "20.17.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.17.1.tgz#2b968e060dfb04b7f9550fe3db5f552721c14566" + integrity sha512-j2VlPv1NnwPJbaCNv69FO/1z4lId0QmGvpT41YxitRtWlg96g/j8qcv2RKsLKe2F6OJgyXhupN1Xo17b2m139Q== dependencies: undici-types "~6.19.2" -"@types/semver@^7.5.4": +"@types/semver@^7.5.4", "@types/semver@^7.5.8": version "7.5.8" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== @@ -2571,13 +2576,13 @@ "@typescript-eslint/types" "7.18.0" "@typescript-eslint/visitor-keys" "7.18.0" -"@typescript-eslint/scope-manager@8.6.0": - version "8.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.6.0.tgz#28cc2fc26a84b75addf45091a2c6283e29e2c982" - integrity sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw== +"@typescript-eslint/scope-manager@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz#9d399ce624118966732824878bc9a83593a30405" + integrity sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ== dependencies: - "@typescript-eslint/types" "8.6.0" - "@typescript-eslint/visitor-keys" "8.6.0" + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.0" "@typescript-eslint/type-utils@7.18.0": version "7.18.0" @@ -2594,10 +2599,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== -"@typescript-eslint/types@8.6.0": - version "8.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.6.0.tgz#cdc3a16f83f2f0663d6723e9fd032331cdd9f51c" - integrity sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw== +"@typescript-eslint/types@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.11.0.tgz#7c766250502097f49bbc2e651132e6bf489e20b8" + integrity sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw== "@typescript-eslint/typescript-estree@7.18.0": version "7.18.0" @@ -2613,13 +2618,13 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/typescript-estree@8.6.0": - version "8.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.6.0.tgz#f945506de42871f04868371cb5bf21e8f7266e01" - integrity sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g== +"@typescript-eslint/typescript-estree@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz#35fe5d3636fc5727c52429393415412e552e222b" + integrity sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg== dependencies: - "@typescript-eslint/types" "8.6.0" - "@typescript-eslint/visitor-keys" "8.6.0" + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -2638,14 +2643,14 @@ "@typescript-eslint/typescript-estree" "7.18.0" "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0": - version "8.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.6.0.tgz#175fe893f32804bed1e72b3364ea6bbe1044181c" - integrity sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A== + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.11.0.tgz#4480d1e9f2bb18ea3510c79f870a1aefc118103d" + integrity sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.6.0" - "@typescript-eslint/types" "8.6.0" - "@typescript-eslint/typescript-estree" "8.6.0" + "@typescript-eslint/scope-manager" "8.11.0" + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/typescript-estree" "8.11.0" "@typescript-eslint/visitor-keys@7.18.0": version "7.18.0" @@ -2655,12 +2660,12 @@ "@typescript-eslint/types" "7.18.0" eslint-visitor-keys "^3.4.3" -"@typescript-eslint/visitor-keys@8.6.0": - version "8.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.6.0.tgz#5432af4a1753f376f35ab5b891fc9db237aaf76f" - integrity sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg== +"@typescript-eslint/visitor-keys@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz#273de1cbffe63d9f9cd7dfc20b5a5af66310cb92" + integrity sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw== dependencies: - "@typescript-eslint/types" "8.6.0" + "@typescript-eslint/types" "8.11.0" eslint-visitor-keys "^3.4.3" "@ungap/structured-clone@^1.2.0": @@ -2688,9 +2693,9 @@ acorn-walk@^8.1.1: acorn "^8.11.0" acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: - version "8.12.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" - integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== + version "8.13.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.13.0.tgz#2a30d670818ad16ddd6a35d3842dacec9e5d7ca3" + integrity sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w== agent-base@6: version "6.0.2" @@ -2743,13 +2748,6 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -3040,15 +3038,15 @@ braces@^3.0.3: dependencies: fill-range "^7.1.1" -browserslist@^4.23.1: - version "4.23.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" - integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== +browserslist@^4.24.0: + version "4.24.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" + integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== dependencies: - caniuse-lite "^1.0.30001646" - electron-to-chromium "^1.5.4" + caniuse-lite "^1.0.30001669" + electron-to-chromium "^1.5.41" node-releases "^2.0.18" - update-browserslist-db "^1.1.0" + update-browserslist-db "^1.1.1" bs-logger@^0.2.6: version "0.2.6" @@ -3142,10 +3140,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001646: - version "1.0.30001662" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz#3574b22dfec54a3f3b6787331da1040fe8e763ec" - integrity sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA== +caniuse-lite@^1.0.30001669: + version "1.0.30001669" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz#fda8f1d29a8bfdc42de0c170d7f34a9cf19ed7a3" + integrity sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w== capital-case@^1.0.4: version "1.0.4" @@ -3164,15 +3162,6 @@ cardinal@^2.1.1: ansicolors "~0.3.2" redeyed "~2.1.0" -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - chalk@^4, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -3279,13 +3268,6 @@ collect-v8-coverage@^1.0.0: resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -3293,11 +3275,6 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" @@ -3632,10 +3609,10 @@ ejs@^3.1.10, ejs@^3.1.8: dependencies: jake "^10.8.5" -electron-to-chromium@^1.5.4: - version "1.5.26" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.26.tgz#449b4fa90e83ab98abbe3b6a96c8ee395de94452" - integrity sha512-Z+OMe9M/V6Ep9n/52+b7lkvYEps26z4Yz3vjWL1V61W0q+VLF1pOHhMY17sa4roz4AWmULSI8E6SAojZA5L0YQ== +electron-to-chromium@^1.5.41: + version "1.5.46" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.46.tgz#69c98f809a3ea669386263d672f4d920be71da3a" + integrity sha512-1XDk0Z8/YRgB2t5GeEg8DPK592DLjVmd/5uwAu6c/S4Z0CUwV/RwYqe5GWxQqcoN3bJ5U7hYMiMRPZzpCzSBhQ== emittery@^0.13.1: version "0.13.1" @@ -3757,7 +3734,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -escalade@^3.1.1, escalade@^3.1.2: +escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== @@ -3797,17 +3774,17 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -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== +eslint-module-utils@^2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" + integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== dependencies: debug "^3.2.7" eslint-plugin-import@^2.29.1: - version "2.30.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz#21ceea0fc462657195989dd780e50c92fe95f449" - integrity sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw== + version "2.31.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" + integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== dependencies: "@rtsao/scc" "^1.1.0" array-includes "^3.1.8" @@ -3817,7 +3794,7 @@ eslint-plugin-import@^2.29.1: debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.9.0" + eslint-module-utils "^2.12.0" hasown "^2.0.2" is-core-module "^2.15.1" is-glob "^4.0.3" @@ -3826,6 +3803,7 @@ eslint-plugin-import@^2.29.1: object.groupby "^1.0.3" object.values "^1.2.0" semver "^6.3.1" + string.prototype.trimend "^1.0.8" tsconfig-paths "^3.15.0" eslint-plugin-jest@^28.6.0: @@ -3836,11 +3814,11 @@ eslint-plugin-jest@^28.6.0: "@typescript-eslint/utils" "^6.0.0 || ^7.0.0 || ^8.0.0" eslint-plugin-sf-plugin@^1.17.4: - 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== + version "1.20.9" + resolved "https://registry.yarnpkg.com/eslint-plugin-sf-plugin/-/eslint-plugin-sf-plugin-1.20.9.tgz#87d17902f696ac242a1b7c6ccbb43f271d883e7e" + integrity sha512-9lqHOVTO2y9MpdaXiHGHPWP3hf8pcn3SWy6osLxK2J+jm4r2cJsx9mK0WdS4Grlfoou7Xm5P71fwgf+htrtdow== dependencies: - "@salesforce/core" "^8.5.4" + "@salesforce/core" "^8.6.2" "@typescript-eslint/utils" "^7.18.0" eslint-restricted-globals@~0.2.0: @@ -4060,9 +4038,9 @@ fast-safe-stringify@^2.1.1: integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fast-uri@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" - integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== + version "3.0.3" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241" + integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw== fast-xml-parser@4.4.1: version "4.4.1" @@ -4187,9 +4165,9 @@ form-data-encoder@^2.1.2: integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + version "4.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -4421,11 +4399,6 @@ has-bigints@^1.0.1, has-bigints@^1.0.2: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -4743,6 +4716,11 @@ is-docker@^2.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -4765,6 +4743,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + is-interactive@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" @@ -4862,6 +4847,13 @@ is-wsl@^2.1.1, is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" +is-wsl@^3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" + integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== + dependencies: + is-inside-container "^1.0.0" + isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" @@ -4873,9 +4865,9 @@ isarray@~1.0.0: integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isbinaryfile@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-5.0.2.tgz#fe6e4dfe2e34e947ffa240c113444876ba393ae0" - integrity sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg== + version "5.0.4" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-5.0.4.tgz#2a2edefa76cafa66613fe4c1ea52f7f031017bdf" + integrity sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ== isexe@^2.0.0: version "2.0.0" @@ -5350,10 +5342,10 @@ jsbn@1.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== jsforce@^2.0.0-beta.28, jsforce@^2.0.0-beta.29: version "2.0.0-beta.29" @@ -5894,17 +5886,17 @@ object.values@^1.2.0: es-object-atoms "^1.0.0" oclif@^4.0.3: - version "4.14.34" - resolved "https://registry.yarnpkg.com/oclif/-/oclif-4.14.34.tgz#45ddd207ab648a0996ec845e975087ac2fe10479" - integrity sha512-NA604h6cPhiDQTLjjwaJ2yGq3gv6OyHIMIdwt9xTiOqMjFOrKXpoqXiwmKN6bGoeWC1SuaSJqlfoXThlAKn+Ag== + version "4.15.12" + resolved "https://registry.yarnpkg.com/oclif/-/oclif-4.15.12.tgz#3af53ffba0989741da32118585c2c4e0629147d1" + integrity sha512-L1D7dM6nEA+6QZSm+h7qfN7jLF19eOopCE8bs5V4Hmj002c2i4vw41rSL95yaUaLYM6kDlCEsJhgs+gC2wVsiA== dependencies: - "@aws-sdk/client-cloudfront" "^3.645.0" - "@aws-sdk/client-s3" "^3.651.1" + "@aws-sdk/client-cloudfront" "^3.675.0" + "@aws-sdk/client-s3" "^3.676.0" "@inquirer/confirm" "^3.1.22" "@inquirer/input" "^2.2.4" - "@inquirer/select" "^2.3.10" - "@oclif/core" "^4" - "@oclif/plugin-help" "^6.2.10" + "@inquirer/select" "^2.5.0" + "@oclif/core" "^4.0.29" + "@oclif/plugin-help" "^6.2.14" "@oclif/plugin-not-found" "^3.2.21" "@oclif/plugin-warn-if-update-available" "^3.1.11" async-retry "^1.3.3" @@ -6134,10 +6126,10 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picocolors@^1.0.0, picocolors@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" - integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== +picocolors@^1.0.0, picocolors@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" @@ -6152,6 +6144,13 @@ pino-abstract-transport@^1.0.0, pino-abstract-transport@^1.1.0, pino-abstract-tr readable-stream "^4.0.0" split2 "^4.0.0" +pino-abstract-transport@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60" + integrity sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw== + dependencies: + split2 "^4.0.0" + pino-pretty@^10.2.3, pino-pretty@^10.3.1: version "10.3.1" resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-10.3.1.tgz#e3285a5265211ac6c7cd5988f9e65bf3371a0ca9" @@ -6173,9 +6172,9 @@ pino-pretty@^10.2.3, pino-pretty@^10.3.1: strip-json-comments "^3.1.1" pino-pretty@^11.2.2: - version "11.2.2" - resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-11.2.2.tgz#5e8ec69b31e90eb187715af07b1d29a544e60d39" - integrity sha512-2FnyGir8nAJAqD3srROdrF1J5BIcMT4nwj7hHSc60El6Uxlym00UbCCd8pYIterstVBFlMyF1yFV8XdGIPbj4A== + version "11.3.0" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-11.3.0.tgz#390b3be044cf3d2e9192c7d19d44f6b690468f2e" + integrity sha512-oXwn7ICywaZPHmu3epHGU2oJX4nPmKvHvB/bwrJHlGcbEWaVcotkpyVHMKLKmiVryWYByNp0jpgAcXpFJDXJzA== dependencies: colorette "^2.0.7" dateformat "^4.6.3" @@ -6185,7 +6184,7 @@ pino-pretty@^11.2.2: joycon "^3.1.1" minimist "^1.2.6" on-exit-leak-free "^2.1.0" - pino-abstract-transport "^1.0.0" + pino-abstract-transport "^2.0.0" pump "^3.0.0" readable-stream "^4.0.0" secure-json-parse "^2.4.0" @@ -6220,14 +6219,14 @@ pino@^8.16.0, pino@^8.19.0: thread-stream "^2.6.0" 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== + version "9.5.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-9.5.0.tgz#a7ef0fea868d22d52d8a4ce46e6e03c5dc46fdd6" + integrity sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw== dependencies: atomic-sleep "^1.0.0" fast-redact "^3.1.1" on-exit-leak-free "^2.1.0" - pino-abstract-transport "^1.2.0" + pino-abstract-transport "^2.0.0" pino-std-serializers "^7.0.0" process-warning "^4.0.0" quick-format-unescaped "^4.0.3" @@ -6429,14 +6428,14 @@ regenerator-runtime@^0.14.0: integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + version "1.5.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42" + integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ== dependencies: - call-bind "^1.0.6" + call-bind "^1.0.7" define-properties "^1.2.1" es-errors "^1.3.0" - set-function-name "^2.0.1" + set-function-name "^2.0.2" registry-auth-token@^5.0.2: version "5.0.2" @@ -6507,9 +6506,9 @@ restore-cursor@^3.1.0: signal-exit "^3.0.2" retire@^5.0.1: - version "5.2.2" - resolved "https://registry.yarnpkg.com/retire/-/retire-5.2.2.tgz#f5e20085feb2dad68d129aba37d4f328109c5853" - integrity sha512-WDXqqFjSlmZTglW3ra/y6jcStqOAuVloPLyDatKXqq97H40vV5je3WstpSLEQD4L9JDJZl21siEWbDWTecYBFw== + version "5.2.4" + resolved "https://registry.yarnpkg.com/retire/-/retire-5.2.4.tgz#8d6dd5ff9eec21ff853493c974be3e69f341898f" + integrity sha512-iutStQwG3svZQBvy79ZEG/7463GbVg8IKG/05SUPUdocQoCKl7e2mnvA/X3XlJqMQj0yV4mcKbZeeM1mAU374A== dependencies: ansi-colors "^4.1.1" astronomical "^1.0.0" @@ -6652,7 +6651,7 @@ set-function-length@^1.2.1: gopd "^1.0.1" has-property-descriptors "^1.0.2" -set-function-name@^2.0.1: +set-function-name@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== @@ -6789,9 +6788,9 @@ sonic-boom@^3.0.0, sonic-boom@^3.7.0: atomic-sleep "^1.0.0" sonic-boom@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.1.0.tgz#4f039663ba191fac5cfe4f1dc330faac079e4342" - integrity sha512-NGipjjRicyJJ03rPiZCJYjwlsuP2d1/5QUviozRXC7S3WdVWNK5e3Ojieb9CCyfhq2UC+3+SRd9nG3I2lPRvUw== + version "4.2.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.0.tgz#e59a525f831210fa4ef1896428338641ac1c124d" + integrity sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww== dependencies: atomic-sleep "^1.0.0" @@ -6966,13 +6965,6 @@ strnum@^1.0.5: resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - supports-color@^7, supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -7038,17 +7030,17 @@ 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-core@^6.1.55: + version "6.1.55" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.55.tgz#cab0d412672fca9c77d3c51312c69bb5b5ee95c2" + integrity sha512-BL+BuKHHaOpntE5BGI6naXjULU6aRlgaYdfDHR3T/hdbNTWkWUZ9yuc11wGnwgpvRwlyUiIK+QohYK3olaVU6Q== 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== + version "6.1.55" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.55.tgz#9a27d1708652bbae93d4b842dc2f8554fdabffc6" + integrity sha512-HxQR/9roQ07Pwc8RyyrJMAxRz5/ssoF3qIPPUiIo3zUt6yMdmYZjM2OZIFMiZ3jHyz9jrGHEHuQZrUhoc1LkDw== dependencies: - tldts-core "^6.1.47" + tldts-core "^6.1.55" tmp@^0.0.33: version "0.0.33" @@ -7067,11 +7059,6 @@ tmpl@1.0.5: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -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" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -7156,9 +7143,9 @@ tslib@^1.9.0: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.5.0, tslib@^2.6.2: - version "2.7.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" - integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + version "2.8.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.0.tgz#d124c86c3c05a40a91e6fdea4021bd31d377971b" + integrity sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA== tunnel-agent@*, tunnel-agent@^0.6.0: version "0.6.0" @@ -7239,9 +7226,9 @@ typed-array-length@^1.0.6: possible-typed-array-names "^1.0.0" typescript@^5.4.5: - version "5.6.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0" - integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw== + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== unbox-primitive@^1.0.2: version "1.0.2" @@ -7253,7 +7240,7 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -undici-types@~6.19.2: +undici-types@~6.19.2, undici-types@~6.19.8: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== @@ -7268,13 +7255,13 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -update-browserslist-db@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" - integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== dependencies: - escalade "^3.1.2" - picocolors "^1.0.1" + escalade "^3.2.0" + picocolors "^1.1.0" upper-case-first@^2.0.2: version "2.0.2"