From c3a5f52904ee415102777dad4e114987596bc3fe Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Mon, 2 Sep 2024 14:07:07 -0400 Subject: [PATCH 01/65] 10001-bug: first draft, which gets things 'working' for primaryDocumentFile --- .../actions/validateFileSizeAction.ts | 2 +- web-client/src/presenter/presenter.ts | 2 + .../updateValidationErrorsSequence.ts | 5 ++ .../FileDocument/StateDrivenFileInput.tsx | 68 +++++++++++-------- .../cloneFile.error.test.ts | 0 .../cloneFile.test.ts | 0 .../{ => FileHandlingHelpers}/cloneFile.ts | 8 ++- .../FileHandlingHelpers/fileValidation.ts | 25 +++++++ .../limitFileSize.test.ts | 0 .../limitFileSize.ts | 0 .../FileHandlingHelpers/pdfValidation.ts | 57 ++++++++++++++++ web-client/src/views/ScanBatchPreviewer.tsx | 2 +- 12 files changed, 137 insertions(+), 32 deletions(-) create mode 100644 web-client/src/presenter/sequences/updateValidationErrorsSequence.ts rename web-client/src/views/{ => FileHandlingHelpers}/cloneFile.error.test.ts (100%) rename web-client/src/views/{ => FileHandlingHelpers}/cloneFile.test.ts (100%) rename web-client/src/views/{ => FileHandlingHelpers}/cloneFile.ts (69%) create mode 100644 web-client/src/views/FileHandlingHelpers/fileValidation.ts rename web-client/src/views/{ => FileHandlingHelpers}/limitFileSize.test.ts (100%) rename web-client/src/views/{ => FileHandlingHelpers}/limitFileSize.ts (100%) create mode 100644 web-client/src/views/FileHandlingHelpers/pdfValidation.ts diff --git a/web-client/src/presenter/actions/validateFileSizeAction.ts b/web-client/src/presenter/actions/validateFileSizeAction.ts index d93176522f3..052f0226bc9 100644 --- a/web-client/src/presenter/actions/validateFileSizeAction.ts +++ b/web-client/src/presenter/actions/validateFileSizeAction.ts @@ -1,4 +1,4 @@ -import { limitFileSize } from '../../views/limitFileSize'; +import { limitFileSize } from '../../views/FileHandlingHelpers/limitFileSize'; /** * validates whether the given file size does not exceed the set max upload limit diff --git a/web-client/src/presenter/presenter.ts b/web-client/src/presenter/presenter.ts index b0c1626252b..fbe47fe9ac0 100644 --- a/web-client/src/presenter/presenter.ts +++ b/web-client/src/presenter/presenter.ts @@ -551,6 +551,7 @@ import { updateTrialSessionCompleteSequence } from './sequences/updateTrialSessi import { updateTrialSessionFormDataSequence } from './sequences/updateTrialSessionFormDataSequence'; import { updateTrialSessionSequence } from './sequences/updateTrialSessionSequence'; import { updateUserCaseNoteOnWorkingCopySequence } from './sequences/updateUserCaseNoteOnWorkingCopySequence'; +import { updateValidationErrorsSequence } from '@web-client/presenter/sequences/updateValidationErrorsSequence'; import { updateWorkingCopySessionNoteSequence } from './sequences/updateWorkingCopySessionNoteSequence'; import { updatedFilePetitionCompleteStep1Sequence } from './sequences/updatedFilePetitionCompleteStep1Sequence'; import { updatedFilePetitionCompleteStep2Sequence } from './sequences/updatedFilePetitionCompleteStep2Sequence'; @@ -1520,6 +1521,7 @@ export const presenterSequences = { updateTrialSessionSequence: updateTrialSessionSequence as unknown as Function, updateUserCaseNoteOnWorkingCopySequence: updateUserCaseNoteOnWorkingCopySequence as unknown as Function, + updateValidationErrorsSequence, updateWorkingCopySessionNoteSequence: updateWorkingCopySessionNoteSequence as unknown as Function, updatedFilePetitionCompleteStep1Sequence: diff --git a/web-client/src/presenter/sequences/updateValidationErrorsSequence.ts b/web-client/src/presenter/sequences/updateValidationErrorsSequence.ts new file mode 100644 index 00000000000..fe4d1fdda9a --- /dev/null +++ b/web-client/src/presenter/sequences/updateValidationErrorsSequence.ts @@ -0,0 +1,5 @@ +import { setValidationErrorsAction } from '@web-client/presenter/actions/setValidationErrorsAction'; + +export const updateValidationErrorsSequence = [ + setValidationErrorsAction, +] as unknown as (props: { errors: any }) => void; diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index fb7a1691638..f7836eebe27 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -1,11 +1,11 @@ import { Button } from '../../ustc-ui/Button/Button'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { cloneFile } from '../cloneFile'; +import { cloneFile } from '../FileHandlingHelpers/cloneFile'; import { connect } from '@web-client/presenter/shared.cerebral'; -import { limitFileSize } from '../limitFileSize'; import { props } from 'cerebral'; import { sequences } from '@web-client/presenter/app.cerebral'; import { state } from '@web-client/presenter/app.cerebral'; +import { validateFile } from '@web-client/views/FileHandlingHelpers/fileValidation'; import React from 'react'; type StateDriveFileInputProps = { @@ -21,6 +21,7 @@ type StateDriveFileInputProps = { const deps = { constants: state.constants, + fileUploadErrorSequence: sequences.updateValidationErrorsSequence, form: state.form, updateFormValueSequence: sequences[props.updateFormValueSequence], validationSequence: sequences[props.validationSequence], @@ -36,6 +37,7 @@ export const StateDrivenFileInput = connect< 'aria-describedby': ariaDescribedBy, constants, file, + fileUploadErrorSequence, form, id, ignoreSizeKey, @@ -48,6 +50,42 @@ export const StateDrivenFileInput = connect< const fileOnForm = file || form[fileInputName] || form.existingFileName; + const onFileSelectionChange = async e => { + const { name: inputName } = e.target; + const selectedFile = e.target.files[0]; + const { errorMessage, isValid } = await validateFile({ + file: selectedFile, + megabyteLimit: constants.MAX_FILE_SIZE_MB, + }); + if (!isValid) { + console.log(inputName); + // TODO 10001: Improve--doesn't work for nested fields + fileUploadErrorSequence({ + errors: { [inputName]: errorMessage }, + }); + e.target.value = null; + return; + } + const uploadedFile = e.target.files[0]; + cloneFile(uploadedFile) + .then(clonedFile => { + updateFormValueSequence({ + key: inputName, + property: 'file', + value: clonedFile, + }); + updateFormValueSequence({ + key: ignoreSizeKey ? inputName : `${inputName}Size`, + property: 'size', + value: clonedFile.size, + }); + return validationSequence ? validationSequence() : null; + }) + .catch(() => { + /* no-op */ + }); + }; + return ( { - const { name: inputName } = e.target; - limitFileSize(e, constants.MAX_FILE_SIZE_MB, () => { - const uploadedFile = e.target.files[0]; - cloneFile(uploadedFile) - .then(clonedFile => { - updateFormValueSequence({ - key: inputName, - property: 'file', - value: clonedFile, - }); - updateFormValueSequence({ - key: ignoreSizeKey ? inputName : `${inputName}Size`, - property: 'size', - value: clonedFile.size, - }); - return validationSequence ? validationSequence() : null; - }) - .catch(() => { - /* no-op */ - }); - }); - }} + onChange={onFileSelectionChange} onClick={e => { if (fileOnForm) e.preventDefault(); }} @@ -132,5 +148,3 @@ export const StateDrivenFileInput = connect< ); }, ); - -StateDrivenFileInput.displayName = 'StateDrivenFileInput'; diff --git a/web-client/src/views/cloneFile.error.test.ts b/web-client/src/views/FileHandlingHelpers/cloneFile.error.test.ts similarity index 100% rename from web-client/src/views/cloneFile.error.test.ts rename to web-client/src/views/FileHandlingHelpers/cloneFile.error.test.ts diff --git a/web-client/src/views/cloneFile.test.ts b/web-client/src/views/FileHandlingHelpers/cloneFile.test.ts similarity index 100% rename from web-client/src/views/cloneFile.test.ts rename to web-client/src/views/FileHandlingHelpers/cloneFile.test.ts diff --git a/web-client/src/views/cloneFile.ts b/web-client/src/views/FileHandlingHelpers/cloneFile.ts similarity index 69% rename from web-client/src/views/cloneFile.ts rename to web-client/src/views/FileHandlingHelpers/cloneFile.ts index ca1bffbc4ac..3dd04776c0c 100644 --- a/web-client/src/views/cloneFile.ts +++ b/web-client/src/views/FileHandlingHelpers/cloneFile.ts @@ -4,18 +4,20 @@ * @param {file} file the file to clone * @returns {file} the cloned file */ -export const cloneFile = file => +export const cloneFile = (file: File): Promise => new Promise((resolve, reject) => { const reader = new FileReader(); reader.readAsArrayBuffer(file); + reader.addEventListener('load', () => { resolve( - new File([reader.result], file.name, { + new File([reader.result as ArrayBuffer], file.name, { type: file.type, }), ); }); + reader.addEventListener('error', () => { - reject(new Error('failed to read file')); + reject(new Error('Failed to read file')); }); }); diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.ts new file mode 100644 index 00000000000..ffe4e4b295e --- /dev/null +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.ts @@ -0,0 +1,25 @@ +import { validatePDFUpload } from '@web-client/views/FileHandlingHelpers/pdfValidation'; + +export interface FileValidationResponse { + isValid: boolean; + errorMessage?: string; +} + +export const validateFile = async ({ + file, + megabyteLimit, +}: { + file: File; + megabyteLimit: number; +}): Promise => { + if (file.size > megabyteLimit * 1024 * 1024) { + return { + errorMessage: `Your file size is too big. The maximum file size is ${megabyteLimit}MB.`, + isValid: false, + }; + } + if (file.type === 'application/pdf') { + return await validatePDFUpload({ file }); + } + return { isValid: true }; +}; diff --git a/web-client/src/views/limitFileSize.test.ts b/web-client/src/views/FileHandlingHelpers/limitFileSize.test.ts similarity index 100% rename from web-client/src/views/limitFileSize.test.ts rename to web-client/src/views/FileHandlingHelpers/limitFileSize.test.ts diff --git a/web-client/src/views/limitFileSize.ts b/web-client/src/views/FileHandlingHelpers/limitFileSize.ts similarity index 100% rename from web-client/src/views/limitFileSize.ts rename to web-client/src/views/FileHandlingHelpers/limitFileSize.ts diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts new file mode 100644 index 00000000000..392fec95db5 --- /dev/null +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts @@ -0,0 +1,57 @@ +import { FileValidationResponse } from '@web-client/views/FileHandlingHelpers/fileValidation'; +import { applicationContext } from '@web-client/applicationContext'; + +export const validatePDFUpload = ({ + file, +}: { + file: File; +}): Promise => { + return new Promise(resolve => { + console.log('file', file.type); + const fileReader = new FileReader(); + fileReader.readAsArrayBuffer(file); + + fileReader.onload = async () => { + const { result } = fileReader; + + if (!result || typeof result === 'string') { + console.error('Failed to read file as ArrayBuffer.'); + resolve({ + errorMessage: 'Failed to read file as ArrayBuffer.', + isValid: false, + }); // Return false on failure + return; + } + + const fileAsArrayBuffer = new Uint8Array(result as ArrayBuffer); + + try { + const pdfjs = await applicationContext.getPdfJs(); + await pdfjs.getDocument(fileAsArrayBuffer).promise; + resolve({ isValid: true }); // Return true if the PDF is valid + } catch (err) { + if (err instanceof Error) { + if (err.name === 'PasswordException') { + resolve({ + errorMessage: + 'File is encrypted or password protected. Remove encryption or password protection and try again.', + isValid: false, + }); + } else if (err.name === 'InvalidPDFException') { + resolve({ + errorMessage: + 'File is not a PDF. Select a PDF file or resave the file as a PDF.', + isValid: false, + }); + } + } + resolve({ errorMessage: 'An unknown error occurred', isValid: false }); // Return false on failure + } + }; + + fileReader.onerror = () => { + console.error('Error reading the file.'); + resolve({ errorMessage: 'Error reading the file.', isValid: false }); // Return false on failure + }; + }); +}; diff --git a/web-client/src/views/ScanBatchPreviewer.tsx b/web-client/src/views/ScanBatchPreviewer.tsx index 79f0f74493a..231dc88cc7d 100644 --- a/web-client/src/views/ScanBatchPreviewer.tsx +++ b/web-client/src/views/ScanBatchPreviewer.tsx @@ -14,7 +14,7 @@ import { PreviewControls } from './PreviewControls'; import { SelectScannerSourceModal } from './ScanBatchPreviewer/SelectScannerSourceModal'; import { Tab, Tabs } from '../ustc-ui/Tabs/Tabs'; import { connect } from '@web-client/presenter/shared.cerebral'; -import { limitFileSize } from './limitFileSize'; +import { limitFileSize } from './FileHandlingHelpers/limitFileSize'; import { sequences } from '@web-client/presenter/app.cerebral'; import { state } from '@web-client/presenter/app.cerebral'; import React, { useEffect, useRef } from 'react'; From 484111ce0d8df6f4aa7a99e83b40dabbf12bb950 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Tue, 3 Sep 2024 09:01:33 -0400 Subject: [PATCH 02/65] 10001-design-debt: 'working' sample, but want to get other opinions. A modal alert would be easier and less clunky. --- .../business/entities/JoiValidationEntity.ts | 2 + .../actions/updateValidationErrorsAction.ts | 46 +++++++++++++++++++ .../updateValidationErrorsSequence.ts | 4 +- .../FileDocument/StateDrivenFileInput.tsx | 26 +++++++++-- 4 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 web-client/src/presenter/actions/updateValidationErrorsAction.ts diff --git a/shared/src/business/entities/JoiValidationEntity.ts b/shared/src/business/entities/JoiValidationEntity.ts index f826965f8ae..0deb34b7c33 100644 --- a/shared/src/business/entities/JoiValidationEntity.ts +++ b/shared/src/business/entities/JoiValidationEntity.ts @@ -48,6 +48,7 @@ function getFormattedValidationErrors(entity): Record | null { if (entity.getFormattedValidationErrors) { errors = entity.getValidationErrors(); } + console.log('errors', errors); if (errors) { for (const key of Object.keys(errors)) { if ( @@ -83,6 +84,7 @@ function getFormattedValidationErrors(entity): Record | null { if (!obj[key]) delete obj[key]; } } + console.log('Wow', obj); return Object.keys(obj).length === 0 ? null : obj; } diff --git a/web-client/src/presenter/actions/updateValidationErrorsAction.ts b/web-client/src/presenter/actions/updateValidationErrorsAction.ts new file mode 100644 index 00000000000..7c9acdf6bfe --- /dev/null +++ b/web-client/src/presenter/actions/updateValidationErrorsAction.ts @@ -0,0 +1,46 @@ +import { state } from '@web-client/presenter/app.cerebral'; + +// TODO: Test more thoroughly +function recursiveMerge(obj1, obj2) { + // Iterate through the properties of obj2 + for (const key in obj2) { + if (obj2.hasOwnProperty(key)) { + // Check if the value at the key in both objects is an array + if (Array.isArray(obj1[key]) && Array.isArray(obj2[key])) { + // Merge arrays by index identifier + obj2[key].forEach(newItem => { + const existingItem = obj1[key].find( + item => item.index === newItem.index, + ); + if (existingItem) { + // Recursively merge matching items + recursiveMerge(existingItem, newItem); + } else { + // Push new item if no match found + obj1[key].push(newItem); + } + }); + } else if ( + typeof obj1[key] === 'object' && + typeof obj2[key] === 'object' + ) { + // Recursively merge objects + recursiveMerge(obj1[key], obj2[key]); + } else { + // Directly set the value if not both arrays or objects + obj1[key] = obj2[key]; + } + } + } +} + +export const updateValidationErrorsAction = ({ + get, + props, + store, +}: ActionProps) => { + const validationErrors = get(state.validationErrors); + const newValidationErrors: Record = props.errors; + recursiveMerge(validationErrors, newValidationErrors); + store.set(state.validationErrors, validationErrors); +}; diff --git a/web-client/src/presenter/sequences/updateValidationErrorsSequence.ts b/web-client/src/presenter/sequences/updateValidationErrorsSequence.ts index fe4d1fdda9a..648a4a9f2ba 100644 --- a/web-client/src/presenter/sequences/updateValidationErrorsSequence.ts +++ b/web-client/src/presenter/sequences/updateValidationErrorsSequence.ts @@ -1,5 +1,5 @@ -import { setValidationErrorsAction } from '@web-client/presenter/actions/setValidationErrorsAction'; +import { updateValidationErrorsAction } from '@web-client/presenter/actions/updateValidationErrorsAction'; export const updateValidationErrorsSequence = [ - setValidationErrorsAction, + updateValidationErrorsAction, ] as unknown as (props: { errors: any }) => void; diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index f7836eebe27..4efe0d1cf39 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -19,11 +19,24 @@ type StateDriveFileInputProps = { ignoreSizeKey?: boolean; }; +// Get an error object that mimics our formatted error messages +// Currently only handles a single nesting level, e.g., supportingDocuments.n.supportingDocumentFile +// but not, e.g., supportingDocuments.n.part1.m.documentFile or supportingDocuments.n.m.documentFile +const getErrorObject = (inputName: string, errorMessage: string) => { + if (!inputName.includes('.')) { + return { [inputName]: errorMessage }; + } + const split = inputName.split('.'); + return { + [split[0]]: [{ index: parseInt(split[1]), [split[2]]: errorMessage }], + }; +}; + const deps = { constants: state.constants, - fileUploadErrorSequence: sequences.updateValidationErrorsSequence, form: state.form, updateFormValueSequence: sequences[props.updateFormValueSequence], + updateValidationErrorsSequence: sequences.updateValidationErrorsSequence, validationSequence: sequences[props.validationSequence], }; @@ -37,12 +50,12 @@ export const StateDrivenFileInput = connect< 'aria-describedby': ariaDescribedBy, constants, file, - fileUploadErrorSequence, form, id, ignoreSizeKey, name: fileInputName, updateFormValueSequence, + updateValidationErrorsSequence, validationSequence, ...remainingProps }) { @@ -59,13 +72,16 @@ export const StateDrivenFileInput = connect< }); if (!isValid) { console.log(inputName); - // TODO 10001: Improve--doesn't work for nested fields - fileUploadErrorSequence({ - errors: { [inputName]: errorMessage }, + updateValidationErrorsSequence({ + errors: getErrorObject(inputName, errorMessage!), }); e.target.value = null; return; } + // On success, remove the error validation and update form values + updateValidationErrorsSequence({ + errors: getErrorObject(inputName, ''), + }); const uploadedFile = e.target.files[0]; cloneFile(uploadedFile) .then(clonedFile => { From 4193571aae79d4c1c78a1c6c71a0ae7d60fe10b4 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Tue, 3 Sep 2024 17:03:07 -0400 Subject: [PATCH 03/65] 10001-design-debt: going with the modal solution, and adding an error log endpoint --- shared/src/proxies/logErrorProxy.ts | 15 ++++++ web-api/src/app.ts | 2 + .../business/useCases/logErrorInteractor.ts | 8 ++++ web-api/src/lambdas/errors/logErrorLambda.ts | 10 ++++ web-client/src/applicationContext.ts | 2 + .../src/presenter/actions/logErrorAction.ts | 7 +++ .../presenter/actions/setModalErrorAction.ts | 2 + .../actions/setModalMessageAction.ts | 5 ++ .../actions/updateValidationErrorsAction.ts | 46 ------------------- web-client/src/presenter/presenter.ts | 4 +- .../sequences/showErrorModalSequence.ts | 15 ++++++ .../updateValidationErrorsSequence.ts | 5 -- .../FileDocument/StateDrivenFileInput.tsx | 28 +++-------- .../FileHandlingHelpers/pdfValidation.ts | 8 ++-- web-client/src/views/GenericErrorModal.tsx | 9 ++-- web-client/src/views/ModalDialog.tsx | 2 + 16 files changed, 85 insertions(+), 83 deletions(-) create mode 100644 shared/src/proxies/logErrorProxy.ts create mode 100644 web-api/src/business/useCases/logErrorInteractor.ts create mode 100644 web-api/src/lambdas/errors/logErrorLambda.ts create mode 100644 web-client/src/presenter/actions/logErrorAction.ts create mode 100644 web-client/src/presenter/actions/setModalMessageAction.ts delete mode 100644 web-client/src/presenter/actions/updateValidationErrorsAction.ts create mode 100644 web-client/src/presenter/sequences/showErrorModalSequence.ts delete mode 100644 web-client/src/presenter/sequences/updateValidationErrorsSequence.ts diff --git a/shared/src/proxies/logErrorProxy.ts b/shared/src/proxies/logErrorProxy.ts new file mode 100644 index 00000000000..d1ef4f05d4c --- /dev/null +++ b/shared/src/proxies/logErrorProxy.ts @@ -0,0 +1,15 @@ +import { ClientApplicationContext } from '@web-client/applicationContext'; +import { post } from './requests'; + +export const logErrorInteractor = ( + applicationContext: ClientApplicationContext, + { error }, +) => { + return post({ + applicationContext, + body: { + error, + }, + endpoint: '/logError/', + }); +}; diff --git a/web-api/src/app.ts b/web-api/src/app.ts index 81687c34410..208615d7fb4 100644 --- a/web-api/src/app.ts +++ b/web-api/src/app.ts @@ -127,6 +127,7 @@ import { getUsersPendingEmailLambda } from './lambdas/users/getUsersPendingEmail import { getWorkItemLambda } from './lambdas/workitems/getWorkItemLambda'; import { ipLimiter } from './middleware/ipLimiter'; import { lambdaWrapper } from './lambdaWrapper'; +import { logErrorLambda } from '@web-api/lambdas/errors/logErrorLambda'; import { logger } from './logger'; import { loginLambda } from '@web-api/lambdas/auth/loginLambda'; import { opinionAdvancedSearchLambda } from './lambdas/documents/opinionAdvancedSearchLambda'; @@ -453,6 +454,7 @@ app.use(logger()); '/async/case-documents/batch-download', lambdaWrapper(batchDownloadDocketEntriesLambda, { isAsync: true }), ); + app.post('/logError', lambdaWrapper(logErrorLambda)); // PUT app.put( diff --git a/web-api/src/business/useCases/logErrorInteractor.ts b/web-api/src/business/useCases/logErrorInteractor.ts new file mode 100644 index 00000000000..11edf1157de --- /dev/null +++ b/web-api/src/business/useCases/logErrorInteractor.ts @@ -0,0 +1,8 @@ +import { ServerApplicationContext } from '@web-api/applicationContext'; + +export const logErrorInteractor = ( + applicationContext: ServerApplicationContext, + { error }, +) => { + applicationContext.logger.error(error); +}; diff --git a/web-api/src/lambdas/errors/logErrorLambda.ts b/web-api/src/lambdas/errors/logErrorLambda.ts new file mode 100644 index 00000000000..8b7bbac0ae8 --- /dev/null +++ b/web-api/src/lambdas/errors/logErrorLambda.ts @@ -0,0 +1,10 @@ +import { genericHandler } from '../../genericHandler'; +import { logErrorInteractor } from '@web-api/business/useCases/logErrorInteractor'; + +export const logErrorLambda = event => + genericHandler(event, ({ applicationContext }) => { + return logErrorInteractor(applicationContext, { + parentMessageId: event.pathParameters.parentMessageId, + ...JSON.parse(event.body), + }); + }); diff --git a/web-client/src/applicationContext.ts b/web-client/src/applicationContext.ts index 390fe7117f3..27033e84aba 100644 --- a/web-client/src/applicationContext.ts +++ b/web-client/src/applicationContext.ts @@ -240,6 +240,7 @@ import { getUsersPendingEmailInteractor } from '../../shared/src/proxies/users/g import { getWorkItemInteractor } from '../../shared/src/proxies/workitems/getWorkItemProxy'; import { loadPDFForPreviewInteractor } from '../../shared/src/business/useCases/loadPDFForPreviewInteractor'; import { loadPDFForSigningInteractor } from '../../shared/src/business/useCases/loadPDFForSigningInteractor'; +import { logErrorInteractor } from '../../shared/src/proxies/logErrorProxy'; import { loginInteractor } from '@shared/proxies/auth/loginProxy'; import { openUrlInNewTab } from './presenter/utilities/openUrlInNewTab'; import { opinionAdvancedSearchInteractor } from '../../shared/src/proxies/opinionAdvancedSearchProxy'; @@ -504,6 +505,7 @@ const allUseCases = { getWorkItemInteractor, loadPDFForPreviewInteractor, loadPDFForSigningInteractor, + logErrorInteractor, loginInteractor, opinionAdvancedSearchInteractor, orderAdvancedSearchInteractor, diff --git a/web-client/src/presenter/actions/logErrorAction.ts b/web-client/src/presenter/actions/logErrorAction.ts new file mode 100644 index 00000000000..101f9171f00 --- /dev/null +++ b/web-client/src/presenter/actions/logErrorAction.ts @@ -0,0 +1,7 @@ +export const logErrorAction = ({ applicationContext, props }: ActionProps) => { + if (props.errorToLog) { + applicationContext.getUseCases().logErrorInteractor(applicationContext, { + error: props.errorToLog, + }); + } +}; diff --git a/web-client/src/presenter/actions/setModalErrorAction.ts b/web-client/src/presenter/actions/setModalErrorAction.ts index 5fec18d1599..56696338931 100644 --- a/web-client/src/presenter/actions/setModalErrorAction.ts +++ b/web-client/src/presenter/actions/setModalErrorAction.ts @@ -10,4 +10,6 @@ import { state } from '@web-client/presenter/app.cerebral'; export const setModalErrorAction = ({ props, store }: ActionProps) => { const { error } = props; store.set(state.modal.error, error); + store.set(state.modal.title, 'File Upload Error'); + store.set(state.modal.message, error); }; diff --git a/web-client/src/presenter/actions/setModalMessageAction.ts b/web-client/src/presenter/actions/setModalMessageAction.ts new file mode 100644 index 00000000000..4ffc54d2b35 --- /dev/null +++ b/web-client/src/presenter/actions/setModalMessageAction.ts @@ -0,0 +1,5 @@ +import { state } from '@web-client/presenter/app.cerebral'; + +export const setModalMessageAction = ({ props, store }: ActionProps) => { + store.set(state.modal.message, props.message); +}; diff --git a/web-client/src/presenter/actions/updateValidationErrorsAction.ts b/web-client/src/presenter/actions/updateValidationErrorsAction.ts deleted file mode 100644 index 7c9acdf6bfe..00000000000 --- a/web-client/src/presenter/actions/updateValidationErrorsAction.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { state } from '@web-client/presenter/app.cerebral'; - -// TODO: Test more thoroughly -function recursiveMerge(obj1, obj2) { - // Iterate through the properties of obj2 - for (const key in obj2) { - if (obj2.hasOwnProperty(key)) { - // Check if the value at the key in both objects is an array - if (Array.isArray(obj1[key]) && Array.isArray(obj2[key])) { - // Merge arrays by index identifier - obj2[key].forEach(newItem => { - const existingItem = obj1[key].find( - item => item.index === newItem.index, - ); - if (existingItem) { - // Recursively merge matching items - recursiveMerge(existingItem, newItem); - } else { - // Push new item if no match found - obj1[key].push(newItem); - } - }); - } else if ( - typeof obj1[key] === 'object' && - typeof obj2[key] === 'object' - ) { - // Recursively merge objects - recursiveMerge(obj1[key], obj2[key]); - } else { - // Directly set the value if not both arrays or objects - obj1[key] = obj2[key]; - } - } - } -} - -export const updateValidationErrorsAction = ({ - get, - props, - store, -}: ActionProps) => { - const validationErrors = get(state.validationErrors); - const newValidationErrors: Record = props.errors; - recursiveMerge(validationErrors, newValidationErrors); - store.set(state.validationErrors, validationErrors); -}; diff --git a/web-client/src/presenter/presenter.ts b/web-client/src/presenter/presenter.ts index fbe47fe9ac0..737cbd29ded 100644 --- a/web-client/src/presenter/presenter.ts +++ b/web-client/src/presenter/presenter.ts @@ -410,6 +410,7 @@ import { setViewerDocumentToDisplaySequence } from './sequences/setViewerDocumen import { setViewerDraftDocumentToDisplaySequence } from './sequences/setViewerDraftDocumentToDisplaySequence'; import { showCalculatePenaltiesModalSequence } from './sequences/showCalculatePenaltiesModalSequence'; import { showDocketRecordDetailModalSequence } from './sequences/showDocketRecordDetailModalSequence'; +import { showErrorModalSequence } from '@web-client/presenter/sequences/showErrorModalSequence'; import { showGenerateNoticesProgressSequence } from './sequences/showGenerateNoticesProgressSequence'; import { showMoreClosedCasesSequence } from './sequences/showMoreClosedCasesSequence'; import { showMoreOpenCasesSequence } from './sequences/showMoreOpenCasesSequence'; @@ -551,7 +552,6 @@ import { updateTrialSessionCompleteSequence } from './sequences/updateTrialSessi import { updateTrialSessionFormDataSequence } from './sequences/updateTrialSessionFormDataSequence'; import { updateTrialSessionSequence } from './sequences/updateTrialSessionSequence'; import { updateUserCaseNoteOnWorkingCopySequence } from './sequences/updateUserCaseNoteOnWorkingCopySequence'; -import { updateValidationErrorsSequence } from '@web-client/presenter/sequences/updateValidationErrorsSequence'; import { updateWorkingCopySessionNoteSequence } from './sequences/updateWorkingCopySessionNoteSequence'; import { updatedFilePetitionCompleteStep1Sequence } from './sequences/updatedFilePetitionCompleteStep1Sequence'; import { updatedFilePetitionCompleteStep2Sequence } from './sequences/updatedFilePetitionCompleteStep2Sequence'; @@ -1288,6 +1288,7 @@ export const presenterSequences = { showCalculatePenaltiesModalSequence as unknown as Function, showDocketRecordDetailModalSequence: showDocketRecordDetailModalSequence as unknown as Function, + showErrorModalSequence, showGenerateNoticesProgressSequence: showGenerateNoticesProgressSequence as unknown as Function, showMoreClosedCasesSequence: @@ -1521,7 +1522,6 @@ export const presenterSequences = { updateTrialSessionSequence: updateTrialSessionSequence as unknown as Function, updateUserCaseNoteOnWorkingCopySequence: updateUserCaseNoteOnWorkingCopySequence as unknown as Function, - updateValidationErrorsSequence, updateWorkingCopySessionNoteSequence: updateWorkingCopySessionNoteSequence as unknown as Function, updatedFilePetitionCompleteStep1Sequence: diff --git a/web-client/src/presenter/sequences/showErrorModalSequence.ts b/web-client/src/presenter/sequences/showErrorModalSequence.ts new file mode 100644 index 00000000000..967773f4834 --- /dev/null +++ b/web-client/src/presenter/sequences/showErrorModalSequence.ts @@ -0,0 +1,15 @@ +import { logErrorAction } from '@web-client/presenter/actions/logErrorAction'; +import { setModalMessageAction } from '@web-client/presenter/actions/setModalMessageAction'; +import { setModalTitleAction } from '@web-client/presenter/actions/setModalTitleAction'; +import { setShowModalFactoryAction } from '@web-client/presenter/actions/setShowModalFactoryAction'; + +export const showErrorModalSequence = [ + setModalTitleAction, + setModalMessageAction, + logErrorAction, + setShowModalFactoryAction('GenericErrorModal'), +] as unknown as (props: { + message: string; + title: string; + errorToLog?: any; +}) => void; diff --git a/web-client/src/presenter/sequences/updateValidationErrorsSequence.ts b/web-client/src/presenter/sequences/updateValidationErrorsSequence.ts deleted file mode 100644 index 648a4a9f2ba..00000000000 --- a/web-client/src/presenter/sequences/updateValidationErrorsSequence.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { updateValidationErrorsAction } from '@web-client/presenter/actions/updateValidationErrorsAction'; - -export const updateValidationErrorsSequence = [ - updateValidationErrorsAction, -] as unknown as (props: { errors: any }) => void; diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index 4efe0d1cf39..b87583b00d9 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -19,24 +19,11 @@ type StateDriveFileInputProps = { ignoreSizeKey?: boolean; }; -// Get an error object that mimics our formatted error messages -// Currently only handles a single nesting level, e.g., supportingDocuments.n.supportingDocumentFile -// but not, e.g., supportingDocuments.n.part1.m.documentFile or supportingDocuments.n.m.documentFile -const getErrorObject = (inputName: string, errorMessage: string) => { - if (!inputName.includes('.')) { - return { [inputName]: errorMessage }; - } - const split = inputName.split('.'); - return { - [split[0]]: [{ index: parseInt(split[1]), [split[2]]: errorMessage }], - }; -}; - const deps = { constants: state.constants, form: state.form, + showErrorModalSequence: sequences.showErrorModalSequence, updateFormValueSequence: sequences[props.updateFormValueSequence], - updateValidationErrorsSequence: sequences.updateValidationErrorsSequence, validationSequence: sequences[props.validationSequence], }; @@ -54,8 +41,8 @@ export const StateDrivenFileInput = connect< id, ignoreSizeKey, name: fileInputName, + showErrorModalSequence, updateFormValueSequence, - updateValidationErrorsSequence, validationSequence, ...remainingProps }) { @@ -71,17 +58,14 @@ export const StateDrivenFileInput = connect< megabyteLimit: constants.MAX_FILE_SIZE_MB, }); if (!isValid) { - console.log(inputName); - updateValidationErrorsSequence({ - errors: getErrorObject(inputName, errorMessage!), + showErrorModalSequence({ + errorToLog: errorMessage, + message: errorMessage!, + title: 'File Upload Error', }); e.target.value = null; return; } - // On success, remove the error validation and update form values - updateValidationErrorsSequence({ - errors: getErrorObject(inputName, ''), - }); const uploadedFile = e.target.files[0]; cloneFile(uploadedFile) .then(clonedFile => { diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts index 392fec95db5..70275c1cc80 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts @@ -7,7 +7,6 @@ export const validatePDFUpload = ({ file: File; }): Promise => { return new Promise(resolve => { - console.log('file', file.type); const fileReader = new FileReader(); fileReader.readAsArrayBuffer(file); @@ -19,7 +18,7 @@ export const validatePDFUpload = ({ resolve({ errorMessage: 'Failed to read file as ArrayBuffer.', isValid: false, - }); // Return false on failure + }); return; } @@ -45,13 +44,12 @@ export const validatePDFUpload = ({ }); } } - resolve({ errorMessage: 'An unknown error occurred', isValid: false }); // Return false on failure + resolve({ errorMessage: 'An unknown error occurred', isValid: false }); } }; fileReader.onerror = () => { - console.error('Error reading the file.'); - resolve({ errorMessage: 'Error reading the file.', isValid: false }); // Return false on failure + resolve({ errorMessage: 'Error reading the file.', isValid: false }); }; }); }; diff --git a/web-client/src/views/GenericErrorModal.tsx b/web-client/src/views/GenericErrorModal.tsx index 659b951ff83..2f74da3cc68 100644 --- a/web-client/src/views/GenericErrorModal.tsx +++ b/web-client/src/views/GenericErrorModal.tsx @@ -1,22 +1,25 @@ import { ModalDialog } from './ModalDialog'; import { connect } from '@web-client/presenter/shared.cerebral'; import { sequences } from '@web-client/presenter/app.cerebral'; +import { state } from '@web-client/presenter/app.cerebral'; import React from 'react'; export const GenericErrorModal = connect( { clearModalSequence: sequences.clearModalSequence, + message: state.modal.message, + modalTitle: state.modal.title, }, - function GenericErrorModal({ clearModalSequence }) { + function GenericErrorModal({ clearModalSequence, message, modalTitle }) { return ( - Something went wrong, please try again later. + {message || 'Something went wrong, please try again later.'} ); }, diff --git a/web-client/src/views/ModalDialog.tsx b/web-client/src/views/ModalDialog.tsx index dae91d6f0a0..c8f40741971 100644 --- a/web-client/src/views/ModalDialog.tsx +++ b/web-client/src/views/ModalDialog.tsx @@ -99,6 +99,7 @@ export const ModalDialog = ({ {cancelLabel} From d5f060ce90939259840f2434428cbe43ecb68c60 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Tue, 3 Sep 2024 17:09:50 -0400 Subject: [PATCH 04/65] 10001-design-debt: remove console.log and add ts-ignore to a file --- shared/src/business/entities/JoiValidationEntity.ts | 2 -- web-client/src/presenter/actions/setModalErrorAction.ts | 2 -- .../src/views/FileHandlingHelpers/cloneFile.error.test.ts | 1 + 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/shared/src/business/entities/JoiValidationEntity.ts b/shared/src/business/entities/JoiValidationEntity.ts index 0deb34b7c33..f826965f8ae 100644 --- a/shared/src/business/entities/JoiValidationEntity.ts +++ b/shared/src/business/entities/JoiValidationEntity.ts @@ -48,7 +48,6 @@ function getFormattedValidationErrors(entity): Record | null { if (entity.getFormattedValidationErrors) { errors = entity.getValidationErrors(); } - console.log('errors', errors); if (errors) { for (const key of Object.keys(errors)) { if ( @@ -84,7 +83,6 @@ function getFormattedValidationErrors(entity): Record | null { if (!obj[key]) delete obj[key]; } } - console.log('Wow', obj); return Object.keys(obj).length === 0 ? null : obj; } diff --git a/web-client/src/presenter/actions/setModalErrorAction.ts b/web-client/src/presenter/actions/setModalErrorAction.ts index 56696338931..f856c6c8a08 100644 --- a/web-client/src/presenter/actions/setModalErrorAction.ts +++ b/web-client/src/presenter/actions/setModalErrorAction.ts @@ -9,7 +9,5 @@ import { state } from '@web-client/presenter/app.cerebral'; */ export const setModalErrorAction = ({ props, store }: ActionProps) => { const { error } = props; - store.set(state.modal.error, error); - store.set(state.modal.title, 'File Upload Error'); store.set(state.modal.message, error); }; diff --git a/web-client/src/views/FileHandlingHelpers/cloneFile.error.test.ts b/web-client/src/views/FileHandlingHelpers/cloneFile.error.test.ts index d428ff2f56a..b748dc77aef 100644 --- a/web-client/src/views/FileHandlingHelpers/cloneFile.error.test.ts +++ b/web-client/src/views/FileHandlingHelpers/cloneFile.error.test.ts @@ -29,6 +29,7 @@ describe('cloneFile', () => { it('should fail when attempting to clone something other than a file', async () => { let error; try { + // @ts-ignore const clonePromise = cloneFile(2); keys.error(); await clonePromise; From a1b1635bdddc29c1f0da86361643265fe8b31df8 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Tue, 3 Sep 2024 17:46:26 -0400 Subject: [PATCH 05/65] 10001-design-debt: undo unintentional changes and redundant code --- web-api/src/app.ts | 2 +- web-client/src/presenter/actions/setModalErrorAction.ts | 2 +- web-client/src/views/FileDocument/StateDrivenFileInput.tsx | 3 +-- web-client/src/views/ModalDialog.tsx | 2 -- 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/web-api/src/app.ts b/web-api/src/app.ts index 208615d7fb4..38c39e63fe9 100644 --- a/web-api/src/app.ts +++ b/web-api/src/app.ts @@ -454,7 +454,6 @@ app.use(logger()); '/async/case-documents/batch-download', lambdaWrapper(batchDownloadDocketEntriesLambda, { isAsync: true }), ); - app.post('/logError', lambdaWrapper(logErrorLambda)); // PUT app.put( @@ -1080,6 +1079,7 @@ app.delete( { app.get('/system/maintenance-mode', lambdaWrapper(getMaintenanceModeLambda)); app.get('/system/feature-flag', lambdaWrapper(getAllFeatureFlagsLambda)); + app.post('/logError', lambdaWrapper(logErrorLambda)); } /** diff --git a/web-client/src/presenter/actions/setModalErrorAction.ts b/web-client/src/presenter/actions/setModalErrorAction.ts index f856c6c8a08..5fec18d1599 100644 --- a/web-client/src/presenter/actions/setModalErrorAction.ts +++ b/web-client/src/presenter/actions/setModalErrorAction.ts @@ -9,5 +9,5 @@ import { state } from '@web-client/presenter/app.cerebral'; */ export const setModalErrorAction = ({ props, store }: ActionProps) => { const { error } = props; - store.set(state.modal.message, error); + store.set(state.modal.error, error); }; diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index b87583b00d9..92e067812df 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -66,8 +66,7 @@ export const StateDrivenFileInput = connect< e.target.value = null; return; } - const uploadedFile = e.target.files[0]; - cloneFile(uploadedFile) + cloneFile(selectedFile) .then(clonedFile => { updateFormValueSequence({ key: inputName, diff --git a/web-client/src/views/ModalDialog.tsx b/web-client/src/views/ModalDialog.tsx index c8f40741971..dae91d6f0a0 100644 --- a/web-client/src/views/ModalDialog.tsx +++ b/web-client/src/views/ModalDialog.tsx @@ -99,7 +99,6 @@ export const ModalDialog = ({ {cancelLabel} From 53901759ff22ca81d8af737c95b51bd8c48e1044 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Wed, 4 Sep 2024 10:56:40 -0400 Subject: [PATCH 06/65] 10001-design-debt: including validation for 10001, 10002, and 10003, including other file types; some tests --- .../FileDocument/StateDrivenFileInput.tsx | 1 + .../fileValidation.test.ts | 72 +++++++++++++++++++ .../FileHandlingHelpers/fileValidation.ts | 56 +++++++++++++++ .../FileHandlingHelpers/pdfValidation.ts | 11 +-- 4 files changed, 136 insertions(+), 4 deletions(-) create mode 100644 web-client/src/views/FileHandlingHelpers/fileValidation.test.ts diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index 92e067812df..6b8c44b4eed 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -54,6 +54,7 @@ export const StateDrivenFileInput = connect< const { name: inputName } = e.target; const selectedFile = e.target.files[0]; const { errorMessage, isValid } = await validateFile({ + allowedFileExtensions: accept.split(','), file: selectedFile, megabyteLimit: constants.MAX_FILE_SIZE_MB, }); diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts new file mode 100644 index 00000000000..48356982c93 --- /dev/null +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts @@ -0,0 +1,72 @@ +import { validateFile } from '@web-client/views/FileHandlingHelpers/fileValidation'; +import { validatePDFUpload } from './pdfValidation'; + +jest.mock('./pdfValidation', () => ({ + validatePDFUpload: jest.fn(), // Mock the validatePDF function +})); + +describe('fileValidation', () => { + it('should return invalid with error message for improper file with one allowed extension', async () => { + const file = new File([], 'test.csv'); + const allowedFileExtensions = ['.pdf']; + const validationResult = await validateFile({ + allowedFileExtensions, + file, + megabyteLimit: 250, + }); + expect(validationResult.isValid).toBe(false); + expect(validationResult.errorMessage).toBe( + 'File is not a PDF. Select a PDF file or resave the file as a PDF.', + ); + }); + it('should return invalid with error message for improper file multiple allowed extensions', async () => { + const file = new File([], 'test.csv'); + const allowedFileExtensions = ['.pdf', '.doc', '.docx']; + const validationResult = await validateFile({ + allowedFileExtensions, + file, + megabyteLimit: 250, + }); + expect(validationResult.isValid).toBe(false); + expect(validationResult.errorMessage).toBe( + 'File is not in a supported format (.pdf, .doc, .docx). Select a different file or resave it in a supported format.', + ); + }); + it('should return invalid with error message for file too big', async () => { + const file = new File([], 'test.csv'); + const allowedFileExtensions = ['.pdf', '.doc', '.docx']; + const megabyteLimit = -1; + const validationResult = await validateFile({ + allowedFileExtensions, + file, + megabyteLimit, + }); + expect(validationResult.isValid).toBe(false); + expect(validationResult.errorMessage).toBe( + `Your file size is too big. The maximum file size is ${megabyteLimit}MB.`, + ); + }); + it('should call pdf validation for a pdf', async () => { + const file = new File([], 'test.pdf', { type: 'application/pdf' }); + const allowedFileExtensions = ['.pdf']; + const megabyteLimit = 250; + await validateFile({ + allowedFileExtensions, + file, + megabyteLimit, + }); + expect(validatePDFUpload).toHaveBeenCalled(); + }); + it('should return valid for valid PDF', async () => { + const file = new File([], 'test.pdf', { type: 'application/pdf' }); + const allowedFileExtensions = ['.pdf']; + const megabyteLimit = 250; + (validatePDFUpload as jest.Mock).mockReturnValue({ isValid: true }); + const validationResult = await validateFile({ + allowedFileExtensions, + file, + megabyteLimit, + }); + expect(validationResult).toMatchObject({ isValid: true }); + }); +}); diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.ts index ffe4e4b295e..a2c71b4b1d2 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.ts @@ -5,19 +5,75 @@ export interface FileValidationResponse { errorMessage?: string; } +function getFileExtension(filename: string) { + // Shift to avoid -1 - 1 = -2 in the case of no period + return filename.slice(((filename.lastIndexOf('.') - 1) >>> 0) + 1); +} + +// Including the article to avoid worrying about a/an logic +const fileExtensionDisplayNames = { + '.doc': 'a Word Document', + '.docx': 'a Word Document', + '.jpeg': 'a JPEG Image', + '.jpg': 'a JPEG Image', + '.pdf': 'a PDF', + '.png': 'a PNG Image', +}; + +const getDisplayNameForFileExtension = (fileExtension: string) => { + if (Object.keys(fileExtensionDisplayNames).includes(fileExtension)) { + return fileExtensionDisplayNames[fileExtension]; + } + return fileExtension; +}; + +const getWrongFileTypeMessage = (fileExtensions: string[]) => { + if (fileExtensions.length === 1) { + const displayName = getDisplayNameForFileExtension(fileExtensions[0]); + return `File is not ${displayName}. Select ${displayName} file or resave the file as ${displayName}.`; + } + return `File is not in a supported format (${fileExtensions.join(', ')}). Select a different file or resave it in a supported format.`; +}; + +const validateCorrectFileType = ({ + allowedFileExtensions, + file, +}: { + file: File; + allowedFileExtensions: string[]; +}) => { + if (!allowedFileExtensions.includes(getFileExtension(file.name))) { + return { + errorMessage: getWrongFileTypeMessage(allowedFileExtensions), + isValid: false, + }; + } + return { isValid: true }; +}; + export const validateFile = async ({ + allowedFileExtensions, file, megabyteLimit, }: { file: File; megabyteLimit: number; + allowedFileExtensions: string[]; }): Promise => { + console.log(file); if (file.size > megabyteLimit * 1024 * 1024) { return { errorMessage: `Your file size is too big. The maximum file size is ${megabyteLimit}MB.`, isValid: false, }; } + const correctFileValidation = validateCorrectFileType({ + allowedFileExtensions, + file, + }); + if (!correctFileValidation.isValid) { + return correctFileValidation; + } if (file.type === 'application/pdf') { return await validatePDFUpload({ file }); } diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts index 70275c1cc80..0499b4965d5 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts @@ -1,6 +1,11 @@ import { FileValidationResponse } from '@web-client/views/FileHandlingHelpers/fileValidation'; import { applicationContext } from '@web-client/applicationContext'; +export const PDF_PASSWORD_PROTECTED_ERROR_MESSAGE = + 'File is encrypted or password protected. Remove encryption or password protection and try again.'; +export const PDF_CORRUPTED_ERROR_MESSAGE = + 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.'; + export const validatePDFUpload = ({ file, }: { @@ -32,14 +37,12 @@ export const validatePDFUpload = ({ if (err instanceof Error) { if (err.name === 'PasswordException') { resolve({ - errorMessage: - 'File is encrypted or password protected. Remove encryption or password protection and try again.', + errorMessage: PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, isValid: false, }); } else if (err.name === 'InvalidPDFException') { resolve({ - errorMessage: - 'File is not a PDF. Select a PDF file or resave the file as a PDF.', + errorMessage: PDF_CORRUPTED_ERROR_MESSAGE, isValid: false, }); } From d39710e5b7e064f638c32456c3899ce1773f2e02 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Thu, 5 Sep 2024 10:14:42 -0400 Subject: [PATCH 07/65] 10001-design-debt: first pass at fixing tests, but will probably need a unique id for each file upload success element --- .../integration/advancedSearch/search.cy.ts | 8 ++- .../create-and-serve-paper-filing.ts | 8 ++- cypress/helpers/file/upload-file.ts | 11 ++++ ...ve-paper-petition-petitioner-and-spouse.ts | 13 +++-- .../create-and-serve-paper-petition.ts | 57 ++++++++++++------- ...itioner-creates-electronic-case-updated.ts | 8 ++- .../petitioner-creates-electronic-case.ts | 8 ++- .../support/pages/create-paper-petition.ts | 30 ++++++---- .../local-only/support/pages/document-qc.ts | 9 ++- .../caseDetail/consolidated-case.cy.ts | 8 ++- .../courtIssuedFiling/stamp-order.cy.ts | 8 ++- .../electronicFiling/file-an-answer.cy.ts | 6 +- .../petitioner-files-external-document.cy.ts | 8 ++- ...ner-files-motion-to-stay-proceedings.cy.ts | 15 +++-- .../docket-clerk-qcs-paper-filing.cy.ts | 8 ++- .../fileAPetition/file-a-petition.cy.ts | 11 +++- ...etition-step-1-business--corporation.cy.ts | 21 +++++-- ...rship-other-than-tax-matters-partner.cy.ts | 21 +++++-- ...partnership-representative-under-BBA.cy.ts | 21 +++++-- ...ess--partnership-tax-matters-partner.cy.ts | 22 +++++-- .../file-a-petition-step-2.cy.ts | 11 +++- .../file-a-petition-step-3.cy.ts | 6 +- .../file-a-petition-step-5.cy.ts | 6 +- ...tion-step-6-petitioner-info-business.cy.ts | 29 ++++++---- .../fileAPetitionUpdated/petition-helper.ts | 20 +++++-- 25 files changed, 266 insertions(+), 107 deletions(-) diff --git a/cypress/deployed-and-local/integration/advancedSearch/search.cy.ts b/cypress/deployed-and-local/integration/advancedSearch/search.cy.ts index e75979b072c..280166d3156 100644 --- a/cypress/deployed-and-local/integration/advancedSearch/search.cy.ts +++ b/cypress/deployed-and-local/integration/advancedSearch/search.cy.ts @@ -1,4 +1,5 @@ import { assertExists, retry } from '../../../helpers/retry'; +import { attachFile } from '../../../helpers/file/upload-file'; import { createAPractitioner } from '../../../helpers/accountCreation/create-a-practitioner'; import { createAndServePaperPetition } from '../../../helpers/fileAPetition/create-and-serve-paper-petition'; import { faker } from '@faker-js/faker'; @@ -104,9 +105,10 @@ describe('Advanced Search', () => { cy.get('[data-testid="case-detail-menu-button"]').click(); cy.get('[data-testid="menu-button-upload-pdf"]').click(); cy.get('[data-testid="upload-description"]').type(opinionTitle); - cy.get('[data-testid="primary-document-file"]').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: '[data-testid="primary-document-file"]', + }); cy.get('[data-testid="upload-file-success"]').should('exist'); cy.get('[data-testid="save-uploaded-pdf-button"]').click(); cy.get('[data-testid="add-court-issued-docket-entry-button"]').click(); diff --git a/cypress/helpers/caseDetail/docketRecord/paperFiling/create-and-serve-paper-filing.ts b/cypress/helpers/caseDetail/docketRecord/paperFiling/create-and-serve-paper-filing.ts index 935ce8ea07e..b7928cb0f5c 100644 --- a/cypress/helpers/caseDetail/docketRecord/paperFiling/create-and-serve-paper-filing.ts +++ b/cypress/helpers/caseDetail/docketRecord/paperFiling/create-and-serve-paper-filing.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../../../file/upload-file'; import { selectTypeaheadInput } from '../../../components/typeAhead/select-typeahead-input'; export function createAndServePaperFiling( @@ -14,9 +15,10 @@ export function createAndServePaperFiling( cy.get('[data-testid="objections-No"]').click(); cy.get('[data-testid="upload-pdf-button"]').click(); - cy.get('input#primaryDocumentFile-file').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#primaryDocumentFile-file', + }); cy.get('[data-testid="save-and-serve"]').click(); cy.get('[data-testid="modal-button-confirm"]').click(); diff --git a/cypress/helpers/file/upload-file.ts b/cypress/helpers/file/upload-file.ts index 2397a3b6e42..941ecd634b2 100644 --- a/cypress/helpers/file/upload-file.ts +++ b/cypress/helpers/file/upload-file.ts @@ -13,3 +13,14 @@ export function uploadFile(testId: string) { ); cy.get('[data-testid="upload-file-success"]').should('exist'); } + +export function attachFile({ + filePath, + selector, +}: { + selector: string; + filePath: string; +}) { + cy.get(selector).attachFile(filePath); + cy.get('[data-testid="upload-file-success"]').should('exist'); +} diff --git a/cypress/helpers/fileAPetition/create-and-serve-paper-petition-petitioner-and-spouse.ts b/cypress/helpers/fileAPetition/create-and-serve-paper-petition-petitioner-and-spouse.ts index 980084e9379..aee052d8525 100644 --- a/cypress/helpers/fileAPetition/create-and-serve-paper-petition-petitioner-and-spouse.ts +++ b/cypress/helpers/fileAPetition/create-and-serve-paper-petition-petitioner-and-spouse.ts @@ -2,6 +2,7 @@ import { CASE_TYPES_MAP, PARTY_TYPES, } from '../../../shared/src/business/entities/EntityConstants'; +import { attachFile } from '../file/upload-file'; import { faker } from '@faker-js/faker'; export function createAndServePaperPetitionMultipleParties( @@ -58,14 +59,18 @@ export function createAndServePaperPetitionMultipleParties( cy.get('[data-testid="case-type-select"]').select(CASE_TYPES_MAP.passport); cy.get('#upload-mode-upload').click(); cy.get('#uploadMode').check(); - cy.get('#petitionFile-file').attachFile('../../helpers/file/sample.pdf'); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: '#petitionFile-file', + }); cy.get('#tabButton-requestForPlaceOfTrialFile > .button-text').click(); cy.get('#scan-mode-radios').click(); cy.get('#upload-mode-upload').click(); cy.get('#uploadMode').check(); - cy.get('#requestForPlaceOfTrialFile-file').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: '#requestForPlaceOfTrialFile-file', + }); cy.get('[data-testid="submit-paper-petition"]').click(); return cy .get('.docket-number-header a') diff --git a/cypress/helpers/fileAPetition/create-and-serve-paper-petition.ts b/cypress/helpers/fileAPetition/create-and-serve-paper-petition.ts index 9780a655748..82ce1e472eb 100644 --- a/cypress/helpers/fileAPetition/create-and-serve-paper-petition.ts +++ b/cypress/helpers/fileAPetition/create-and-serve-paper-petition.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../file/upload-file'; import { loginAsPetitionsClerk1 } from '../authentication/login-as-helpers'; export function createAndServePaperPetition( @@ -43,38 +44,49 @@ export function createAndServePaperPetition( cy.get('[data-testid="case-type-select"]').select('CDP (Lien/Levy)'); cy.get('#upload-mode-upload').click(); cy.get('#uploadMode').check(); - cy.get('#petitionFile-file').attachFile('../../helpers/file/sample.pdf'); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: '#petitionFile-file', + }); cy.get('#tabButton-requestForPlaceOfTrialFile > .button-text').click(); cy.get('#scan-mode-radios').click(); cy.get('#upload-mode-upload').click(); cy.get('#uploadMode').check(); - cy.get('#requestForPlaceOfTrialFile-file').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: '#requestForPlaceOfTrialFile-file', + }); cy.get('[data-testid="tabButton-stinFile"]').click(); cy.get('[data-testid="upload-pdf-button"]').click(); - cy.get('input#stinFile-file').attachFile('../../helpers/file/sample.pdf'); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#stinFile-file', + }); cy.get('[data-testid="tabButton-attachmentToPetitionFile"]').click(); cy.get('[data-testid="upload-pdf-button"]').click(); - cy.get('input#attachmentToPetitionFile-file').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#attachmentToPetitionFile-file', + }); cy.get('[data-testid="remove-pdf"]'); cy.get('[data-testid="tabButton-corporateDisclosureFile"]').click(); cy.get('[data-testid="upload-pdf-button"]').click(); - cy.get('input#corporateDisclosureFile-file').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#corporateDisclosureFile-file', + }); + cy.get( '[data-testid="tabButton-applicationForWaiverOfFilingFeeFile"]', ).click(); cy.get('[data-testid="upload-pdf-button"]').click(); - cy.get('input#applicationForWaiverOfFilingFeeFile-file').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#applicationForWaiverOfFilingFeeFile-file', + }); cy.get('[data-testid="submit-paper-petition"]').click(); return cy @@ -176,17 +188,24 @@ export function createAndServePaperPetitionMyselfAndSpouse() { cy.get('[data-testid="case-type-select"]').select('Deficiency'); cy.get('#upload-mode-upload').click(); - cy.get('#petitionFile-file').attachFile('../../helpers/file/sample.pdf'); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: '#petitionFile-file', + }); cy.get('#tabButton-requestForPlaceOfTrialFile > .button-text').click(); cy.get('#upload-mode-upload').click(); - cy.get('#requestForPlaceOfTrialFile-file').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: '#requestForPlaceOfTrialFile-file', + }); cy.get('[data-testid="tabButton-stinFile"]').click(); cy.get('[data-testid="upload-pdf-button"]').click(); - cy.get('input#stinFile-file').attachFile('../../helpers/file/sample.pdf'); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#stinFile-file', + }); cy.get('[data-testid="submit-paper-petition"]').click(); diff --git a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts index 5530ccbf537..0b8b0b5b766 100644 --- a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts +++ b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../file/upload-file'; import { uploadFile } from '../file/upload-file'; export function petitionerCreatesElectronicCaseUpdated( @@ -124,9 +125,10 @@ export function petitionerAttemptsToUploadCorruptPdfUpdated() { cy.get('[data-testid="preferred-trial-city"]').select('Mobile, Alabama'); cy.get('[data-testid="step-4-next-button"]').click(); - cy.get('[data-testid="stin-file"]').attachFile( - '../../helpers/file/corrupt-pdf.pdf', - ); + attachFile({ + filePath: '../../helpers/file/corrupt-pdf.pdf', + selector: '[data-testid="stin-file"]', + }); cy.get('[data-testid="step-5-next-button"]').click(); cy.get('[data-testid="atp-preview-button"]').should('exist'); diff --git a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts index be024036098..f1359894c68 100644 --- a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts +++ b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../file/upload-file'; import { petitionerAttemptsToUploadCorruptPdfUpdated, petitionerCreatesElectronicCaseForBusinessUpdated, @@ -293,9 +294,10 @@ export function petitionerAttemptsToUploadCorruptPdf() { export function petitionerAttemptsToUploadCorruptPdfOld() { cy.get('[data-testid="file-a-petition"]').click(); cy.get('[data-testid="go-to-step-1"]').click(); - cy.get('[data-testid="stin-file"]').attachFile( - '../../helpers/file/corrupt-pdf.pdf', - ); + attachFile({ + filePath: '../../helpers/file/corrupt-pdf.pdf', + selector: '[data-testid="stin-file"]', + }); cy.get('[data-testid="complete-step-1"]').click(); uploadFile('petition-file'); cy.get('[data-testid="irs-notice-Yes"]').click(); diff --git a/cypress/local-only/support/pages/create-paper-petition.ts b/cypress/local-only/support/pages/create-paper-petition.ts index e8b46a3642a..ad4a66df641 100644 --- a/cypress/local-only/support/pages/create-paper-petition.ts +++ b/cypress/local-only/support/pages/create-paper-petition.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../../../helpers/file/upload-file'; import { faker } from '@faker-js/faker'; import { getCreateACaseButton, @@ -88,31 +89,40 @@ export const fillInCreateCaseFromPaperForm = (testData?: { // petition cy.get('[data-testid="upload-pdf-button"]').click(); - cy.get('input#petitionFile-file').attachFile('../../helpers/file/sample.pdf'); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#petitionFile-file', + }); cy.get('[data-testid="remove-pdf"]'); //stin cy.get('[data-testid="tabButton-stinFile"]').click(); cy.get('[data-testid="upload-pdf-button"]').click(); - cy.get('input#stinFile-file').attachFile('../../helpers/file/sample.pdf'); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#stinFile-file', + }); cy.get('[data-testid="remove-pdf"]'); - //rqt + // rqt cy.get('[data-testid="tabButton-requestForPlaceOfTrialFile"]').click(); cy.get('[data-testid="upload-pdf-button"]').click(); - cy.get('input#requestForPlaceOfTrialFile-file').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#requestForPlaceOfTrialFile-file', + }); cy.get('[data-testid="remove-pdf"]'); cy.get('[data-testid="icon-requestForPlaceOfTrialFile"]').should( 'be.visible', ); - //atp + // atp cy.get('[data-testid="tabButton-attachmentToPetitionFile"]').click(); cy.get('[data-testid="upload-pdf-button"]').click(); - cy.get('input#attachmentToPetitionFile-file').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#attachmentToPetitionFile-file', + }); + cy.get('[data-testid="remove-pdf"]'); }; diff --git a/cypress/local-only/support/pages/document-qc.ts b/cypress/local-only/support/pages/document-qc.ts index cb2aa0beae6..2c5c88916a8 100644 --- a/cypress/local-only/support/pages/document-qc.ts +++ b/cypress/local-only/support/pages/document-qc.ts @@ -1,3 +1,5 @@ +import { attachFile } from '../../../helpers/file/upload-file'; + export const navigateTo = username => { cy.login(username, '/document-qc'); }; @@ -52,9 +54,10 @@ export const uploadCourtIssuedDocumentAndEditViaDocumentQC = () => { const freeText = `court document ${Math.random()}`; cy.get('#upload-description').clear(); cy.get('#upload-description').type(freeText); - cy.get('input#primary-document-file').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#primary-document-file', + }); cy.get('[data-testid="upload-file-success"]'); cy.get('#save-uploaded-pdf-button').click(); cy.get('#add-court-issued-docket-entry-button').click(); diff --git a/cypress/local-only/tests/integration/caseDetail/consolidated-case.cy.ts b/cypress/local-only/tests/integration/caseDetail/consolidated-case.cy.ts index 50d114171b9..82d1a756587 100644 --- a/cypress/local-only/tests/integration/caseDetail/consolidated-case.cy.ts +++ b/cypress/local-only/tests/integration/caseDetail/consolidated-case.cy.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../../../../helpers/file/upload-file'; import { getCaseDetailTab } from '../../../support/pages/case-detail'; describe('Docket clerk views consolidated case', function () { @@ -53,9 +54,10 @@ describe('Docket clerk views consolidated case', function () { cy.get('input#upload-description').clear(); cy.get('input#upload-description').type('temp correspondence'); cy.get('[data-testid="upload-pdf-button"]').click(); - cy.get('input#primaryDocumentFile-file').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#primaryDocumentFile-file', + }); cy.get('[data-testid="remove-pdf"]'); cy.get('button#upload-correspondence').click(); // delete correspondence diff --git a/cypress/local-only/tests/integration/caseDetail/docketRecord/courtIssuedFiling/stamp-order.cy.ts b/cypress/local-only/tests/integration/caseDetail/docketRecord/courtIssuedFiling/stamp-order.cy.ts index db9507b56a7..1ccad23a47a 100644 --- a/cypress/local-only/tests/integration/caseDetail/docketRecord/courtIssuedFiling/stamp-order.cy.ts +++ b/cypress/local-only/tests/integration/caseDetail/docketRecord/courtIssuedFiling/stamp-order.cy.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../../../../../../helpers/file/upload-file'; import { loginAsPetitioner } from '../../../../../../helpers/authentication/login-as-helpers'; import { petitionerCreatesElectronicCaseWithSpouse } from '../../../../../../helpers/fileAPetition/petitioner-creates-electronic-case'; import { petitionsClerkServesPetition } from '../../../../../../helpers/documentQC/petitionsclerk-serves-petition'; @@ -20,9 +21,10 @@ describe('Judge`s chambers stamps an order', () => { cy.get('#react-select-2-option-0').click({ force: true }); cy.get('[data-testid="filed-by-option"]').contains('Petitioner').click(); cy.get('[data-testid="upload-pdf-button"]').click(); - cy.get('input#primaryDocumentFile-file').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#primaryDocumentFile-file', + }); cy.get('[data-testid="remove-pdf"]'); cy.get('[data-testid="save-and-serve"]').click(); cy.get('[data-testid="modal-button-confirm"]').click(); diff --git a/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/file-an-answer.cy.ts b/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/file-an-answer.cy.ts index 12c36fa251c..9d3c1f7b822 100644 --- a/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/file-an-answer.cy.ts +++ b/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/file-an-answer.cy.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../../../../../../helpers/file/upload-file'; import { navigateTo as navigateToDashboard } from '../../../../../support/pages/dashboard'; import { selectTypeaheadInput } from '../../../../../../helpers/components/typeAhead/select-typeahead-input'; @@ -18,7 +19,10 @@ describe('Filing an Answer', function () { 'not.have.class', 'validated', ); - cy.get('#primary-document').attachFile('../../helpers/file/sample.pdf'); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: '#primary-document', + }); cy.get('label#primary-document-label').should('have.class', 'validated'); }); diff --git a/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-external-document.cy.ts b/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-external-document.cy.ts index 041692b8715..90ac7de836a 100644 --- a/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-external-document.cy.ts +++ b/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-external-document.cy.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../../../../../../helpers/file/upload-file'; import { externalUserSearchesDocketNumber } from '../../../../../../helpers/advancedSearch/external-user-searches-docket-number'; import { loginAsPetitioner } from '../../../../../../helpers/authentication/login-as-helpers'; import { petitionerCreatesElectronicCase } from '../../../../../../helpers/fileAPetition/petitioner-creates-electronic-case'; @@ -22,9 +23,10 @@ describe( '[data-testid="secondary-doc-secondary-document-type"] .select-react-element__input', ).type('Answer{enter}'); cy.get('[data-testid="submit-document"]').click(); - cy.get('[data-testid="primary-document"]').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: '[data-testid="primary-document"]', + }); cy.get('[data-testid=primaryDocument-objections-No]').click(); cy.get('#submit-document').click(); cy.get('[data-testid=redaction-acknowledgement-label]').click(); diff --git a/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-motion-to-stay-proceedings.cy.ts b/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-motion-to-stay-proceedings.cy.ts index 129e97bdba9..62fc7f6a8a5 100644 --- a/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-motion-to-stay-proceedings.cy.ts +++ b/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-motion-to-stay-proceedings.cy.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../../../../../../helpers/file/upload-file'; import { externalUserSearchesDocketNumber } from '../../../../../../helpers/advancedSearch/external-user-searches-docket-number'; import { goToCase } from '../../../../../../helpers/caseDetail/go-to-case'; import { @@ -48,9 +49,10 @@ describe('Private Practitioner requests to represent a party to a case', () => { cy.get('[data-testid="objections-No"').click(); cy.get('[data-testid="upload-pdf-button"]').click(); - cy.get('input#primaryDocumentFile-file').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#primaryDocumentFile-file', + }); cy.get('[data-testid="save-for-later"]').click(); cy.get('[data-testid="success-alert"]').contains( @@ -95,9 +97,10 @@ describe('Petitioner files motion to lift stay of proceedings', () => { cy.get('[data-testid="ready-to-file"]').click(); selectTypeaheadInput('document-type', 'MLSP'); cy.get('[data-testid="submit-document"]').click(); - cy.get('[data-testid="primary-document"]').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: '[data-testid="primary-document"]', + }); cy.get('[data-testid=primaryDocument-objections-No]').click(); cy.get('#submit-document').click(); cy.get('[data-testid=redaction-acknowledgement-label]').click(); diff --git a/cypress/local-only/tests/integration/documentQC/docket-clerk-qcs-paper-filing.cy.ts b/cypress/local-only/tests/integration/documentQC/docket-clerk-qcs-paper-filing.cy.ts index 50e0abf9033..070ff0c07bb 100644 --- a/cypress/local-only/tests/integration/documentQC/docket-clerk-qcs-paper-filing.cy.ts +++ b/cypress/local-only/tests/integration/documentQC/docket-clerk-qcs-paper-filing.cy.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../../../../helpers/file/upload-file'; import { loginAsDocketClerk1, loginAsPetitioner, @@ -55,9 +56,10 @@ describe('Docket clerk QC-ing a paper filing', () => { cy.get('[data-testid="objections-No"').click(); cy.get('[data-testid="upload-pdf-button"]').click(); - cy.get('input#primaryDocumentFile-file').attachFile( - '../../helpers/file/sample.pdf', - ); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#primaryDocumentFile-file', + }); cy.get('[data-testid="save-for-later"]').click(); cy.get('[data-testid="success-alert"]').contains( diff --git a/cypress/local-only/tests/integration/fileAPetition/file-a-petition.cy.ts b/cypress/local-only/tests/integration/fileAPetition/file-a-petition.cy.ts index bfee3fc63da..1a841427cac 100644 --- a/cypress/local-only/tests/integration/fileAPetition/file-a-petition.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetition/file-a-petition.cy.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../../../../helpers/file/upload-file'; import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; import { petitionerAttemptsToUploadCorruptPdf } from '../../../../helpers/fileAPetition/petitioner-creates-electronic-case'; @@ -58,7 +59,10 @@ describe('File a Petition', () => { cy.get('label#stin-file-label').scrollIntoView(); cy.get('label#stin-file-label').should('not.have.class', 'validated'); - cy.get('input#stin-file').attachFile('../../helpers/file/sample.pdf'); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#stin-file', + }); cy.get('label#stin-file-label').should('have.class', 'validated'); }); @@ -75,7 +79,10 @@ describe('File a Petition', () => { cy.get('label#petition-file-label').scrollIntoView(); cy.get('label#petition-file-label').should('not.have.class', 'validated'); - cy.get('input#petition-file').attachFile('../../helpers/file/sample.pdf'); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: 'input#petition-file', + }); cy.get('label#petition-file-label').should('have.class', 'validated'); }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts index fa8f845c02c..ee16d8d8c5b 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts @@ -1,4 +1,5 @@ import { InputFillType, selectInput, textInput } from './petition-helper'; +import { attachFile } from '../../../../helpers/file/upload-file'; import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; describe('File a petition: Step 1 - Petitioner Information', () => { @@ -122,7 +123,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get(`[data-testid="${errorMessage}"]`).should('not.exist'); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); @@ -183,7 +187,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get(`[data-testid="${errorMessage}"]`).should('not.exist'); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); @@ -275,7 +282,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get(`[data-testid="${errorMessage}"]`).should('not.exist'); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); @@ -336,7 +346,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get(`[data-testid="${errorMessage}"]`).should('not.exist'); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts index dd59c0dc976..0e3d0f3feb1 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts @@ -1,4 +1,5 @@ import { InputFillType, selectInput, textInput } from './petition-helper'; +import { attachFile } from '../../../../helpers/file/upload-file'; import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; describe('File a petition: Step 1 - Petitioner Information', () => { @@ -131,7 +132,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get('[data-testid="step-1-next-button"]').focus(); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); @@ -199,7 +203,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get('[data-testid="step-1-next-button"]').focus(); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); @@ -300,7 +307,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get('[data-testid="step-1-next-button"]').focus(); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); @@ -368,7 +378,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get('[data-testid="step-1-next-button"]').focus(); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts index 5ba73d8f866..7297ff68c47 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts @@ -1,4 +1,5 @@ import { InputFillType, selectInput, textInput } from './petition-helper'; +import { attachFile } from '../../../../helpers/file/upload-file'; import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; describe('File a petition: Step 1 - Petitioner Information', () => { @@ -128,7 +129,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get(`[data-testid="${errorMessage}"]`).should('not.exist'); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); @@ -194,7 +198,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get(`[data-testid="${errorMessage}"]`).should('not.exist'); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); @@ -292,7 +299,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get(`[data-testid="${errorMessage}"]`).should('not.exist'); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); @@ -358,7 +368,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get(`[data-testid="${errorMessage}"]`).should('not.exist'); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts index 14d42a7738c..a5a755b4ccb 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts @@ -1,4 +1,5 @@ import { InputFillType, selectInput, textInput } from './petition-helper'; +import { attachFile } from '../../../../helpers/file/upload-file'; import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; describe('File a petition: Step 1 - Petitioner Information', () => { @@ -128,7 +129,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get(`[data-testid="${errorMessage}"]`).should('not.exist'); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); @@ -194,7 +198,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get(`[data-testid="${errorMessage}"]`).should('not.exist'); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); @@ -292,7 +299,10 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get(`[data-testid="${errorMessage}"]`).should('not.exist'); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); @@ -358,7 +368,11 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get(`[data-testid="${errorMessage}"]`).should('not.exist'); cy.get('[data-testid="step-1-next-button"]').click(); cy.get(`[data-testid="${errorMessage}"]`).should('exist'); - cy.get(`[data-testid="${input}"]`).attachFile(uploadFile); + + attachFile({ + filePath: uploadFile, + selector: `[data-testid="${input}"]`, + }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-2.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-2.cy.ts index ca21fa7cda3..38b3c21e412 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-2.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-2.cy.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../../../../helpers/file/upload-file'; import { fillPetitionerInformation } from './petition-helper'; import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; @@ -148,7 +149,10 @@ describe('File a petition', () => { cy.get('[data-testid="petition-error-message-0"]').should('exist'); - cy.get('#petition-file').attachFile('../../helpers/file/sample.pdf'); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: '#petition-file', + }); cy.get('[data-testid="petition-error-message-0"]').should( 'not.exist', @@ -156,7 +160,10 @@ describe('File a petition', () => { }); it('should be able to navigate to step 2 when the user uploads a petition correctly', () => { - cy.get('#petition-file').attachFile('../../helpers/file/sample.pdf'); + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: '#petition-file', + }); cy.get('[data-testid="petition-error-message-0"]').should( 'not.exist', diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-3.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-3.cy.ts index fbc6def9dfa..dd27a0ba0eb 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-3.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-3.cy.ts @@ -4,6 +4,7 @@ import { fillPetitionerInformation, selectInput, } from './petition-helper'; +import { attachFile } from '../../../../helpers/file/upload-file'; import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; describe('File a petition - Step 3 IRS Notices', () => { @@ -34,7 +35,10 @@ describe('File a petition - Step 3 IRS Notices', () => { cy.get('[data-testid="step-3-next-button"]').should('exist'); cy.get('[data-testid="step-3-next-button"]').should('not.be.disabled'); - cy.get('[data-testid="irs-notice-upload-0"]').attachFile(VALID_FILE); + attachFile({ + filePath: VALID_FILE, + selector: '[data-testid="irs-notice-upload-0"]', + }); cy.get('[data-testid="step-3-next-button"]').should('exist'); cy.get('[data-testid="step-3-next-button"]').should('be.disabled'); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-5.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-5.cy.ts index 2aee3a72d89..144c33a68a0 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-5.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-5.cy.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../../../../helpers/file/upload-file'; import { fillCaseProcedureInformation, fillIrsNoticeInformation, @@ -27,7 +28,10 @@ describe('File a petition - Step 5 Statement of Taxpayer Identification Number', }); it('should allow user to go to step 6 if stin file is uploaded', () => { - cy.get('[data-testid="stin-file"]').attachFile(VALID_FILE); + attachFile({ + filePath: VALID_FILE, + selector: '[data-testid="stin-file"]', + }); cy.get('[data-testid="step-5-next-button"]').click(); cy.get('[data-testid="step-indicator-current-step-6-icon"]'); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-business.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-business.cy.ts index 1b67b32c9cf..7b3962d1591 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-business.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-business.cy.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../../../../helpers/file/upload-file'; import { businessAndOtherContactInfo, contactInfo, @@ -28,9 +29,10 @@ describe('File a petition - Step 6 Review & Submit Case', () => { contactInfo.placeOfLegalResidence, ); cy.get('[data-testid="contact-primary-phone"]').type(contactInfo.phone); - cy.get('[data-testid="corporate-disclosure-file"]').attachFile( - VALID_FILE, - ); + attachFile({ + filePath: VALID_FILE, + selector: '[data-testid="corporate-disclosure-file"]', + }); cy.get('[data-testid="step-1-next-button"]').click(); fillPetitionFileInformation(VALID_FILE); @@ -68,9 +70,10 @@ describe('File a petition - Step 6 Review & Submit Case', () => { contactInfo.placeOfLegalResidence, ); cy.get('[data-testid="contact-primary-phone"]').type(contactInfo.phone); - cy.get('[data-testid="corporate-disclosure-file"]').attachFile( - VALID_FILE, - ); + attachFile({ + filePath: VALID_FILE, + selector: '[data-testid="corporate-disclosure-file"]', + }); cy.get('[data-testid="step-1-next-button"]').click(); fillPetitionFileInformation(VALID_FILE); @@ -122,9 +125,10 @@ describe('File a petition - Step 6 Review & Submit Case', () => { contactInfo.placeOfLegalResidence, ); cy.get('[data-testid="contact-primary-phone"]').type(contactInfo.phone); - cy.get('[data-testid="corporate-disclosure-file"]').attachFile( - VALID_FILE, - ); + attachFile({ + filePath: VALID_FILE, + selector: '[data-testid="corporate-disclosure-file"]', + }); cy.get('[data-testid="step-1-next-button"]').click(); fillPetitionFileInformation(VALID_FILE); @@ -176,9 +180,10 @@ describe('File a petition - Step 6 Review & Submit Case', () => { contactInfo.placeOfLegalResidence, ); cy.get('[data-testid="contact-primary-phone"]').type(contactInfo.phone); - cy.get('[data-testid="corporate-disclosure-file"]').attachFile( - VALID_FILE, - ); + attachFile({ + filePath: VALID_FILE, + selector: '[data-testid="corporate-disclosure-file"]', + }); cy.get('[data-testid="step-1-next-button"]').click(); fillPetitionFileInformation(VALID_FILE); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts index 1c087953b8b..1be4d0b7337 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts @@ -1,3 +1,5 @@ +import { attachFile } from '../../../../helpers/file/upload-file'; + type TextFillType = { errorMessage: string; input: string; @@ -53,7 +55,7 @@ export function selectInput( export function fillPetitionFileInformation(filePath: string) { cy.get('[data-testid="upload-a-petition-label"').click(); - cy.get('#petition-file').attachFile(filePath); + attachFile({ filePath, selector: '#petition-file' }); cy.get('[data-testid="petition-redaction-acknowledgement-label"]').click(); cy.get('[data-testid="step-2-next-button"]').click(); } @@ -150,14 +152,17 @@ export function fillIrsNoticeInformation( caseType: string = 'Deficiency', ) { cy.get('[data-testid="irs-notice-Yes"]').click(); - cy.get('[data-testid="irs-notice-upload-0"]').attachFile(filePath); + attachFile({ filePath, selector: '[data-testid="irs-notice-upload-0"]' }); cy.get('[data-testid="case-type-select"]').select(caseType); cy.get('[data-testid="redaction-acknowledgement-label"]').click(); cy.get('[data-testid="step-3-next-button"]').click(); } export function fillIrsNotice(index: number, filePath: string) { - cy.get(`[data-testid="irs-notice-upload-${index}"]`).attachFile(filePath); + attachFile({ + filePath, + selector: `[data-testid="irs-notice-upload-${index}"]`, + }); cy.get('[data-testid="case-type-select"]').eq(index).select('Deficiency'); cy.get(`[data-testid="irs-notice-tax-year-${index}"]`).type( `Tax Year ${index}`, @@ -171,7 +176,7 @@ export function fillMultipleIRSNotices(filePath: string) { cy.get('[data-testid="irs-notice-Yes"]').click(); // IRS Notice #1 - cy.get('[data-testid="irs-notice-upload-0"]').attachFile(filePath); + attachFile({ filePath, selector: '[data-testid="irs-notice-upload-0"]' }); cy.get('[data-testid="case-type-select"]').select('Deficiency'); cy.get( '.usa-date-picker__wrapper > [data-testid="notice-issued-date-0-picker"]', @@ -182,7 +187,10 @@ export function fillMultipleIRSNotices(filePath: string) { cy.get('[data-testid="add-another-irs-notice-button"]').click(); // IRS Notice #2 - cy.get('[data-testid="irs-notice-upload-1"]').attachFile(filePath); + attachFile({ + filePath, + selector: '[data-testid="add-another-irs-notice-button"]', + }); cy.get('[data-testid="case-type-select"]').eq(1).select('CDP (Lien/Levy)'); cy.get( '.usa-date-picker__wrapper > [data-testid="notice-issued-date-1-picker"]', @@ -208,7 +216,7 @@ export function fillCaseProcedureInformation(procedureType = 'regular') { } export function fillStinInformation(filePath: string) { - cy.get('[data-testid="stin-file"]').attachFile(filePath); + attachFile({ filePath, selector: '[data-testid="stin-file"]' }); cy.get('[data-testid="step-5-next-button"]').click(); } From 44231afb0e0cf93143698ffebff7c19e0a540bf7 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Thu, 5 Sep 2024 10:51:31 -0400 Subject: [PATCH 08/65] 10001-design-debt: fix corrupted files tests, and use ^= for selector in attachFile; still need to fix some tests and add tests for non-pdf files and too-big files --- .../integration/advancedSearch/search.cy.ts | 1 - cypress/helpers/file/upload-file.ts | 6 ++- ...itioner-creates-electronic-case-updated.ts | 14 ++---- .../petitioner-creates-electronic-case.ts | 35 ++------------ .../file-a-petition-corupted-files.cy.ts | 48 +++++++++++-------- .../FileDocument/StateDrivenFileInput.tsx | 2 +- web-client/src/views/GenericErrorModal.tsx | 1 + 7 files changed, 40 insertions(+), 67 deletions(-) diff --git a/cypress/deployed-and-local/integration/advancedSearch/search.cy.ts b/cypress/deployed-and-local/integration/advancedSearch/search.cy.ts index 280166d3156..a331a2bd766 100644 --- a/cypress/deployed-and-local/integration/advancedSearch/search.cy.ts +++ b/cypress/deployed-and-local/integration/advancedSearch/search.cy.ts @@ -109,7 +109,6 @@ describe('Advanced Search', () => { filePath: '../../helpers/file/sample.pdf', selector: '[data-testid="primary-document-file"]', }); - cy.get('[data-testid="upload-file-success"]').should('exist'); cy.get('[data-testid="save-uploaded-pdf-button"]').click(); cy.get('[data-testid="add-court-issued-docket-entry-button"]').click(); cy.get( diff --git a/cypress/helpers/file/upload-file.ts b/cypress/helpers/file/upload-file.ts index 941ecd634b2..8ef06becb9d 100644 --- a/cypress/helpers/file/upload-file.ts +++ b/cypress/helpers/file/upload-file.ts @@ -15,12 +15,16 @@ export function uploadFile(testId: string) { } export function attachFile({ + awaitSuccess = true, filePath, selector, }: { selector: string; filePath: string; + awaitSuccess?: boolean; }) { cy.get(selector).attachFile(filePath); - cy.get('[data-testid="upload-file-success"]').should('exist'); + if (awaitSuccess) { + cy.get('[data-testid^="upload-file-success"]').should('exist'); + } } diff --git a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts index 0b8b0b5b766..5483f786d93 100644 --- a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts +++ b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts @@ -126,20 +126,12 @@ export function petitionerAttemptsToUploadCorruptPdfUpdated() { cy.get('[data-testid="step-4-next-button"]').click(); attachFile({ + awaitSuccess: false, filePath: '../../helpers/file/corrupt-pdf.pdf', selector: '[data-testid="stin-file"]', }); - cy.get('[data-testid="step-5-next-button"]').click(); - - cy.get('[data-testid="atp-preview-button"]').should('exist'); - cy.get('[data-testid="stin-preview-button"]').should('exist'); - - cy.get('[data-testid="step-6-next-button"]').click(); - - cy.get('[data-testid="modal-dialog"]').should('exist'); - cy.get('[data-testid="modal-dialog-header"]').should( - 'contain.text', - 'Your Request Was Not Completed', + cy.get('[data-testid="error-modal"]').contains( + 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.', ); } diff --git a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts index f1359894c68..706c136cbef 100644 --- a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts +++ b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts @@ -295,40 +295,11 @@ export function petitionerAttemptsToUploadCorruptPdfOld() { cy.get('[data-testid="file-a-petition"]').click(); cy.get('[data-testid="go-to-step-1"]').click(); attachFile({ + awaitSuccess: false, filePath: '../../helpers/file/corrupt-pdf.pdf', selector: '[data-testid="stin-file"]', }); - cy.get('[data-testid="complete-step-1"]').click(); - uploadFile('petition-file'); - cy.get('[data-testid="irs-notice-Yes"]').click(); - cy.get('[data-testid="case-type-select"]').select('Notice of Deficiency'); - uploadFile('atp-file-upload'); - - cy.get('[data-testid="complete-step-2"]').click(); - cy.get('[data-testid="filing-type-0"]').click(); - - cy.get('[data-testid="contact-primary-name"]').type('John'); - cy.get('[data-testid="contactPrimary.address1"]').type('111 South West St.'); - cy.get('[data-testid="contactPrimary.city"]').type('Orlando'); - cy.get('[data-testid="contactPrimary.state"]').select('AL'); - cy.get('[data-testid="contactPrimary.postalCode"]').type('12345'); - cy.get('[data-testid="phone"]').type('1111111111'); - - cy.get('[data-testid="complete-step-3"]').click(); - cy.get('[data-testid="procedure-type-1"]').click(); - cy.get('[data-testid="procedure-type-0"]').click(); - cy.get('[data-testid="preferred-trial-city"]').select('Mobile, Alabama'); - cy.get('[data-testid="complete-step-4"]').click(); - - cy.get('[data-testid="stin-preview-button"]').should('exist'); - cy.get('[data-testid="petition-preview-button"]').should('exist'); - cy.get('[data-testid="atp-preview-button"]').should('exist'); - - cy.get('[data-testid="file-petition"]').click(); - - cy.get('[data-testid="modal-dialog"]').should('exist'); - cy.get('[data-testid="modal-dialog-header"]').should( - 'contain.text', - 'Your Request Was Not Completed', + cy.get('[data-testid="error-modal"]').contains( + 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.', ); } diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-corupted-files.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-corupted-files.cy.ts index 4952fe0d63a..e01bc5c50cf 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-corupted-files.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-corupted-files.cy.ts @@ -1,3 +1,4 @@ +import { attachFile } from '../../../../helpers/file/upload-file'; import { fillCaseProcedureInformation, fillIrsNoticeInformation, @@ -19,16 +20,15 @@ describe('File a petition - Corrupted Files', () => { it('should display modal when a corrupted file is being used for petition', () => { fillPetitionerInformation(); - fillPetitionFileInformation(CORRUPTED_FILE); - - fillIrsNoticeInformation(VALID_FILE); - - fillCaseProcedureInformation(); - - fillStinInformation(VALID_FILE); - - cy.get('[data-testid="step-6-next-button"]').click(); - cy.get('[data-testid="file-upload-error-modal"]').should('exist'); + cy.get('[data-testid="upload-a-petition-label"').click(); + attachFile({ + awaitSuccess: false, + filePath: CORRUPTED_FILE, + selector: '#petition-file', + }); + cy.get('[data-testid="error-modal"]').contains( + 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.', + ); }); it('should display modal when a corrupted file is being used for IRS notice', () => { @@ -36,14 +36,15 @@ describe('File a petition - Corrupted Files', () => { fillPetitionFileInformation(VALID_FILE); - fillIrsNoticeInformation(CORRUPTED_FILE); - - fillCaseProcedureInformation(); - - fillStinInformation(VALID_FILE); - - cy.get('[data-testid="step-6-next-button"]').click(); - cy.get('[data-testid="file-upload-error-modal"]').should('exist'); + cy.get('[data-testid="irs-notice-Yes"]').click(); + attachFile({ + awaitSuccess: false, + filePath: CORRUPTED_FILE, + selector: '[data-testid="irs-notice-upload-0"]', + }); + cy.get('[data-testid="error-modal"]').contains( + 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.', + ); }); it('should display modal when a corrupted file is being used for STIN', () => { @@ -55,10 +56,15 @@ describe('File a petition - Corrupted Files', () => { fillCaseProcedureInformation(); - fillStinInformation(CORRUPTED_FILE); + attachFile({ + awaitSuccess: false, + filePath: CORRUPTED_FILE, + selector: '[data-testid="stin-file"]', + }); - cy.get('[data-testid="step-6-next-button"]').click(); - cy.get('[data-testid="file-upload-error-modal"]').should('exist'); + cy.get('[data-testid="error-modal"]').contains( + 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.', + ); }); it('should successfully file a petition when all PDF being uploaded are valid', () => { diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index 6b8c44b4eed..9ec19690812 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -111,7 +111,7 @@ export const StateDrivenFileInput = connect<
diff --git a/web-client/src/views/GenericErrorModal.tsx b/web-client/src/views/GenericErrorModal.tsx index 2f74da3cc68..dd01f14cb0d 100644 --- a/web-client/src/views/GenericErrorModal.tsx +++ b/web-client/src/views/GenericErrorModal.tsx @@ -17,6 +17,7 @@ export const GenericErrorModal = connect( closeLink={false} confirmLabel="Close" confirmSequence={clearModalSequence} + dataTestId="error-modal" title={modalTitle || 'An error occured'} > {message || 'Something went wrong, please try again later.'} From d2645349150116a0ead702350b1a35dfea1bae49 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Thu, 5 Sep 2024 15:49:25 -0400 Subject: [PATCH 09/65] 10001-design-debt: fix uploadFile --- cypress/helpers/file/upload-file.ts | 2 +- .../petitioner-creates-electronic-case-updated.ts | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/cypress/helpers/file/upload-file.ts b/cypress/helpers/file/upload-file.ts index 8ef06becb9d..868aaf0c55b 100644 --- a/cypress/helpers/file/upload-file.ts +++ b/cypress/helpers/file/upload-file.ts @@ -11,7 +11,7 @@ export function uploadFile(testId: string) { cy.get(`[data-testid="${testId}"]`).attachFile( '../../helpers/file/sample.pdf', ); - cy.get('[data-testid="upload-file-success"]').should('exist'); + cy.get('[data-testid^="upload-file-success"]').should('exist'); } export function attachFile({ diff --git a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts index 5483f786d93..66725094f7c 100644 --- a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts +++ b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts @@ -1,5 +1,4 @@ -import { attachFile } from '../file/upload-file'; -import { uploadFile } from '../file/upload-file'; +import { attachFile, uploadFile } from '../file/upload-file'; export function petitionerCreatesElectronicCaseUpdated( primaryFilerName = 'John', From f268df656046106ea2ef620fd0eb780c82bed70d Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Thu, 5 Sep 2024 17:32:26 -0400 Subject: [PATCH 10/65] 10455-story: adding validation to ScanBatchPreview uploader and updating tests --- .../create-and-serve-paper-filing.ts | 1 + cypress/helpers/file/upload-file.ts | 8 +-- ...ve-paper-petition-petitioner-and-spouse.ts | 2 + .../create-and-serve-paper-petition.ts | 9 +++ ...itioner-creates-electronic-case-updated.ts | 1 - .../petitioner-creates-electronic-case.ts | 1 - .../support/pages/create-paper-petition.ts | 4 ++ .../local-only/support/pages/document-qc.ts | 1 + .../caseDetail/consolidated-case.cy.ts | 1 + .../courtIssuedFiling/stamp-order.cy.ts | 1 + .../electronicFiling/file-an-answer.cy.ts | 1 + .../petitioner-files-external-document.cy.ts | 1 + ...ner-files-motion-to-stay-proceedings.cy.ts | 2 + .../docket-clerk-qcs-paper-filing.cy.ts | 1 + .../fileAPetition/file-a-petition.cy.ts | 2 + .../file-a-petition-corupted-files.cy.ts | 3 - ...etition-step-1-business--corporation.cy.ts | 4 ++ ...rship-other-than-tax-matters-partner.cy.ts | 4 ++ ...partnership-representative-under-BBA.cy.ts | 4 ++ ...ess--partnership-tax-matters-partner.cy.ts | 4 ++ .../file-a-petition-step-2.cy.ts | 2 + .../file-a-petition-step-3.cy.ts | 1 + .../file-a-petition-step-5.cy.ts | 1 + ...tion-step-6-petitioner-info-business.cy.ts | 4 ++ .../fileAPetitionUpdated/petition-helper.ts | 26 ++++++-- .../FileDocument/StateDrivenFileInput.tsx | 60 +++++++++---------- .../FileHandlingHelpers/fileValidation.ts | 39 ++++++++++++ web-client/src/views/ScanBatchPreviewer.tsx | 32 ++++++---- 28 files changed, 163 insertions(+), 57 deletions(-) diff --git a/cypress/helpers/caseDetail/docketRecord/paperFiling/create-and-serve-paper-filing.ts b/cypress/helpers/caseDetail/docketRecord/paperFiling/create-and-serve-paper-filing.ts index b7928cb0f5c..fcc597f8b5d 100644 --- a/cypress/helpers/caseDetail/docketRecord/paperFiling/create-and-serve-paper-filing.ts +++ b/cypress/helpers/caseDetail/docketRecord/paperFiling/create-and-serve-paper-filing.ts @@ -18,6 +18,7 @@ export function createAndServePaperFiling( attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#primaryDocumentFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="save-and-serve"]').click(); diff --git a/cypress/helpers/file/upload-file.ts b/cypress/helpers/file/upload-file.ts index 868aaf0c55b..8c295be39bd 100644 --- a/cypress/helpers/file/upload-file.ts +++ b/cypress/helpers/file/upload-file.ts @@ -15,16 +15,16 @@ export function uploadFile(testId: string) { } export function attachFile({ - awaitSuccess = true, filePath, selector, + selectorToAwaitOnSuccess = '[data-testid^="upload-file-success"]', }: { selector: string; filePath: string; - awaitSuccess?: boolean; + selectorToAwaitOnSuccess?: string; }) { cy.get(selector).attachFile(filePath); - if (awaitSuccess) { - cy.get('[data-testid^="upload-file-success"]').should('exist'); + if (selectorToAwaitOnSuccess) { + cy.get(selectorToAwaitOnSuccess).should('exist'); } } diff --git a/cypress/helpers/fileAPetition/create-and-serve-paper-petition-petitioner-and-spouse.ts b/cypress/helpers/fileAPetition/create-and-serve-paper-petition-petitioner-and-spouse.ts index aee052d8525..0fcdb8e31d4 100644 --- a/cypress/helpers/fileAPetition/create-and-serve-paper-petition-petitioner-and-spouse.ts +++ b/cypress/helpers/fileAPetition/create-and-serve-paper-petition-petitioner-and-spouse.ts @@ -62,6 +62,7 @@ export function createAndServePaperPetitionMultipleParties( attachFile({ filePath: '../../helpers/file/sample.pdf', selector: '#petitionFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('#tabButton-requestForPlaceOfTrialFile > .button-text').click(); cy.get('#scan-mode-radios').click(); @@ -70,6 +71,7 @@ export function createAndServePaperPetitionMultipleParties( attachFile({ filePath: '../../helpers/file/sample.pdf', selector: '#requestForPlaceOfTrialFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="submit-paper-petition"]').click(); return cy diff --git a/cypress/helpers/fileAPetition/create-and-serve-paper-petition.ts b/cypress/helpers/fileAPetition/create-and-serve-paper-petition.ts index 82ce1e472eb..250303b6757 100644 --- a/cypress/helpers/fileAPetition/create-and-serve-paper-petition.ts +++ b/cypress/helpers/fileAPetition/create-and-serve-paper-petition.ts @@ -47,6 +47,7 @@ export function createAndServePaperPetition( attachFile({ filePath: '../../helpers/file/sample.pdf', selector: '#petitionFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('#tabButton-requestForPlaceOfTrialFile > .button-text').click(); cy.get('#scan-mode-radios').click(); @@ -55,6 +56,7 @@ export function createAndServePaperPetition( attachFile({ filePath: '../../helpers/file/sample.pdf', selector: '#requestForPlaceOfTrialFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="tabButton-stinFile"]').click(); @@ -62,6 +64,7 @@ export function createAndServePaperPetition( attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#stinFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="tabButton-attachmentToPetitionFile"]').click(); @@ -69,6 +72,7 @@ export function createAndServePaperPetition( attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#attachmentToPetitionFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="remove-pdf"]'); @@ -77,6 +81,7 @@ export function createAndServePaperPetition( attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#corporateDisclosureFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get( @@ -86,6 +91,7 @@ export function createAndServePaperPetition( attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#applicationForWaiverOfFilingFeeFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="submit-paper-petition"]').click(); @@ -191,6 +197,7 @@ export function createAndServePaperPetitionMyselfAndSpouse() { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: '#petitionFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('#tabButton-requestForPlaceOfTrialFile > .button-text').click(); @@ -198,6 +205,7 @@ export function createAndServePaperPetitionMyselfAndSpouse() { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: '#requestForPlaceOfTrialFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="tabButton-stinFile"]').click(); @@ -205,6 +213,7 @@ export function createAndServePaperPetitionMyselfAndSpouse() { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#stinFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="submit-paper-petition"]').click(); diff --git a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts index 66725094f7c..f66e02170af 100644 --- a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts +++ b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts @@ -125,7 +125,6 @@ export function petitionerAttemptsToUploadCorruptPdfUpdated() { cy.get('[data-testid="step-4-next-button"]').click(); attachFile({ - awaitSuccess: false, filePath: '../../helpers/file/corrupt-pdf.pdf', selector: '[data-testid="stin-file"]', }); diff --git a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts index 706c136cbef..16b9646edc1 100644 --- a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts +++ b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts @@ -295,7 +295,6 @@ export function petitionerAttemptsToUploadCorruptPdfOld() { cy.get('[data-testid="file-a-petition"]').click(); cy.get('[data-testid="go-to-step-1"]').click(); attachFile({ - awaitSuccess: false, filePath: '../../helpers/file/corrupt-pdf.pdf', selector: '[data-testid="stin-file"]', }); diff --git a/cypress/local-only/support/pages/create-paper-petition.ts b/cypress/local-only/support/pages/create-paper-petition.ts index ad4a66df641..df271491182 100644 --- a/cypress/local-only/support/pages/create-paper-petition.ts +++ b/cypress/local-only/support/pages/create-paper-petition.ts @@ -92,6 +92,7 @@ export const fillInCreateCaseFromPaperForm = (testData?: { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#petitionFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="remove-pdf"]'); @@ -101,6 +102,7 @@ export const fillInCreateCaseFromPaperForm = (testData?: { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#stinFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="remove-pdf"]'); @@ -110,6 +112,7 @@ export const fillInCreateCaseFromPaperForm = (testData?: { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#requestForPlaceOfTrialFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="remove-pdf"]'); cy.get('[data-testid="icon-requestForPlaceOfTrialFile"]').should( @@ -122,6 +125,7 @@ export const fillInCreateCaseFromPaperForm = (testData?: { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#attachmentToPetitionFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="remove-pdf"]'); diff --git a/cypress/local-only/support/pages/document-qc.ts b/cypress/local-only/support/pages/document-qc.ts index 2c5c88916a8..efae22ac5d1 100644 --- a/cypress/local-only/support/pages/document-qc.ts +++ b/cypress/local-only/support/pages/document-qc.ts @@ -57,6 +57,7 @@ export const uploadCourtIssuedDocumentAndEditViaDocumentQC = () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#primary-document-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="upload-file-success"]'); cy.get('#save-uploaded-pdf-button').click(); diff --git a/cypress/local-only/tests/integration/caseDetail/consolidated-case.cy.ts b/cypress/local-only/tests/integration/caseDetail/consolidated-case.cy.ts index 82d1a756587..9908ebfe7bd 100644 --- a/cypress/local-only/tests/integration/caseDetail/consolidated-case.cy.ts +++ b/cypress/local-only/tests/integration/caseDetail/consolidated-case.cy.ts @@ -57,6 +57,7 @@ describe('Docket clerk views consolidated case', function () { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#primaryDocumentFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="remove-pdf"]'); cy.get('button#upload-correspondence').click(); diff --git a/cypress/local-only/tests/integration/caseDetail/docketRecord/courtIssuedFiling/stamp-order.cy.ts b/cypress/local-only/tests/integration/caseDetail/docketRecord/courtIssuedFiling/stamp-order.cy.ts index 1ccad23a47a..b3bf926575e 100644 --- a/cypress/local-only/tests/integration/caseDetail/docketRecord/courtIssuedFiling/stamp-order.cy.ts +++ b/cypress/local-only/tests/integration/caseDetail/docketRecord/courtIssuedFiling/stamp-order.cy.ts @@ -24,6 +24,7 @@ describe('Judge`s chambers stamps an order', () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#primaryDocumentFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="remove-pdf"]'); cy.get('[data-testid="save-and-serve"]').click(); diff --git a/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/file-an-answer.cy.ts b/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/file-an-answer.cy.ts index 9d3c1f7b822..4653549a68c 100644 --- a/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/file-an-answer.cy.ts +++ b/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/file-an-answer.cy.ts @@ -22,6 +22,7 @@ describe('Filing an Answer', function () { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: '#primary-document', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('label#primary-document-label').should('have.class', 'validated'); }); diff --git a/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-external-document.cy.ts b/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-external-document.cy.ts index 90ac7de836a..8f91f40f558 100644 --- a/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-external-document.cy.ts +++ b/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-external-document.cy.ts @@ -26,6 +26,7 @@ describe( attachFile({ filePath: '../../helpers/file/sample.pdf', selector: '[data-testid="primary-document"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('[data-testid=primaryDocument-objections-No]').click(); cy.get('#submit-document').click(); diff --git a/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-motion-to-stay-proceedings.cy.ts b/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-motion-to-stay-proceedings.cy.ts index 62fc7f6a8a5..46c5ebeb4d5 100644 --- a/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-motion-to-stay-proceedings.cy.ts +++ b/cypress/local-only/tests/integration/caseDetail/docketRecord/electronicFiling/petitioner-files-motion-to-stay-proceedings.cy.ts @@ -52,6 +52,7 @@ describe('Private Practitioner requests to represent a party to a case', () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#primaryDocumentFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="save-for-later"]').click(); @@ -100,6 +101,7 @@ describe('Petitioner files motion to lift stay of proceedings', () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: '[data-testid="primary-document"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('[data-testid=primaryDocument-objections-No]').click(); cy.get('#submit-document').click(); diff --git a/cypress/local-only/tests/integration/documentQC/docket-clerk-qcs-paper-filing.cy.ts b/cypress/local-only/tests/integration/documentQC/docket-clerk-qcs-paper-filing.cy.ts index 070ff0c07bb..4d2e116e547 100644 --- a/cypress/local-only/tests/integration/documentQC/docket-clerk-qcs-paper-filing.cy.ts +++ b/cypress/local-only/tests/integration/documentQC/docket-clerk-qcs-paper-filing.cy.ts @@ -59,6 +59,7 @@ describe('Docket clerk QC-ing a paper filing', () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#primaryDocumentFile-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="save-for-later"]').click(); diff --git a/cypress/local-only/tests/integration/fileAPetition/file-a-petition.cy.ts b/cypress/local-only/tests/integration/fileAPetition/file-a-petition.cy.ts index 1a841427cac..6d4fc9fb84b 100644 --- a/cypress/local-only/tests/integration/fileAPetition/file-a-petition.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetition/file-a-petition.cy.ts @@ -62,6 +62,7 @@ describe('File a Petition', () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#stin-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('label#stin-file-label').should('have.class', 'validated'); }); @@ -82,6 +83,7 @@ describe('File a Petition', () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#petition-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('label#petition-file-label').should('have.class', 'validated'); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-corupted-files.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-corupted-files.cy.ts index e01bc5c50cf..97062fddf24 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-corupted-files.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-corupted-files.cy.ts @@ -22,7 +22,6 @@ describe('File a petition - Corrupted Files', () => { cy.get('[data-testid="upload-a-petition-label"').click(); attachFile({ - awaitSuccess: false, filePath: CORRUPTED_FILE, selector: '#petition-file', }); @@ -38,7 +37,6 @@ describe('File a petition - Corrupted Files', () => { cy.get('[data-testid="irs-notice-Yes"]').click(); attachFile({ - awaitSuccess: false, filePath: CORRUPTED_FILE, selector: '[data-testid="irs-notice-upload-0"]', }); @@ -57,7 +55,6 @@ describe('File a petition - Corrupted Files', () => { fillCaseProcedureInformation(); attachFile({ - awaitSuccess: false, filePath: CORRUPTED_FILE, selector: '[data-testid="stin-file"]', }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts index ee16d8d8c5b..18643286a1e 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts @@ -126,6 +126,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); @@ -190,6 +191,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); @@ -285,6 +287,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); @@ -349,6 +352,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts index 0e3d0f3feb1..45a1239fdba 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts @@ -135,6 +135,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); @@ -206,6 +207,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); @@ -310,6 +312,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); @@ -381,6 +384,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts index 7297ff68c47..9fc79234b9b 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts @@ -132,6 +132,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); @@ -201,6 +202,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); @@ -302,6 +304,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); @@ -371,6 +374,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts index a5a755b4ccb..c33f24712af 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts @@ -132,6 +132,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); @@ -201,6 +202,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); @@ -302,6 +304,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); @@ -372,6 +375,7 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-2.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-2.cy.ts index 38b3c21e412..2fbd894ad9c 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-2.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-2.cy.ts @@ -152,6 +152,7 @@ describe('File a petition', () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: '#petition-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="petition-error-message-0"]').should( @@ -163,6 +164,7 @@ describe('File a petition', () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: '#petition-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); cy.get('[data-testid="petition-error-message-0"]').should( diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-3.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-3.cy.ts index dd27a0ba0eb..01536bdc33a 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-3.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-3.cy.ts @@ -38,6 +38,7 @@ describe('File a petition - Step 3 IRS Notices', () => { attachFile({ filePath: VALID_FILE, selector: '[data-testid="irs-notice-upload-0"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('[data-testid="step-3-next-button"]').should('exist'); cy.get('[data-testid="step-3-next-button"]').should('be.disabled'); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-5.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-5.cy.ts index 144c33a68a0..de1d2f03cd7 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-5.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-5.cy.ts @@ -31,6 +31,7 @@ describe('File a petition - Step 5 Statement of Taxpayer Identification Number', attachFile({ filePath: VALID_FILE, selector: '[data-testid="stin-file"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('[data-testid="step-5-next-button"]').click(); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-business.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-business.cy.ts index 7b3962d1591..361d63af57c 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-business.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-business.cy.ts @@ -32,6 +32,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { attachFile({ filePath: VALID_FILE, selector: '[data-testid="corporate-disclosure-file"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('[data-testid="step-1-next-button"]').click(); @@ -73,6 +74,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { attachFile({ filePath: VALID_FILE, selector: '[data-testid="corporate-disclosure-file"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('[data-testid="step-1-next-button"]').click(); @@ -128,6 +130,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { attachFile({ filePath: VALID_FILE, selector: '[data-testid="corporate-disclosure-file"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('[data-testid="step-1-next-button"]').click(); @@ -183,6 +186,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { attachFile({ filePath: VALID_FILE, selector: '[data-testid="corporate-disclosure-file"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('[data-testid="step-1-next-button"]').click(); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts index 1be4d0b7337..22df1b0c0f6 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts @@ -55,7 +55,11 @@ export function selectInput( export function fillPetitionFileInformation(filePath: string) { cy.get('[data-testid="upload-a-petition-label"').click(); - attachFile({ filePath, selector: '#petition-file' }); + attachFile({ + filePath, + selector: '#petition-file', + selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + }); cy.get('[data-testid="petition-redaction-acknowledgement-label"]').click(); cy.get('[data-testid="step-2-next-button"]').click(); } @@ -152,7 +156,11 @@ export function fillIrsNoticeInformation( caseType: string = 'Deficiency', ) { cy.get('[data-testid="irs-notice-Yes"]').click(); - attachFile({ filePath, selector: '[data-testid="irs-notice-upload-0"]' }); + attachFile({ + filePath, + selector: '[data-testid="irs-notice-upload-0"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', + }); cy.get('[data-testid="case-type-select"]').select(caseType); cy.get('[data-testid="redaction-acknowledgement-label"]').click(); cy.get('[data-testid="step-3-next-button"]').click(); @@ -162,6 +170,7 @@ export function fillIrsNotice(index: number, filePath: string) { attachFile({ filePath, selector: `[data-testid="irs-notice-upload-${index}"]`, + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('[data-testid="case-type-select"]').eq(index).select('Deficiency'); cy.get(`[data-testid="irs-notice-tax-year-${index}"]`).type( @@ -176,7 +185,11 @@ export function fillMultipleIRSNotices(filePath: string) { cy.get('[data-testid="irs-notice-Yes"]').click(); // IRS Notice #1 - attachFile({ filePath, selector: '[data-testid="irs-notice-upload-0"]' }); + attachFile({ + filePath, + selector: '[data-testid="irs-notice-upload-0"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', + }); cy.get('[data-testid="case-type-select"]').select('Deficiency'); cy.get( '.usa-date-picker__wrapper > [data-testid="notice-issued-date-0-picker"]', @@ -190,6 +203,7 @@ export function fillMultipleIRSNotices(filePath: string) { attachFile({ filePath, selector: '[data-testid="add-another-irs-notice-button"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('[data-testid="case-type-select"]').eq(1).select('CDP (Lien/Levy)'); cy.get( @@ -216,7 +230,11 @@ export function fillCaseProcedureInformation(procedureType = 'regular') { } export function fillStinInformation(filePath: string) { - attachFile({ filePath, selector: '[data-testid="stin-file"]' }); + attachFile({ + filePath, + selector: '[data-testid="stin-file"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', + }); cy.get('[data-testid="step-5-next-button"]').click(); } diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index 9ec19690812..6711ff21dc5 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -5,7 +5,7 @@ import { connect } from '@web-client/presenter/shared.cerebral'; import { props } from 'cerebral'; import { sequences } from '@web-client/presenter/app.cerebral'; import { state } from '@web-client/presenter/app.cerebral'; -import { validateFile } from '@web-client/views/FileHandlingHelpers/fileValidation'; +import { validateFileOnSelect } from '@web-client/views/FileHandlingHelpers/fileValidation'; import React from 'react'; type StateDriveFileInputProps = { @@ -50,40 +50,36 @@ export const StateDrivenFileInput = connect< const fileOnForm = file || form[fileInputName] || form.existingFileName; - const onFileSelectionChange = async e => { - const { name: inputName } = e.target; - const selectedFile = e.target.files[0]; - const { errorMessage, isValid } = await validateFile({ + const onFileSelectionChange = async ( + e: React.ChangeEvent, + ) => { + await validateFileOnSelect({ allowedFileExtensions: accept.split(','), - file: selectedFile, + e, megabyteLimit: constants.MAX_FILE_SIZE_MB, + onError: showErrorModalSequence, + onSuccess: () => { + const { name: inputName } = e.target; + const selectedFile = e.target.files[0]; + cloneFile(selectedFile) + .then(clonedFile => { + updateFormValueSequence({ + key: inputName, + property: 'file', + value: clonedFile, + }); + updateFormValueSequence({ + key: ignoreSizeKey ? inputName : `${inputName}Size`, + property: 'size', + value: clonedFile.size, + }); + return validationSequence ? validationSequence() : null; + }) + .catch(() => { + /* no-op */ + }); + }, }); - if (!isValid) { - showErrorModalSequence({ - errorToLog: errorMessage, - message: errorMessage!, - title: 'File Upload Error', - }); - e.target.value = null; - return; - } - cloneFile(selectedFile) - .then(clonedFile => { - updateFormValueSequence({ - key: inputName, - property: 'file', - value: clonedFile, - }); - updateFormValueSequence({ - key: ignoreSizeKey ? inputName : `${inputName}Size`, - property: 'size', - value: clonedFile.size, - }); - return validationSequence ? validationSequence() : null; - }) - .catch(() => { - /* no-op */ - }); }; return ( diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.ts index a2c71b4b1d2..6b49d79fa28 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.ts @@ -51,6 +51,45 @@ const validateCorrectFileType = ({ return { isValid: true }; }; +export const validateFileOnSelect = async ({ + allowedFileExtensions, + e, + megabyteLimit, + onError, + onSuccess, +}: { + allowedFileExtensions: string[]; + e: any; + megabyteLimit: number; + onSuccess: () => void; + onError: ({ + errorToLog, + message, + title, + }: { + errorToLog: string; + message: string; + title: string; + }) => void; +}) => { + const selectedFile = e.target.files[0]; + const { errorMessage, isValid } = await validateFile({ + allowedFileExtensions, + file: selectedFile, + megabyteLimit, + }); + if (!isValid) { + onError({ + errorToLog: errorMessage!, + message: errorMessage!, + title: 'File Upload Error', + }); + e.target.value = null; + return; + } + onSuccess(); +}; + export const validateFile = async ({ allowedFileExtensions, file, diff --git a/web-client/src/views/ScanBatchPreviewer.tsx b/web-client/src/views/ScanBatchPreviewer.tsx index 231dc88cc7d..8d75fede456 100644 --- a/web-client/src/views/ScanBatchPreviewer.tsx +++ b/web-client/src/views/ScanBatchPreviewer.tsx @@ -14,9 +14,9 @@ import { PreviewControls } from './PreviewControls'; import { SelectScannerSourceModal } from './ScanBatchPreviewer/SelectScannerSourceModal'; import { Tab, Tabs } from '../ustc-ui/Tabs/Tabs'; import { connect } from '@web-client/presenter/shared.cerebral'; -import { limitFileSize } from './FileHandlingHelpers/limitFileSize'; import { sequences } from '@web-client/presenter/app.cerebral'; import { state } from '@web-client/presenter/app.cerebral'; +import { validateFileOnSelect } from '@web-client/views/FileHandlingHelpers/fileValidation'; import React, { useEffect, useRef } from 'react'; import classNames from 'classnames'; @@ -43,6 +43,7 @@ export const ScanBatchPreviewer = connect( setDocumentForUploadSequence: sequences.setDocumentForUploadSequence, setDocumentUploadModeSequence: sequences.setDocumentUploadModeSequence, setSelectedBatchIndexSequence: sequences.setSelectedBatchIndexSequence, + showErrorModalSequence: sequences.showErrorModalSequence, showModal: state.modal.showModal, startScanSequence: sequences.startScanSequence, validationErrors: state.validationErrors, @@ -66,6 +67,7 @@ export const ScanBatchPreviewer = connect( setDocumentForUploadSequence, setDocumentUploadModeSequence, setSelectedBatchIndexSequence, + showErrorModalSequence, showModal, startScanSequence, title, @@ -407,18 +409,24 @@ export const ScanBatchPreviewer = connect( id={`${documentType}-file`} name={documentType} type="file" - onChange={e => { + onChange={async e => { e.preventDefault(); - limitFileSize(e, constants.MAX_FILE_SIZE_MB, () => { - const file = e.target.files[0]; - setDocumentForUploadSequence({ - documentType, - documentUploadMode: 'preview', - file, - }); - if (validateSequence) { - validateSequence(); - } + await validateFileOnSelect({ + allowedFileExtensions: ['.pdf'], + e, + megabyteLimit: constants.MAX_FILE_SIZE_MB, + onError: showErrorModalSequence, + onSuccess: () => { + const file = e.target.files[0]; + setDocumentForUploadSequence({ + documentType, + documentUploadMode: 'preview', + file, + }); + if (validateSequence) { + validateSequence(); + } + }, }); }} /> From 38a4791f9be55b6f8c60bf3817f8ec98709486fd Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Thu, 5 Sep 2024 17:48:06 -0400 Subject: [PATCH 11/65] 10001-design-debt: remove unintentional default argument --- cypress/helpers/file/upload-file.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress/helpers/file/upload-file.ts b/cypress/helpers/file/upload-file.ts index 8c295be39bd..65f065571fd 100644 --- a/cypress/helpers/file/upload-file.ts +++ b/cypress/helpers/file/upload-file.ts @@ -17,7 +17,7 @@ export function uploadFile(testId: string) { export function attachFile({ filePath, selector, - selectorToAwaitOnSuccess = '[data-testid^="upload-file-success"]', + selectorToAwaitOnSuccess, }: { selector: string; filePath: string; From 5c57536e2811fcfcf28a662bc57d6f38cd4e710f Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Thu, 5 Sep 2024 18:01:26 -0400 Subject: [PATCH 12/65] 10001-design-debt: more test fixes --- .../file-a-petition-step-1-business--corporation.cy.ts | 6 ++++-- ...siness--partnership-other-than-tax-matters-partner.cy.ts | 6 ++++-- ...p-1-business--partnership-representative-under-BBA.cy.ts | 6 ++++-- ...n-step-1-business--partnership-tax-matters-partner.cy.ts | 6 ++++-- .../fileAPetitionUpdated/file-a-petition-step-2.cy.ts | 4 ++-- .../integration/fileAPetitionUpdated/petition-helper.ts | 2 +- 6 files changed, 19 insertions(+), 11 deletions(-) diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts index 18643286a1e..9fb18c33290 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts @@ -191,7 +191,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); @@ -352,7 +353,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts index 45a1239fdba..c3c42239b2b 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts @@ -207,7 +207,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); @@ -384,7 +385,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts index 9fc79234b9b..79245c024d9 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts @@ -202,7 +202,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); @@ -374,7 +375,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts index c33f24712af..7e21c150846 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts @@ -202,7 +202,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); @@ -375,7 +376,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-2.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-2.cy.ts index 2fbd894ad9c..fe8aca20174 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-2.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-2.cy.ts @@ -152,7 +152,7 @@ describe('File a petition', () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: '#petition-file', - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('[data-testid="petition-error-message-0"]').should( @@ -164,7 +164,7 @@ describe('File a petition', () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: '#petition-file', - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('[data-testid="petition-error-message-0"]').should( diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts index 22df1b0c0f6..dfe877cbd01 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts @@ -58,7 +58,7 @@ export function fillPetitionFileInformation(filePath: string) { attachFile({ filePath, selector: '#petition-file', - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('[data-testid="petition-redaction-acknowledgement-label"]').click(); cy.get('[data-testid="step-2-next-button"]').click(); From 217f957fd2b4286cba28f485adf206ec19c5a6e2 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Thu, 5 Sep 2024 18:13:58 -0400 Subject: [PATCH 13/65] 10001-design-debt: more test fixes, again --- .../tests/integration/fileAPetition/file-a-petition.cy.ts | 4 ++-- .../file-a-petition-step-1-business--corporation.cy.ts | 6 ++++-- ...siness--partnership-other-than-tax-matters-partner.cy.ts | 6 ++++-- ...p-1-business--partnership-representative-under-BBA.cy.ts | 3 ++- ...n-step-1-business--partnership-tax-matters-partner.cy.ts | 6 ++++-- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/cypress/local-only/tests/integration/fileAPetition/file-a-petition.cy.ts b/cypress/local-only/tests/integration/fileAPetition/file-a-petition.cy.ts index 6d4fc9fb84b..13767df1a9b 100644 --- a/cypress/local-only/tests/integration/fileAPetition/file-a-petition.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetition/file-a-petition.cy.ts @@ -62,7 +62,7 @@ describe('File a Petition', () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#stin-file', - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('label#stin-file-label').should('have.class', 'validated'); }); @@ -83,7 +83,7 @@ describe('File a Petition', () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#petition-file', - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('label#petition-file-label').should('have.class', 'validated'); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts index 9fb18c33290..e4f98b1d63e 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--corporation.cy.ts @@ -126,7 +126,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); @@ -288,7 +289,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts index c3c42239b2b..021cc837330 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-other-than-tax-matters-partner.cy.ts @@ -135,7 +135,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); @@ -313,7 +314,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts index 79245c024d9..8ed13069882 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts @@ -132,7 +132,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts index 7e21c150846..eefa9b304cb 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-tax-matters-partner.cy.ts @@ -132,7 +132,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); @@ -305,7 +306,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); From 0fff8ca3ee1545dc6683df5f39db13454697f3ad Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Thu, 5 Sep 2024 18:27:09 -0400 Subject: [PATCH 14/65] 10001-design-debt: more error fixes --- cypress/local-only/support/pages/document-qc.ts | 3 +-- cypress/local-only/support/pages/start-a-case.ts | 2 +- ...step-1-business--partnership-representative-under-BBA.cy.ts | 3 ++- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cypress/local-only/support/pages/document-qc.ts b/cypress/local-only/support/pages/document-qc.ts index efae22ac5d1..3344a68e0f6 100644 --- a/cypress/local-only/support/pages/document-qc.ts +++ b/cypress/local-only/support/pages/document-qc.ts @@ -57,9 +57,8 @@ export const uploadCourtIssuedDocumentAndEditViaDocumentQC = () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#primary-document-file', - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: '[data-testid="upload-file-success"]', }); - cy.get('[data-testid="upload-file-success"]'); cy.get('#save-uploaded-pdf-button').click(); cy.get('#add-court-issued-docket-entry-button').click(); cy.get('#document-type .select-react-element__input-container input').clear(); diff --git a/cypress/local-only/support/pages/start-a-case.ts b/cypress/local-only/support/pages/start-a-case.ts index bfe179f71a6..d2d16f458f3 100644 --- a/cypress/local-only/support/pages/start-a-case.ts +++ b/cypress/local-only/support/pages/start-a-case.ts @@ -7,7 +7,7 @@ export const fillInAndSubmitForm = () => { // wizard step 1 cy.get('input#stin-file').should('be.enabled').attachFile(w3Dummy); - cy.get('[data-testid="upload-file-success"]'); + cy.get('[data-testid^="upload-file-success"]'); cy.get('button#submit-case').trigger('click'); // wizard step 2 diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts index 8ed13069882..a7a263ff159 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-business--partnership-representative-under-BBA.cy.ts @@ -306,7 +306,8 @@ describe('File a petition: Step 1 - Petitioner Information', () => { attachFile({ filePath: uploadFile, selector: `[data-testid="${input}"]`, - selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', + selectorToAwaitOnSuccess: + '[data-testid^="upload-file-success"]', }); } }); From aaa1a1a3483760c9289770ff484b922fec5b05bf Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 6 Sep 2024 09:23:03 -0400 Subject: [PATCH 15/65] 10001-design-debt: fixing another test --- cypress/local-only/support/pages/document-qc.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress/local-only/support/pages/document-qc.ts b/cypress/local-only/support/pages/document-qc.ts index 3344a68e0f6..d3a474d2f84 100644 --- a/cypress/local-only/support/pages/document-qc.ts +++ b/cypress/local-only/support/pages/document-qc.ts @@ -57,7 +57,7 @@ export const uploadCourtIssuedDocumentAndEditViaDocumentQC = () => { attachFile({ filePath: '../../helpers/file/sample.pdf', selector: 'input#primary-document-file', - selectorToAwaitOnSuccess: '[data-testid="upload-file-success"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', }); cy.get('#save-uploaded-pdf-button').click(); cy.get('#add-court-issued-docket-entry-button').click(); From 5a7c976f9857a96875ef1aacff85cab6316bbad4 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 6 Sep 2024 10:51:51 -0400 Subject: [PATCH 16/65] 10001-design-debt: refactoring onSuccess and onError slightly, adding a non-pdf.txt file in preparation for more testing --- cypress/helpers/file/non-pdf.txt | 1 + .../FileDocument/StateDrivenFileInput.tsx | 13 +++++--- .../FileHandlingHelpers/fileValidation.ts | 33 +++++++++---------- web-client/src/views/ScanBatchPreviewer.tsx | 13 +++++--- 4 files changed, 35 insertions(+), 25 deletions(-) create mode 100644 cypress/helpers/file/non-pdf.txt diff --git a/cypress/helpers/file/non-pdf.txt b/cypress/helpers/file/non-pdf.txt new file mode 100644 index 00000000000..869bb475c56 --- /dev/null +++ b/cypress/helpers/file/non-pdf.txt @@ -0,0 +1 @@ +This is a non-pdf file used for tests that expect a pdf but don't get one. \ No newline at end of file diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index 6711ff21dc5..3d933eb2b70 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -57,11 +57,16 @@ export const StateDrivenFileInput = connect< allowedFileExtensions: accept.split(','), e, megabyteLimit: constants.MAX_FILE_SIZE_MB, - onError: showErrorModalSequence, - onSuccess: () => { + onError: ({ message }) => { + showErrorModalSequence({ + errorToLog: !message, + message, + title: 'File Upload Error', + }); + }, + onSuccess: ({ selectedFile }) => { const { name: inputName } = e.target; - const selectedFile = e.target.files[0]; - cloneFile(selectedFile) + cloneFile(selectedFile!) .then(clonedFile => { updateFormValueSequence({ key: inputName, diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.ts index 6b49d79fa28..f8be7ada6b2 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.ts @@ -1,4 +1,5 @@ import { validatePDFUpload } from '@web-client/views/FileHandlingHelpers/pdfValidation'; +import React from 'react'; export interface FileValidationResponse { isValid: boolean; @@ -59,20 +60,21 @@ export const validateFileOnSelect = async ({ onSuccess, }: { allowedFileExtensions: string[]; - e: any; + e: React.ChangeEvent; megabyteLimit: number; - onSuccess: () => void; - onError: ({ - errorToLog, - message, - title, - }: { - errorToLog: string; - message: string; - title: string; - }) => void; + onSuccess: ({ selectedFile }: { selectedFile: File }) => void; + onError: ({ message }: { message: string }) => void; }) => { - const selectedFile = e.target.files[0]; + const target = e.target as HTMLInputElement; + + if (!target || !target.files || target.files.length === 0) { + onError({ + message: 'No file selected', + }); + return; + } + + const selectedFile = target.files[0]; const { errorMessage, isValid } = await validateFile({ allowedFileExtensions, file: selectedFile, @@ -80,14 +82,12 @@ export const validateFileOnSelect = async ({ }); if (!isValid) { onError({ - errorToLog: errorMessage!, message: errorMessage!, - title: 'File Upload Error', }); - e.target.value = null; + target.value = ''; return; } - onSuccess(); + onSuccess({ selectedFile }); }; export const validateFile = async ({ @@ -99,7 +99,6 @@ export const validateFile = async ({ megabyteLimit: number; allowedFileExtensions: string[]; }): Promise => { - console.log(file); if (file.size > megabyteLimit * 1024 * 1024) { return { errorMessage: `Your file size is too big. The maximum file size is ${megabyteLimit}MB.`, diff --git a/web-client/src/views/ScanBatchPreviewer.tsx b/web-client/src/views/ScanBatchPreviewer.tsx index 8d75fede456..dff921fb886 100644 --- a/web-client/src/views/ScanBatchPreviewer.tsx +++ b/web-client/src/views/ScanBatchPreviewer.tsx @@ -415,13 +415,18 @@ export const ScanBatchPreviewer = connect( allowedFileExtensions: ['.pdf'], e, megabyteLimit: constants.MAX_FILE_SIZE_MB, - onError: showErrorModalSequence, - onSuccess: () => { - const file = e.target.files[0]; + onError: ({ message }) => { + showErrorModalSequence({ + errorToLog: !message, + message, + title: 'File Upload Error', + }); + }, + onSuccess: ({ selectedFile }) => { setDocumentForUploadSequence({ documentType, documentUploadMode: 'preview', - file, + selectedFile, }); if (validateSequence) { validateSequence(); From 7a314ab51d937b436adb9febb70a4a955e127b43 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 6 Sep 2024 13:00:49 -0400 Subject: [PATCH 17/65] 10001-design-debt: add unit tests to validation --- .../fileValidation.test.ts | 124 +++++++++++++++++- .../FileHandlingHelpers/fileValidation.ts | 5 +- .../FileHandlingHelpers/pdfValidation.test.ts | 102 ++++++++++++++ .../FileHandlingHelpers/pdfValidation.ts | 4 +- 4 files changed, 224 insertions(+), 11 deletions(-) create mode 100644 web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts index 48356982c93..2df20858703 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts @@ -1,19 +1,121 @@ -import { validateFile } from '@web-client/views/FileHandlingHelpers/fileValidation'; -import { validatePDFUpload } from './pdfValidation'; +import * as fileValidation from './fileValidation'; +import * as pdfValidation from './pdfValidation'; +import { validateFile, validateFileOnSelect } from './fileValidation'; +import { validatePdf } from './pdfValidation'; -jest.mock('./pdfValidation', () => ({ - validatePDFUpload: jest.fn(), // Mock the validatePDF function -})); +describe('validateFileOnSelect', () => { + beforeEach(() => { + jest.spyOn(fileValidation, 'validateFile').mockImplementation(jest.fn()); + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + it('should call onError with "No file selected" when no file is selected', async () => { + const onError = jest.fn(); + const onSuccess = jest.fn(); + const event = { + target: { files: [] }, // No files selected + } as unknown as React.ChangeEvent; + + await validateFileOnSelect({ + allowedFileExtensions: ['.pdf'], + e: event, + megabyteLimit: 5, + onError, + onSuccess, + }); + + expect(onError).toHaveBeenCalledWith({ message: 'No file selected' }); + expect(onSuccess).not.toHaveBeenCalled(); + }); + + it('should call onError with the validation error message when the file is invalid', async () => { + (validateFile as jest.Mock).mockResolvedValue({ + errorMessage: + 'File is not a PDF. Select a PDF file or resave the file as a PDF.', + isValid: false, + }); + const onError = jest.fn(); + const onSuccess = jest.fn(); + const event = { + target: { + files: [ + new File(['dummy content'], 'test.txt', { type: 'text/plain' }), + ], + }, + } as unknown as React.ChangeEvent; + + await validateFileOnSelect({ + allowedFileExtensions: ['.pdf'], + e: event, + megabyteLimit: 5, + onError, + onSuccess, + }); + + expect(onError).toHaveBeenCalledWith({ + message: + 'File is not a PDF. Select a PDF file or resave the file as a PDF.', + }); + expect(onSuccess).not.toHaveBeenCalled(); + expect(event.target.value).toBe(''); + }); + + it('should call onSuccess with the file when the file is valid', async () => { + (validateFile as jest.Mock).mockResolvedValue({ + isValid: true, + }); + const mockFile = new File(['dummy content'], 'test.txt', { + type: 'text/plain', + }); + const onError = jest.fn(); + const onSuccess = jest.fn(); + const event = { + target: { + files: [mockFile], + value: 'test.txt', + }, + } as unknown as React.ChangeEvent; + + await validateFileOnSelect({ + allowedFileExtensions: ['.txt'], + e: event, + megabyteLimit: 5, + onError, + onSuccess, + }); + + expect(onError).not.toHaveBeenCalled(); + expect(onSuccess).toHaveBeenCalledWith( + expect.objectContaining({ + selectedFile: mockFile, + }), + ); + expect(event.target.value).toBe('test.txt'); + }); +}); describe('fileValidation', () => { + beforeEach(() => { + jest.spyOn(pdfValidation, 'validatePdf').mockImplementation(jest.fn()); + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + it('should return invalid with error message for improper file with one allowed extension', async () => { const file = new File([], 'test.csv'); const allowedFileExtensions = ['.pdf']; + const validationResult = await validateFile({ allowedFileExtensions, file, megabyteLimit: 250, }); + expect(validationResult.isValid).toBe(false); expect(validationResult.errorMessage).toBe( 'File is not a PDF. Select a PDF file or resave the file as a PDF.', @@ -22,11 +124,13 @@ describe('fileValidation', () => { it('should return invalid with error message for improper file multiple allowed extensions', async () => { const file = new File([], 'test.csv'); const allowedFileExtensions = ['.pdf', '.doc', '.docx']; + const validationResult = await validateFile({ allowedFileExtensions, file, megabyteLimit: 250, }); + expect(validationResult.isValid).toBe(false); expect(validationResult.errorMessage).toBe( 'File is not in a supported format (.pdf, .doc, .docx). Select a different file or resave it in a supported format.', @@ -36,11 +140,13 @@ describe('fileValidation', () => { const file = new File([], 'test.csv'); const allowedFileExtensions = ['.pdf', '.doc', '.docx']; const megabyteLimit = -1; + const validationResult = await validateFile({ allowedFileExtensions, file, megabyteLimit, }); + expect(validationResult.isValid).toBe(false); expect(validationResult.errorMessage).toBe( `Your file size is too big. The maximum file size is ${megabyteLimit}MB.`, @@ -50,23 +156,27 @@ describe('fileValidation', () => { const file = new File([], 'test.pdf', { type: 'application/pdf' }); const allowedFileExtensions = ['.pdf']; const megabyteLimit = 250; + await validateFile({ allowedFileExtensions, file, megabyteLimit, }); - expect(validatePDFUpload).toHaveBeenCalled(); + + expect(validatePdf).toHaveBeenCalled(); }); it('should return valid for valid PDF', async () => { const file = new File([], 'test.pdf', { type: 'application/pdf' }); const allowedFileExtensions = ['.pdf']; const megabyteLimit = 250; - (validatePDFUpload as jest.Mock).mockReturnValue({ isValid: true }); + (validatePdf as jest.Mock).mockReturnValue({ isValid: true }); + const validationResult = await validateFile({ allowedFileExtensions, file, megabyteLimit, }); + expect(validationResult).toMatchObject({ isValid: true }); }); }); diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.ts index f8be7ada6b2..4e896333b03 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.ts @@ -1,4 +1,4 @@ -import { validatePDFUpload } from '@web-client/views/FileHandlingHelpers/pdfValidation'; +import { validatePdf } from '@web-client/views/FileHandlingHelpers/pdfValidation'; import React from 'react'; export interface FileValidationResponse { @@ -75,6 +75,7 @@ export const validateFileOnSelect = async ({ } const selectedFile = target.files[0]; + console.log('here', target.files); const { errorMessage, isValid } = await validateFile({ allowedFileExtensions, file: selectedFile, @@ -113,7 +114,7 @@ export const validateFile = async ({ return correctFileValidation; } if (file.type === 'application/pdf') { - return await validatePDFUpload({ file }); + return await validatePdf({ file }); } return { isValid: true }; }; diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts new file mode 100644 index 00000000000..128be464a86 --- /dev/null +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts @@ -0,0 +1,102 @@ +import { + PDF_CORRUPTED_ERROR_MESSAGE, + PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, + validatePdf, +} from './pdfValidation'; +import { applicationContext } from '@web-client/applicationContext'; + +describe('validatePdf', () => { + let mockFile: File; + let mockPdfJs: any; + let mockFileReader: any; + + beforeEach(() => { + mockFileReader = { + onerror: null, + onload: null, + readAsArrayBuffer: jest.fn(), + result: new ArrayBuffer(8), + }; + + (global as any).FileReader = jest.fn(() => mockFileReader); + + mockFile = new File([new ArrayBuffer(8)], 'test.pdf', { + type: 'application/pdf', + }); + + mockPdfJs = { + getDocument: jest.fn(), + }; + applicationContext.getPdfJs = jest.fn().mockResolvedValue(mockPdfJs); + }); + + it('should resolve as valid when the PDF is valid', async () => { + mockPdfJs.getDocument.mockReturnValue({ + promise: Promise.resolve(), + }); + + const resultPromise = validatePdf({ file: mockFile }); + mockFileReader.onload(); + const result = await resultPromise; + + expect(result).toEqual({ isValid: true }); + }); + + it('should return error message for password-protected PDF', async () => { + const error = new Error(); + error.name = 'PasswordException'; + mockPdfJs.getDocument.mockReturnValue({ + promise: Promise.reject(error), + }); + + const resultPromise = validatePdf({ file: mockFile }); + mockFileReader.onload(); + const result = await resultPromise; + + expect(result).toEqual({ + errorMessage: PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, + isValid: false, + }); + }); + + it('should return error message for corrupted PDF', async () => { + const error = new Error(); + error.name = 'InvalidPDFException'; + mockPdfJs.getDocument.mockReturnValue({ + promise: Promise.reject(error), + }); + + const resultPromise = validatePdf({ file: mockFile }); + mockFileReader.onload(); + const result = await resultPromise; + + expect(result).toEqual({ + errorMessage: PDF_CORRUPTED_ERROR_MESSAGE, + isValid: false, + }); + }); + + it('should return error message if FileReader encounters an error', async () => { + const resultPromise = validatePdf({ file: mockFile }); + mockFileReader.onerror(); + const result = await resultPromise; + + expect(result).toEqual({ + errorMessage: 'Error reading the file.', + isValid: false, + }); + }); + + it('should return error message if FileReader result is invalid', async () => { + mockFileReader.result = null; + + const resultPromise = validatePdf({ file: mockFile }); + mockFileReader.onload(); + const result = await resultPromise; + + expect(result).toEqual({ + errorMessage: 'Failed to read file as ArrayBuffer.', + isValid: false, + }); + }); +}); diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts index 0499b4965d5..e5b67d0c156 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts @@ -6,7 +6,7 @@ export const PDF_PASSWORD_PROTECTED_ERROR_MESSAGE = export const PDF_CORRUPTED_ERROR_MESSAGE = 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.'; -export const validatePDFUpload = ({ +export const validatePdf = ({ file, }: { file: File; @@ -19,7 +19,6 @@ export const validatePDFUpload = ({ const { result } = fileReader; if (!result || typeof result === 'string') { - console.error('Failed to read file as ArrayBuffer.'); resolve({ errorMessage: 'Failed to read file as ArrayBuffer.', isValid: false, @@ -47,6 +46,7 @@ export const validatePDFUpload = ({ }); } } + console.log(err); resolve({ errorMessage: 'An unknown error occurred', isValid: false }); } }; From 661f4c1feda8970e7619b8d2db99df3fee093448 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 6 Sep 2024 13:02:32 -0400 Subject: [PATCH 18/65] 10001-design-debt: remove console log --- web-client/src/views/FileHandlingHelpers/fileValidation.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.ts index 4e896333b03..08dcf9b534a 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.ts @@ -75,7 +75,6 @@ export const validateFileOnSelect = async ({ } const selectedFile = target.files[0]; - console.log('here', target.files); const { errorMessage, isValid } = await validateFile({ allowedFileExtensions, file: selectedFile, From d4c13a3bf9d28de7a50221a1054b34d0fe14dbb2 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 6 Sep 2024 14:27:41 -0400 Subject: [PATCH 19/65] 10001-design-debt: add cypress tests specific to the file upload for pdfs --- .../helpers/file/password-protected-pdf.pdf | Bin 0 -> 13935 bytes .../upload-court-issued-pdf-validation.cy.ts | 93 ++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 cypress/helpers/file/password-protected-pdf.pdf create mode 100644 cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts diff --git a/cypress/helpers/file/password-protected-pdf.pdf b/cypress/helpers/file/password-protected-pdf.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d4b65723d72ec8bae733411f163bd6e810a5f819 GIT binary patch literal 13935 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 { + const docketNumber = '102-67'; // Any existing docket number works + + beforeEach(() => { + loginAsDocketClerk1(); + goToCase(docketNumber); + cy.get('[data-testid="case-detail-menu-button"]').click(); + cy.get('[data-testid="menu-button-upload-pdf"]').click(); + }); + + it('should display error modal when a non-pdf file is selected and see no file selected after closing modal', () => { + attachFile({ + filePath: '../../helpers/file/non-pdf.txt', + selector: '[data-testid="primary-document-file"]', + }); + + cy.get('[data-testid="error-modal"]').contains( + 'File is not a PDF. Select a PDF file or resave the file as a PDF.', + ); + cy.get('[data-testid="modal-button-confirm"').click(); + cy.get('[data-testid^="upload-file-success"]').should('not.exist'); + }); + + it('should display error modal when a non-supported pdf format is selected', () => { + attachFile({ + filePath: '../../helpers/file/corrupt-pdf.pdf', + selector: '[data-testid="primary-document-file"]', + }); + + cy.get('[data-testid="error-modal"]').contains( + 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.', + ); + }); + + it('should display error modal when a password-protected pdf is selected', () => { + attachFile({ + filePath: '../../helpers/file/password-protected-pdf.pdf', + selector: '[data-testid="primary-document-file"]', + }); + + cy.get('[data-testid="error-modal"]').contains( + 'File is encrypted or password protected. Remove encryption or password protection and try again.', + ); + }); + + it('should display error modal when a file larger than the limit is selected', () => { + // Create a 300MB Blob (300 * 1024 * 1024 bytes) + const largeFile = new Blob( + [new ArrayBuffer((MAX_FILE_SIZE_MB + 1) * 1024 * 1024)], + { + type: 'application/pdf', + }, + ); + const fileName = 'large-file.pdf'; + + // Use Cypress to trigger the file upload + cy.get('[data-testid="primary-document-file"]').then(input => { + const dataTransfer = new DataTransfer(); + const file = new File([largeFile], fileName, { type: largeFile.type }); + dataTransfer.items.add(file); + (input[0] as HTMLInputElement).files = dataTransfer.files; + cy.wrap(input).trigger('change', { force: true }); + }); + + cy.get('[data-testid="error-modal"]').contains( + `Your file size is too big. The maximum file size is ${MAX_FILE_SIZE_MB}MB.`, + ); + }); + + it('should see success on valid pdf upload', () => { + attachFile({ + filePath: '../../helpers/file/sample.pdf', + selector: '[data-testid="primary-document-file"]', + }); + + cy.get('[data-testid^="upload-file-success"]').should('exist'); + }); +}); + +// upload court-issued document +// check for corrupt pdf +// check for non-pdf +// check for file size +// check for generic error (attach non-file) +// check for success From b261cde0f2b98dc135c1f9fc06e4a350bda832c1 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 6 Sep 2024 14:49:55 -0400 Subject: [PATCH 20/65] 10001-story: update error messages --- ...etitioner-creates-electronic-case-updated.ts | 2 +- .../petitioner-creates-electronic-case.ts | 2 +- .../file-a-petition-corupted-files.cy.ts | 6 +++--- .../upload-court-issued-pdf-validation.cy.ts | 8 ++++---- .../views/FileDocument/StateDrivenFileInput.tsx | 2 +- .../FileHandlingHelpers/fileValidation.test.ts | 10 +++++----- .../views/FileHandlingHelpers/fileValidation.ts | 6 +++--- .../FileHandlingHelpers/pdfValidation.test.ts | 2 +- .../views/FileHandlingHelpers/pdfValidation.ts | 9 ++++++--- web-client/src/views/FileUploadErrorModal.tsx | 17 ++++++----------- web-client/src/views/ScanBatchPreviewer.tsx | 2 +- 11 files changed, 32 insertions(+), 34 deletions(-) diff --git a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts index f66e02170af..6e2138e1de3 100644 --- a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts +++ b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts @@ -129,7 +129,7 @@ export function petitionerAttemptsToUploadCorruptPdfUpdated() { selector: '[data-testid="stin-file"]', }); cy.get('[data-testid="error-modal"]').contains( - 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.', + 'Your file is corrupted or in an unsupported PDF format. Ensure that the file is not corrupted and/or is in a supported PDF format and try again.', ); } diff --git a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts index 16b9646edc1..e9271eb07d6 100644 --- a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts +++ b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case.ts @@ -299,6 +299,6 @@ export function petitionerAttemptsToUploadCorruptPdfOld() { selector: '[data-testid="stin-file"]', }); cy.get('[data-testid="error-modal"]').contains( - 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.', + 'Your file is corrupted or in an unsupported PDF format. Ensure that the file is not corrupted and/or is in a supported PDF format and try again.', ); } diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-corupted-files.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-corupted-files.cy.ts index 97062fddf24..e9b5ad10cad 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-corupted-files.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-corupted-files.cy.ts @@ -26,7 +26,7 @@ describe('File a petition - Corrupted Files', () => { selector: '#petition-file', }); cy.get('[data-testid="error-modal"]').contains( - 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.', + 'Your file is corrupted or in an unsupported PDF format. Ensure that the file is not corrupted and/or is in a supported PDF format and try again', ); }); @@ -41,7 +41,7 @@ describe('File a petition - Corrupted Files', () => { selector: '[data-testid="irs-notice-upload-0"]', }); cy.get('[data-testid="error-modal"]').contains( - 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.', + 'Your file is corrupted or in an unsupported PDF format. Ensure that the file is not corrupted and/or is in a supported PDF format and try again.', ); }); @@ -60,7 +60,7 @@ describe('File a petition - Corrupted Files', () => { }); cy.get('[data-testid="error-modal"]').contains( - 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.', + 'Your file is corrupted or in an unsupported PDF format. Ensure that the file is not corrupted and/or is in a supported PDF format and try again.', ); }); diff --git a/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts b/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts index db2729114dc..dde5c2aa85e 100644 --- a/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts +++ b/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts @@ -23,7 +23,7 @@ describe('upload court issued document validations', () => { }); cy.get('[data-testid="error-modal"]').contains( - 'File is not a PDF. Select a PDF file or resave the file as a PDF.', + 'Your file is not a PDF. Select a PDF file or resave the file as a PDF.', ); cy.get('[data-testid="modal-button-confirm"').click(); cy.get('[data-testid^="upload-file-success"]').should('not.exist'); @@ -36,7 +36,7 @@ describe('upload court issued document validations', () => { }); cy.get('[data-testid="error-modal"]').contains( - 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.', + 'Your file is corrupted or in an unsupported PDF format. Ensure that the file is not corrupted and/or is in a supported PDF format and try again.', ); }); @@ -47,7 +47,7 @@ describe('upload court issued document validations', () => { }); cy.get('[data-testid="error-modal"]').contains( - 'File is encrypted or password protected. Remove encryption or password protection and try again.', + 'Your file is encrypted or password protected. Remove encryption or password protection and try again.', ); }); @@ -71,7 +71,7 @@ describe('upload court issued document validations', () => { }); cy.get('[data-testid="error-modal"]').contains( - `Your file size is too big. The maximum file size is ${MAX_FILE_SIZE_MB}MB.`, + `Your file size is too big. The maximum file size is ${MAX_FILE_SIZE_MB}MB. Reduce the file size and try again.`, ); }); diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index 3d933eb2b70..b00b9c17e71 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -61,7 +61,7 @@ export const StateDrivenFileInput = connect< showErrorModalSequence({ errorToLog: !message, message, - title: 'File Upload Error', + title: 'There Is a Problem With Your File', }); }, onSuccess: ({ selectedFile }) => { diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts index 2df20858703..35b26b658c1 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts @@ -34,7 +34,7 @@ describe('validateFileOnSelect', () => { it('should call onError with the validation error message when the file is invalid', async () => { (validateFile as jest.Mock).mockResolvedValue({ errorMessage: - 'File is not a PDF. Select a PDF file or resave the file as a PDF.', + 'Your file is not a PDF. Select a PDF file or resave the file as a PDF.', isValid: false, }); const onError = jest.fn(); @@ -57,7 +57,7 @@ describe('validateFileOnSelect', () => { expect(onError).toHaveBeenCalledWith({ message: - 'File is not a PDF. Select a PDF file or resave the file as a PDF.', + 'Your file is not a PDF. Select a PDF file or resave the file as a PDF.', }); expect(onSuccess).not.toHaveBeenCalled(); expect(event.target.value).toBe(''); @@ -118,7 +118,7 @@ describe('fileValidation', () => { expect(validationResult.isValid).toBe(false); expect(validationResult.errorMessage).toBe( - 'File is not a PDF. Select a PDF file or resave the file as a PDF.', + 'Your file is not a PDF. Select a PDF file or resave the file as a PDF.', ); }); it('should return invalid with error message for improper file multiple allowed extensions', async () => { @@ -133,7 +133,7 @@ describe('fileValidation', () => { expect(validationResult.isValid).toBe(false); expect(validationResult.errorMessage).toBe( - 'File is not in a supported format (.pdf, .doc, .docx). Select a different file or resave it in a supported format.', + 'Your file is not in a supported format (.pdf, .doc, .docx). Select a different file or resave it in a supported format.', ); }); it('should return invalid with error message for file too big', async () => { @@ -149,7 +149,7 @@ describe('fileValidation', () => { expect(validationResult.isValid).toBe(false); expect(validationResult.errorMessage).toBe( - `Your file size is too big. The maximum file size is ${megabyteLimit}MB.`, + `Your file size is too big. The maximum file size is ${megabyteLimit}MB. Reduce the file size and try again.`, ); }); it('should call pdf validation for a pdf', async () => { diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.ts index 08dcf9b534a..f9e8b6b6b0f 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.ts @@ -31,9 +31,9 @@ const getDisplayNameForFileExtension = (fileExtension: string) => { const getWrongFileTypeMessage = (fileExtensions: string[]) => { if (fileExtensions.length === 1) { const displayName = getDisplayNameForFileExtension(fileExtensions[0]); - return `File is not ${displayName}. Select ${displayName} file or resave the file as ${displayName}.`; + return `Your file is not ${displayName}. Select ${displayName} file or resave the file as ${displayName}.`; } - return `File is not in a supported format (${fileExtensions.join(', ')}). Select a different file or resave it in a supported format.`; + return `Your file is not in a supported format (${fileExtensions.join(', ')}). Select a different file or resave it in a supported format.`; }; const validateCorrectFileType = ({ @@ -101,7 +101,7 @@ export const validateFile = async ({ }): Promise => { if (file.size > megabyteLimit * 1024 * 1024) { return { - errorMessage: `Your file size is too big. The maximum file size is ${megabyteLimit}MB.`, + errorMessage: `Your file size is too big. The maximum file size is ${megabyteLimit}MB. Reduce the file size and try again.`, isValid: false, }; } diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts index 128be464a86..7fe2ffdbcfc 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts @@ -82,7 +82,7 @@ describe('validatePdf', () => { const result = await resultPromise; expect(result).toEqual({ - errorMessage: 'Error reading the file.', + errorMessage: 'There is a problem uploading the file. Try again later.', isValid: false, }); }); diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts index e5b67d0c156..59187c5673b 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts @@ -2,9 +2,9 @@ import { FileValidationResponse } from '@web-client/views/FileHandlingHelpers/fi import { applicationContext } from '@web-client/applicationContext'; export const PDF_PASSWORD_PROTECTED_ERROR_MESSAGE = - 'File is encrypted or password protected. Remove encryption or password protection and try again.'; + 'Your file is encrypted or password protected. Remove encryption or password protection and try again.'; export const PDF_CORRUPTED_ERROR_MESSAGE = - 'File is corrupted or in an unsupported PDF format. Ensure the file is not corrupted and/or is in a supported PDF format and try again.'; + 'Your file is corrupted or in an unsupported PDF format. Ensure that the file is not corrupted and/or is in a supported PDF format and try again.'; export const validatePdf = ({ file, @@ -52,7 +52,10 @@ export const validatePdf = ({ }; fileReader.onerror = () => { - resolve({ errorMessage: 'Error reading the file.', isValid: false }); + resolve({ + errorMessage: 'There is a problem uploading the file. Try again later.', + isValid: false, + }); }; }); }; diff --git a/web-client/src/views/FileUploadErrorModal.tsx b/web-client/src/views/FileUploadErrorModal.tsx index 73c983d0595..3caa3040db2 100644 --- a/web-client/src/views/FileUploadErrorModal.tsx +++ b/web-client/src/views/FileUploadErrorModal.tsx @@ -1,30 +1,25 @@ import { ModalDialog } from './ModalDialog'; import { connect } from '@web-client/presenter/shared.cerebral'; -import { sequences, state } from '@web-client/presenter/app.cerebral'; +import { sequences } from '@web-client/presenter/app.cerebral'; import React from 'react'; export const FileUploadErrorModal = connect( { - MAX_FILE_SIZE_MB: state.constants.MAX_FILE_SIZE_MB, cancelSequence: sequences.clearModalSequence, }, - function FileUploadErrorModal({ cancelSequence, MAX_FILE_SIZE_MB }) { + function FileUploadErrorModal({ cancelSequence }) { return (
- There was a problem with your submission. Ensure that your uploaded - files: -
    -
  • Are in PDF format (.pdf)
  • -
  • Have a file size of {MAX_FILE_SIZE_MB}MB or less
  • -
  • Are not encrypted or password protected
  • -
+ There is a problem with your submission. Try again later. +
+
If you still have a problem after troubleshooting your files, email{' '} dawson.support@ustaxcourt.gov diff --git a/web-client/src/views/ScanBatchPreviewer.tsx b/web-client/src/views/ScanBatchPreviewer.tsx index dff921fb886..366de952321 100644 --- a/web-client/src/views/ScanBatchPreviewer.tsx +++ b/web-client/src/views/ScanBatchPreviewer.tsx @@ -419,7 +419,7 @@ export const ScanBatchPreviewer = connect( showErrorModalSequence({ errorToLog: !message, message, - title: 'File Upload Error', + title: 'There Is a Problem With Your File', }); }, onSuccess: ({ selectedFile }) => { From 1fe293e6439c2a47e65ad679538da36f88206f90 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 6 Sep 2024 16:05:04 -0400 Subject: [PATCH 21/65] 10001-design-debt: pass file to sequence properly --- .../docketRecord/courtIssuedFiling/stamp-order.cy.ts | 1 - web-client/src/views/FileHandlingHelpers/pdfValidation.ts | 6 ++++-- web-client/src/views/ScanBatchPreviewer.tsx | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cypress/local-only/tests/integration/caseDetail/docketRecord/courtIssuedFiling/stamp-order.cy.ts b/cypress/local-only/tests/integration/caseDetail/docketRecord/courtIssuedFiling/stamp-order.cy.ts index b3bf926575e..6162904b624 100644 --- a/cypress/local-only/tests/integration/caseDetail/docketRecord/courtIssuedFiling/stamp-order.cy.ts +++ b/cypress/local-only/tests/integration/caseDetail/docketRecord/courtIssuedFiling/stamp-order.cy.ts @@ -26,7 +26,6 @@ describe('Judge`s chambers stamps an order', () => { selector: 'input#primaryDocumentFile-file', selectorToAwaitOnSuccess: '[data-testid="remove-pdf"]', }); - cy.get('[data-testid="remove-pdf"]'); cy.get('[data-testid="save-and-serve"]').click(); cy.get('[data-testid="modal-button-confirm"]').click(); cy.get('.usa-alert').should( diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts index 59187c5673b..418b356da19 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts @@ -46,8 +46,10 @@ export const validatePdf = ({ }); } } - console.log(err); - resolve({ errorMessage: 'An unknown error occurred', isValid: false }); + resolve({ + errorMessage: 'An unknown error occurred: ${err}', + isValid: false, + }); } }; diff --git a/web-client/src/views/ScanBatchPreviewer.tsx b/web-client/src/views/ScanBatchPreviewer.tsx index 366de952321..5e4b93a2bbc 100644 --- a/web-client/src/views/ScanBatchPreviewer.tsx +++ b/web-client/src/views/ScanBatchPreviewer.tsx @@ -426,7 +426,7 @@ export const ScanBatchPreviewer = connect( setDocumentForUploadSequence({ documentType, documentUploadMode: 'preview', - selectedFile, + file: selectedFile, }); if (validateSequence) { validateSequence(); From fc12dd268891a18c2971d7a55db0246c5d547794 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Mon, 9 Sep 2024 13:38:43 -0400 Subject: [PATCH 22/65] 10001-design-debt: show loading modal when validating file selection --- cypress/helpers/file/upload-file.ts | 1 + web-client/src/presenter/presenter.ts | 4 +++ .../sequences/setIsLoadingSequence.ts | 5 ++++ .../sequences/setIsNotLoadingSequence.ts | 5 ++++ .../FileDocument/StateDrivenFileInput.tsx | 27 ++++++++++++++----- web-client/src/views/GenericErrorModal.tsx | 2 +- web-client/src/views/ScanBatchPreviewer.tsx | 6 +++++ 7 files changed, 43 insertions(+), 7 deletions(-) create mode 100644 web-client/src/presenter/sequences/setIsLoadingSequence.ts create mode 100644 web-client/src/presenter/sequences/setIsNotLoadingSequence.ts diff --git a/cypress/helpers/file/upload-file.ts b/cypress/helpers/file/upload-file.ts index 65f065571fd..37aabc00282 100644 --- a/cypress/helpers/file/upload-file.ts +++ b/cypress/helpers/file/upload-file.ts @@ -25,6 +25,7 @@ export function attachFile({ }) { cy.get(selector).attachFile(filePath); if (selectorToAwaitOnSuccess) { + cy.get('loading-overlay').should('not.exist'); cy.get(selectorToAwaitOnSuccess).should('exist'); } } diff --git a/web-client/src/presenter/presenter.ts b/web-client/src/presenter/presenter.ts index 737cbd29ded..fac2c698ad6 100644 --- a/web-client/src/presenter/presenter.ts +++ b/web-client/src/presenter/presenter.ts @@ -391,6 +391,8 @@ import { setForHearingSequence } from './sequences/setForHearingSequence'; import { setHasIrsNoticeSequence } from '@web-client/presenter/sequences/setHasIrsNoticeSequence'; import { setIdleStatusActiveSequence } from './sequences/setIdleStatusActiveSequence'; import { setIrsNoticeFalseSequence } from './sequences/setIrsNoticeFalseSequence'; +import { setIsLoadingSequence } from '@web-client/presenter/sequences/setIsLoadingSequence'; +import { setIsNotLoadingSequence } from '@web-client/presenter/sequences/setIsNotLoadingSequence'; import { setJudgeActivityReportFiltersSequence } from './sequences/setJudgeActivityReportFiltersSequence'; import { setMessageDetailViewerDocumentToDisplaySequence } from './sequences/setMessageDetailViewerDocumentToDisplaySequence'; import { setPDFPageForSigningSequence } from './sequences/setPDFPageForSigningSequence'; @@ -1258,6 +1260,8 @@ export const presenterSequences = { setIdleStatusActiveSequence: setIdleStatusActiveSequence as unknown as Function, setIrsNoticeFalseSequence: setIrsNoticeFalseSequence as unknown as Function, + setIsLoadingSequence, + setIsNotLoadingSequence, setJudgeActivityReportFiltersSequence, setMessageDetailViewerDocumentToDisplaySequence: setMessageDetailViewerDocumentToDisplaySequence as unknown as Function, diff --git a/web-client/src/presenter/sequences/setIsLoadingSequence.ts b/web-client/src/presenter/sequences/setIsLoadingSequence.ts new file mode 100644 index 00000000000..9369170e8d4 --- /dev/null +++ b/web-client/src/presenter/sequences/setIsLoadingSequence.ts @@ -0,0 +1,5 @@ +import { setWaitingForResponseAction } from '@web-client/presenter/actions/setWaitingForResponseAction'; + +export const setIsLoadingSequence = [ + setWaitingForResponseAction, +] as unknown as () => void; diff --git a/web-client/src/presenter/sequences/setIsNotLoadingSequence.ts b/web-client/src/presenter/sequences/setIsNotLoadingSequence.ts new file mode 100644 index 00000000000..6b28eec152e --- /dev/null +++ b/web-client/src/presenter/sequences/setIsNotLoadingSequence.ts @@ -0,0 +1,5 @@ +import { unsetWaitingForResponseAction } from '@web-client/presenter/actions/unsetWaitingForResponseAction'; + +export const setIsNotLoadingSequence = [ + unsetWaitingForResponseAction, +] as unknown as () => void; diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index b00b9c17e71..e1943163b80 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -6,7 +6,7 @@ import { props } from 'cerebral'; import { sequences } from '@web-client/presenter/app.cerebral'; import { state } from '@web-client/presenter/app.cerebral'; import { validateFileOnSelect } from '@web-client/views/FileHandlingHelpers/fileValidation'; -import React from 'react'; +import React, { useState } from 'react'; type StateDriveFileInputProps = { 'aria-describedby': string; @@ -22,6 +22,8 @@ type StateDriveFileInputProps = { const deps = { constants: state.constants, form: state.form, + setIsLoadingSequence: sequences.setIsLoadingSequence, + setIsNotLoadingSequence: sequences.setIsNotLoadingSequence, showErrorModalSequence: sequences.showErrorModalSequence, updateFormValueSequence: sequences[props.updateFormValueSequence], validationSequence: sequences[props.validationSequence], @@ -41,6 +43,8 @@ export const StateDrivenFileInput = connect< id, ignoreSizeKey, name: fileInputName, + setIsLoadingSequence, + setIsNotLoadingSequence, showErrorModalSequence, updateFormValueSequence, validationSequence, @@ -50,14 +54,21 @@ export const StateDrivenFileInput = connect< const fileOnForm = file || form[fileInputName] || form.existingFileName; + // Setting the filename here so that we can display it before validation + // finishes, otherwise slow machine might have slight lag. + const [selectedFilename, setSelectedFilename] = useState(''); + const onFileSelectionChange = async ( e: React.ChangeEvent, ) => { + setSelectedFilename(e.target?.files?.[0]?.name || ''); + setIsLoadingSequence(); await validateFileOnSelect({ allowedFileExtensions: accept.split(','), e, megabyteLimit: constants.MAX_FILE_SIZE_MB, onError: ({ message }) => { + setSelectedFilename(''); showErrorModalSequence({ errorToLog: !message, message, @@ -85,6 +96,7 @@ export const StateDrivenFileInput = connect< }); }, }); + setIsNotLoadingSequence(); }; return ( @@ -99,7 +111,7 @@ export const StateDrivenFileInput = connect< name={fileInputName} ref={ref => (inputRef = ref)} style={{ - display: fileOnForm ? 'none' : 'block', + display: fileOnForm || selectedFilename ? 'none' : 'block', }} type="file" onChange={onFileSelectionChange} @@ -108,20 +120,22 @@ export const StateDrivenFileInput = connect< }} /> - {fileOnForm && ( + {(fileOnForm || selectedFilename) && (
- + - {fileOnForm.name || form.existingFileName} + {fileOnForm + ? fileOnForm.name || form.existingFileName + : selectedFilename}
)} + {showModal === 'FileUploadErrorModal' && } ); }, diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts index 06a550ee3ce..bbaaad98cdd 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts @@ -53,7 +53,7 @@ describe('validateFileOnSelect', () => { expect(onError).toHaveBeenCalledWith({ errorType: fileValidation.ErrorTypes.WRONG_FILE_TYPE, message: - 'Your file is not a PDF. Select a PDF file or resave the file as a PDF.', + 'The file is not a PDF. Select a PDF file or resave the file as a PDF.', }); expect(onSuccess).not.toHaveBeenCalled(); expect(event.target.value).toBe(''); @@ -111,7 +111,7 @@ describe('fileValidation', () => { expect(validationResult.isValid).toBe(false); expect(validationResult.errorMessage).toBe( - 'Your file is not a PDF. Select a PDF file or resave the file as a PDF.', + 'The file is not a PDF. Select a PDF file or resave the file as a PDF.', ); }); it('should return invalid with error message for improper file multiple allowed extensions', async () => { @@ -126,7 +126,7 @@ describe('fileValidation', () => { expect(validationResult.isValid).toBe(false); expect(validationResult.errorMessage).toBe( - 'Your file is not in a supported format (.pdf, .doc, .docx). Select a different file or resave it in a supported format.', + 'The file is not in a supported format (.pdf, .doc, .docx). Select a different file or resave it in a supported format.', ); }); it('should return invalid with error message for file too big', async () => { @@ -142,7 +142,7 @@ describe('fileValidation', () => { expect(validationResult.isValid).toBe(false); expect(validationResult.errorMessage).toBe( - `Your file size is too big. The maximum file size is ${megabyteLimit}MB. Reduce the file size and try again.`, + `The file size is too big. The maximum file size is ${megabyteLimit}MB. Reduce the file size and try again.`, ); }); it('should call pdf validation for a pdf', async () => { diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.ts index 6416bae65a8..f5c5400c277 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.ts @@ -40,9 +40,9 @@ const getDisplayNameForFileExtension = (fileExtension: string) => { const getWrongFileTypeMessage = (fileExtensions: string[]) => { if (fileExtensions.length === 1) { const displayName = getDisplayNameForFileExtension(fileExtensions[0]); - return `Your file is not ${displayName}. Select ${displayName} file or resave the file as ${displayName}.`; + return `The file is not ${displayName}. Select ${displayName} file or resave the file as ${displayName}.`; } - return `Your file is not in a supported format (${fileExtensions.join(', ')}). Select a different file or resave it in a supported format.`; + return `The file is not in a supported format (${fileExtensions.join(', ')}). Select a different file or resave it in a supported format.`; }; const validateCorrectFileType = ({ @@ -118,7 +118,7 @@ export const validateFile = async ({ }): Promise => { if (file.size > megabyteLimit * 1024 * 1024) { return { - errorMessage: `Your file size is too big. The maximum file size is ${megabyteLimit}MB. Reduce the file size and try again.`, + errorMessage: `The file size is too big. The maximum file size is ${megabyteLimit}MB. Reduce the file size and try again.`, errorType: ErrorTypes.FILE_TOO_BIG, isValid: false, }; diff --git a/web-client/src/views/FileHandlingHelpers/limitFileSize.ts b/web-client/src/views/FileHandlingHelpers/limitFileSize.ts index 8522aa9eecf..cbd96d1f76d 100644 --- a/web-client/src/views/FileHandlingHelpers/limitFileSize.ts +++ b/web-client/src/views/FileHandlingHelpers/limitFileSize.ts @@ -13,7 +13,7 @@ export const limitFileSize = (e, megabyteLimit, callback) => { } if (file.size >= megabyteLimit * 1024 * 1024) { alert( - `Your file size is too big. The maximum file size is ${megabyteLimit}MB.`, + `The file size is too big. The maximum file size is ${megabyteLimit}MB.`, ); if (e.target) { e.target.value = null; diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts index eba69ae3a91..21b7fa8dd16 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts @@ -5,9 +5,9 @@ import { import { applicationContext } from '@web-client/applicationContext'; export const PDF_PASSWORD_PROTECTED_ERROR_MESSAGE = - 'Your file is encrypted or password protected. Remove encryption or password protection and try again.'; + 'The file is encrypted or password protected. Remove encryption or password protection and try again.'; export const PDF_CORRUPTED_ERROR_MESSAGE = - 'Your file is corrupted or in an unsupported PDF format. Ensure that the file is not corrupted and/or is in a supported PDF format and try again.'; + 'The file is corrupted or in an unsupported PDF format. Ensure that the file is not corrupted and/or is in a supported PDF format and try again.'; export const validatePdf = ({ file, diff --git a/web-client/src/views/FileUploadErrorModal.tsx b/web-client/src/views/FileUploadErrorModal.tsx index 3fe551b726e..1c34ebd601f 100644 --- a/web-client/src/views/FileUploadErrorModal.tsx +++ b/web-client/src/views/FileUploadErrorModal.tsx @@ -33,14 +33,20 @@ export const FileUploadErrorModal = connect( confirmLabel="Close" confirmSequence={clearModalSequence} dataTestId="file-upload-error-modal" - title={modalTitle || 'An error occurred'} + title={modalTitle || 'There Is a Problem with This Submission'} > - {message || 'There is a problem with your submission. Try again later.'} + {message || + 'There is a problem with the submission. Your firewall or network may be preventing the submission. Check your firewall or network setting and try again.'} {!isEmpty(troubleshootingLink) && (

- + {troubleshootingLink.message}
diff --git a/web-client/src/views/GenericErrorModal.tsx b/web-client/src/views/GenericErrorModal.tsx index 9f2ce78ebb3..659b951ff83 100644 --- a/web-client/src/views/GenericErrorModal.tsx +++ b/web-client/src/views/GenericErrorModal.tsx @@ -1,39 +1,22 @@ import { ModalDialog } from './ModalDialog'; import { connect } from '@web-client/presenter/shared.cerebral'; import { sequences } from '@web-client/presenter/app.cerebral'; -import { state } from '@web-client/presenter/app.cerebral'; import React from 'react'; export const GenericErrorModal = connect( { clearModalSequence: sequences.clearModalSequence, - message: state.modal.message, - modalTitle: state.modal.title, }, - function GenericErrorModal({ clearModalSequence, message, modalTitle }) { + function GenericErrorModal({ clearModalSequence }) { return ( - {message || 'Something went wrong, please try again later.'} -
-
- - Learn about troubleshooting files - -
-
- If you still have a problem uploading the file, email{' '} - - dawson.support@ustaxcourt.gov - - . + Something went wrong, please try again later.
); }, diff --git a/web-client/src/views/ScanBatchPreviewer.tsx b/web-client/src/views/ScanBatchPreviewer.tsx index 9c8aefb6832..87f1d0dbd9c 100644 --- a/web-client/src/views/ScanBatchPreviewer.tsx +++ b/web-client/src/views/ScanBatchPreviewer.tsx @@ -11,6 +11,7 @@ import { ErrorTypes, validateFileOnSelect, } from '@web-client/views/FileHandlingHelpers/fileValidation'; +import { FileUploadErrorModal } from '@web-client/views/FileUploadErrorModal'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { FormGroup } from '../ustc-ui/FormGroup/FormGroup'; import { PdfPreview } from '../ustc-ui/PdfPreview/PdfPreview'; @@ -430,7 +431,7 @@ export const ScanBatchPreviewer = connect( 'If you still have a problem uploading the file, email', errorToLog: !message, message, - title: 'There Is a Problem With Your File', + title: 'There Is a Problem With This File', troubleshootingLink: errorType && errorType !== ErrorTypes.WRONG_FILE_TYPE ? { @@ -564,6 +565,7 @@ export const ScanBatchPreviewer = connect( scanBatchPreviewerHelper.selectedPageImage && (
{renderPreviewSection()}
)} + {showModal === 'FileUploadErrorModal' && } ); }, From c0849117e3834973cf3e21999c46123990a0d0bd Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Tue, 10 Sep 2024 14:08:39 -0400 Subject: [PATCH 31/65] 10001-design-debt: add troubleshooting constants --- shared/src/business/entities/EntityConstants.ts | 5 +++++ .../documentTemplates/NoticeOfReceiptOfPetition.tsx | 9 +++++---- .../documentTemplates/StandingPretrialOrder.tsx | 5 +++-- .../StandingPretrialOrderForSmallCase.tsx | 5 +++-- .../useCaseHelper/auth/createUserConfirmation.ts | 3 ++- .../email/sendEmailVerificationLink.ts | 4 +++- .../createNewPetitionerUserAction.test.tsx | 5 +++-- .../CreateAccount/createNewPetitionerUserAction.tsx | 5 +++-- .../actions/Login/forgotPasswordAction.test.tsx | 5 +++-- .../actions/Login/forgotPasswordAction.tsx | 5 +++-- .../Login/submitChangePasswordAction.test.tsx | 9 +++++---- .../actions/Login/submitChangePasswordAction.tsx | 13 +++++++------ .../actions/Login/submitLoginAction.test.tsx | 9 +++++---- .../presenter/actions/Login/submitLoginAction.tsx | 13 +++++++------ .../actions/verifyUserPendingEmailAction.test.tsx | 5 +++-- .../actions/verifyUserPendingEmailAction.tsx | 5 +++-- .../sequences/showFileUploadErrorModalSequence.ts | 4 ++-- web-client/src/views/Contact.tsx | 5 +++-- .../CreatePetitionerAccountInfo.tsx | 9 +++++---- .../src/views/FileDocument/StateDrivenFileInput.tsx | 3 ++- web-client/src/views/FileUploadErrorModal.tsx | 5 +++-- web-client/src/views/Login/ForgotPassword.tsx | 7 +++++-- web-client/src/views/PetitionWelcomePage.tsx | 5 +++-- web-client/src/views/Privacy.tsx | 5 +++-- web-client/src/views/ScanBatchPreviewer.tsx | 3 ++- web-client/src/views/ServeCaseToIrsErrorModal.tsx | 5 +++-- .../FileCompressionErrorModal.tsx | 5 +++-- 27 files changed, 97 insertions(+), 64 deletions(-) diff --git a/shared/src/business/entities/EntityConstants.ts b/shared/src/business/entities/EntityConstants.ts index b72fb1c20c3..27509c88965 100644 --- a/shared/src/business/entities/EntityConstants.ts +++ b/shared/src/business/entities/EntityConstants.ts @@ -1723,3 +1723,8 @@ export const STATUS_REPORT_ORDER_OPTIONS = { restored: 'restoredToGeneralDocket', }, }; + +export const TROUBLESHOOTING_INFO = { + APP_SUPPORT_EMAIL: 'dawson.support@ustaxcourt.gov', + FILE_UPLOAD_TROUBLESHOOTING_LINK: '', // TODO 10001 +}; diff --git a/shared/src/business/utilities/pdfGenerator/documentTemplates/NoticeOfReceiptOfPetition.tsx b/shared/src/business/utilities/pdfGenerator/documentTemplates/NoticeOfReceiptOfPetition.tsx index c865822a400..8433f99409a 100644 --- a/shared/src/business/utilities/pdfGenerator/documentTemplates/NoticeOfReceiptOfPetition.tsx +++ b/shared/src/business/utilities/pdfGenerator/documentTemplates/NoticeOfReceiptOfPetition.tsx @@ -2,6 +2,7 @@ import { AddressLabel } from '../components/AddressLabel'; import { CompressedDocketHeader } from '../components/CompressedDocketHeader'; import { PrimaryHeader } from '../components/PrimaryHeader'; import { RawContact } from '@shared/business/entities/contacts/Contact'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import React from 'react'; const StandardNOTRText = () => ( @@ -10,8 +11,8 @@ const StandardNOTRText = () => ( and case management system, so that you can electronically file and view documents in your case. For more information about electronic service, email{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} , and a letter with eAccess instructions will be mailed to the address of @@ -31,8 +32,8 @@ const ElectronicServiceNOTRText = ({ accessCode, contact }) => ( for your case at {contact.paperPetitionEmail}. You must verify your electronic service address by e-mailing{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} {' '} with the subject line “E-Access Request” and include your docket number and diff --git a/shared/src/business/utilities/pdfGenerator/documentTemplates/StandingPretrialOrder.tsx b/shared/src/business/utilities/pdfGenerator/documentTemplates/StandingPretrialOrder.tsx index 162453eb75a..f0e9ad8c927 100644 --- a/shared/src/business/utilities/pdfGenerator/documentTemplates/StandingPretrialOrder.tsx +++ b/shared/src/business/utilities/pdfGenerator/documentTemplates/StandingPretrialOrder.tsx @@ -1,5 +1,6 @@ import { OrderDocketHeader } from '../components/OrderDocketHeader'; import { OrderPrimaryHeader } from '../components/OrderPrimaryHeader'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import React from 'react'; export const StandingPretrialOrder = ({ options, trialInfo }) => { @@ -72,8 +73,8 @@ export const StandingPretrialOrder = ({ options, trialInfo }) => { and view documents in your case. If you are not registered for eFiling, you must send the opposing party a copy of any document you file with the Court. To register for DAWSON, email{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . eFiling will remain available to parties during the trial session. For more information, see{' '} diff --git a/shared/src/business/utilities/pdfGenerator/documentTemplates/StandingPretrialOrderForSmallCase.tsx b/shared/src/business/utilities/pdfGenerator/documentTemplates/StandingPretrialOrderForSmallCase.tsx index b4b3439030a..4120941cf20 100644 --- a/shared/src/business/utilities/pdfGenerator/documentTemplates/StandingPretrialOrderForSmallCase.tsx +++ b/shared/src/business/utilities/pdfGenerator/documentTemplates/StandingPretrialOrderForSmallCase.tsx @@ -2,6 +2,7 @@ import React from 'react'; import { OrderDocketHeader } from '../components/OrderDocketHeader.tsx'; import { OrderPrimaryHeader } from '../components/OrderPrimaryHeader.tsx'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants.js'; export const StandingPretrialOrderForSmallCase = ({ options, trialInfo }) => { return ( @@ -97,8 +98,8 @@ export const StandingPretrialOrderForSmallCase = ({ options, trialInfo }) => { electronically file and view documents in your case. If you are not registered for eFiling, you must send the opposing party a copy of any document you file with the Court. To register for DAWSON, email{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . eFiling will remain available to parties during the trial session. For more information, see{' '} diff --git a/web-api/src/business/useCaseHelper/auth/createUserConfirmation.ts b/web-api/src/business/useCaseHelper/auth/createUserConfirmation.ts index 2120f699177..dd767b14db5 100644 --- a/web-api/src/business/useCaseHelper/auth/createUserConfirmation.ts +++ b/web-api/src/business/useCaseHelper/auth/createUserConfirmation.ts @@ -1,4 +1,5 @@ import { ServerApplicationContext } from '@web-api/applicationContext'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import qs from 'qs'; export async function createUserConfirmation( @@ -45,7 +46,7 @@ export async function createUserConfirmation( ${verificationLink}
- If you did not create an account with DAWSON, please contact support at dawson.support@ustaxcourt.gov. + If you did not create an account with DAWSON, please contact support at ${TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL}.

diff --git a/web-api/src/business/useCaseHelper/email/sendEmailVerificationLink.ts b/web-api/src/business/useCaseHelper/email/sendEmailVerificationLink.ts index 124a5444dae..570d91642b8 100644 --- a/web-api/src/business/useCaseHelper/email/sendEmailVerificationLink.ts +++ b/web-api/src/business/useCaseHelper/email/sendEmailVerificationLink.ts @@ -1,3 +1,5 @@ +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; + /** * Send email with link to verify pending email * @@ -28,7 +30,7 @@ export const sendEmailVerificationLink = async ({ ${verificationLink}
- If you did not make this change, please contact support at dawson.support@ustaxcourt.gov. + If you did not make this change, please contact support at ${TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL}/a>.

diff --git a/web-client/src/presenter/actions/CreateAccount/createNewPetitionerUserAction.test.tsx b/web-client/src/presenter/actions/CreateAccount/createNewPetitionerUserAction.test.tsx index f27b6f48cf9..8bb613d0917 100644 --- a/web-client/src/presenter/actions/CreateAccount/createNewPetitionerUserAction.test.tsx +++ b/web-client/src/presenter/actions/CreateAccount/createNewPetitionerUserAction.test.tsx @@ -1,3 +1,4 @@ +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; import { createNewPetitionerUserAction } from '@web-client/presenter/actions/CreateAccount/createNewPetitionerUserAction'; import { presenter } from '../../presenter-mock'; @@ -181,8 +182,8 @@ describe('createNewPetitionerUserAction', () => { We sent an email with a link to verify the email address. If you don't see it, check your spam folder. If you're still having trouble, please contact{' '} -
- dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . diff --git a/web-client/src/presenter/actions/CreateAccount/createNewPetitionerUserAction.tsx b/web-client/src/presenter/actions/CreateAccount/createNewPetitionerUserAction.tsx index 38981c9ebe4..499bf4ffc23 100644 --- a/web-client/src/presenter/actions/CreateAccount/createNewPetitionerUserAction.tsx +++ b/web-client/src/presenter/actions/CreateAccount/createNewPetitionerUserAction.tsx @@ -1,4 +1,5 @@ import { NewPetitionerUser } from '@shared/business/entities/NewPetitionerUser'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { state } from '@web-client/presenter/app.cerebral'; import React from 'react'; @@ -44,8 +45,8 @@ export const createNewPetitionerUserAction = async ({ verified. We sent an email with a link to verify the email address. If you don't see it, check your spam folder. If you're still having trouble, please contact{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . diff --git a/web-client/src/presenter/actions/Login/forgotPasswordAction.test.tsx b/web-client/src/presenter/actions/Login/forgotPasswordAction.test.tsx index dc42d5e17c6..677a8de1c83 100644 --- a/web-client/src/presenter/actions/Login/forgotPasswordAction.test.tsx +++ b/web-client/src/presenter/actions/Login/forgotPasswordAction.test.tsx @@ -1,3 +1,4 @@ +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; import { forgotPasswordAction } from '@web-client/presenter/actions/Login/forgotPasswordAction'; import { presenter } from '../../presenter-mock'; @@ -137,8 +138,8 @@ describe('forgotPasswordAction', () => { <> We sent you an email to help you log in. If you don’t see it, check your spam folder. If you’re still having trouble, email{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . diff --git a/web-client/src/presenter/actions/Login/forgotPasswordAction.tsx b/web-client/src/presenter/actions/Login/forgotPasswordAction.tsx index fa57326583f..c631d8c562d 100644 --- a/web-client/src/presenter/actions/Login/forgotPasswordAction.tsx +++ b/web-client/src/presenter/actions/Login/forgotPasswordAction.tsx @@ -1,3 +1,4 @@ +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { state } from '@web-client/presenter/app.cerebral'; import React from 'react'; @@ -35,8 +36,8 @@ export const forgotPasswordAction = async ({ <> We sent you an email to help you log in. If you don’t see it, check your spam folder. If you’re still having trouble, email{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . diff --git a/web-client/src/presenter/actions/Login/submitChangePasswordAction.test.tsx b/web-client/src/presenter/actions/Login/submitChangePasswordAction.test.tsx index 638520f3190..99008d30525 100644 --- a/web-client/src/presenter/actions/Login/submitChangePasswordAction.test.tsx +++ b/web-client/src/presenter/actions/Login/submitChangePasswordAction.test.tsx @@ -1,3 +1,4 @@ +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; import { presenter } from '../../presenter-mock'; import { runAction } from '@web-client/presenter/test.cerebral'; @@ -99,8 +100,8 @@ describe('submitChangePasswordAction', () => { message: ( <> Please contact{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . @@ -158,8 +159,8 @@ describe('submitChangePasswordAction', () => { We sent an email with a link to verify the email address. If you don’t see it, check your spam folder. If you’re still having trouble, email{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . diff --git a/web-client/src/presenter/actions/Login/submitChangePasswordAction.tsx b/web-client/src/presenter/actions/Login/submitChangePasswordAction.tsx index 5affa7dd481..ac39ec50deb 100644 --- a/web-client/src/presenter/actions/Login/submitChangePasswordAction.tsx +++ b/web-client/src/presenter/actions/Login/submitChangePasswordAction.tsx @@ -1,4 +1,5 @@ import { Button } from '@web-client/ustc-ui/Button/Button'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { state } from '@web-client/presenter/app.cerebral'; import { trim } from 'lodash'; import React from 'react'; @@ -41,8 +42,8 @@ export const submitChangePasswordAction = async ({ verified. We sent an email with a link to verify the email address. If you don’t see it, check your spam folder. If you’re still having trouble, email{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . @@ -68,8 +69,8 @@ export const submitChangePasswordAction = async ({ request a new code . If you’re still having trouble, contact{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . @@ -84,8 +85,8 @@ export const submitChangePasswordAction = async ({ message: ( <> Please contact{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . diff --git a/web-client/src/presenter/actions/Login/submitLoginAction.test.tsx b/web-client/src/presenter/actions/Login/submitLoginAction.test.tsx index e4d7df4ae9b..39f2053862c 100644 --- a/web-client/src/presenter/actions/Login/submitLoginAction.test.tsx +++ b/web-client/src/presenter/actions/Login/submitLoginAction.test.tsx @@ -1,3 +1,4 @@ +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; import { presenter } from '../../presenter-mock'; import { runAction } from '@web-client/presenter/test.cerebral'; @@ -231,8 +232,8 @@ describe('submitLoginAction', () => { <> You can try again later or reset your password. If you’re still having problems, contact{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . @@ -274,8 +275,8 @@ describe('submitLoginAction', () => { We sent an email with a link to verify the email address. If you don’t see it, check your spam folder. If you’re still having trouble, email{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . diff --git a/web-client/src/presenter/actions/Login/submitLoginAction.tsx b/web-client/src/presenter/actions/Login/submitLoginAction.tsx index 99604a96e94..334d70ac17e 100644 --- a/web-client/src/presenter/actions/Login/submitLoginAction.tsx +++ b/web-client/src/presenter/actions/Login/submitLoginAction.tsx @@ -1,3 +1,4 @@ +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { state } from '@web-client/presenter/app.cerebral'; import React from 'react'; @@ -45,8 +46,8 @@ export const submitLoginAction = async ({ <> You can try again later or reset your password. If you’re still having problems, contact{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . @@ -65,8 +66,8 @@ export const submitLoginAction = async ({ with a new temporary password that expires in 7 days. If you don’t see it, check your spam folder. If you’re still having trouble, email{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . @@ -85,8 +86,8 @@ export const submitLoginAction = async ({ verified. We sent an email with a link to verify the email address. If you don’t see it, check your spam folder. If you’re still having trouble, email{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . diff --git a/web-client/src/presenter/actions/verifyUserPendingEmailAction.test.tsx b/web-client/src/presenter/actions/verifyUserPendingEmailAction.test.tsx index e173ae3d5fa..5b258df2875 100644 --- a/web-client/src/presenter/actions/verifyUserPendingEmailAction.test.tsx +++ b/web-client/src/presenter/actions/verifyUserPendingEmailAction.test.tsx @@ -1,3 +1,4 @@ +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; import { presenter } from '../presenter-mock'; import { runAction } from '@web-client/presenter/test.cerebral'; @@ -60,8 +61,8 @@ describe('verifyUserPendingEmailAction', () => { <> Your request cannot be completed. Please try to log in. If you’re still having trouble, contact{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . diff --git a/web-client/src/presenter/actions/verifyUserPendingEmailAction.tsx b/web-client/src/presenter/actions/verifyUserPendingEmailAction.tsx index 4a3f6ec1e6c..ea512309050 100644 --- a/web-client/src/presenter/actions/verifyUserPendingEmailAction.tsx +++ b/web-client/src/presenter/actions/verifyUserPendingEmailAction.tsx @@ -1,3 +1,4 @@ +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import React from 'react'; export const verifyUserPendingEmailAction = async ({ @@ -28,8 +29,8 @@ export const verifyUserPendingEmailAction = async ({ <> Your request cannot be completed. Please try to log in. If you’re still having trouble, contact{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . diff --git a/web-client/src/presenter/sequences/showFileUploadErrorModalSequence.ts b/web-client/src/presenter/sequences/showFileUploadErrorModalSequence.ts index 6e8dfca5da3..dd6c3f45bb8 100644 --- a/web-client/src/presenter/sequences/showFileUploadErrorModalSequence.ts +++ b/web-client/src/presenter/sequences/showFileUploadErrorModalSequence.ts @@ -1,8 +1,8 @@ import { logErrorAction } from '@web-client/presenter/actions/logErrorAction'; +import { openFileUploadErrorModal } from '@web-client/presenter/actions/openFileUploadErrorModal'; import { setErrorModalTroubleshootingStepsAction } from '@web-client/presenter/actions/setErrorModalTroubleshootingStepsAction'; import { setModalMessageAction } from '@web-client/presenter/actions/setModalMessageAction'; import { setModalTitleAction } from '@web-client/presenter/actions/setModalTitleAction'; -import { setShowModalFactoryAction } from '@web-client/presenter/actions/setShowModalFactoryAction'; export interface TroubleshootingLinkInfo { link: string; @@ -14,7 +14,7 @@ export const showFileUploadErrorModalSequence = [ setModalMessageAction, setErrorModalTroubleshootingStepsAction, logErrorAction, - setShowModalFactoryAction('FileUploadErrorModal'), + openFileUploadErrorModal, ] as unknown as (props: { message?: string; // Overwrites the default title?: string; // Overwrites the default diff --git a/web-client/src/views/Contact.tsx b/web-client/src/views/Contact.tsx index 92e22d78bf3..30c9eb5fd74 100644 --- a/web-client/src/views/Contact.tsx +++ b/web-client/src/views/Contact.tsx @@ -1,4 +1,5 @@ import { Icon } from '../ustc-ui/Icon/Icon'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { connect } from '@web-client/presenter/shared.cerebral'; import { sequences } from '@web-client/presenter/app.cerebral'; import { state } from '@web-client/presenter/app.cerebral'; @@ -40,8 +41,8 @@ export const Contact = connect( />
Email{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL}
diff --git a/web-client/src/views/CreatePetitionerAccount/CreatePetitionerAccountInfo.tsx b/web-client/src/views/CreatePetitionerAccount/CreatePetitionerAccountInfo.tsx index 1c622194e86..d8906ba7ee3 100644 --- a/web-client/src/views/CreatePetitionerAccount/CreatePetitionerAccountInfo.tsx +++ b/web-client/src/views/CreatePetitionerAccount/CreatePetitionerAccountInfo.tsx @@ -1,3 +1,4 @@ +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import React from 'react'; export const CreatePetitionerAccountInfo = () => { @@ -22,8 +23,8 @@ export const CreatePetitionerAccountInfo = () => {

For additional questions, contact DAWSON support:{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL}


@@ -41,8 +42,8 @@ export const CreatePetitionerAccountInfo = () => {

Need help?

Contact DAWSON support:{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL}

diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index 8189f3e2a8f..59f3bbccecc 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -5,6 +5,7 @@ import { } from '@web-client/views/FileHandlingHelpers/fileValidation'; import { FileUploadErrorModal } from '@web-client/views/FileUploadErrorModal'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { cloneFile } from '../FileHandlingHelpers/cloneFile'; import { connect } from '@web-client/presenter/shared.cerebral'; import { props } from 'cerebral'; @@ -84,7 +85,7 @@ export const StateDrivenFileInput = connect< troubleshootingLink: errorType && errorType !== ErrorTypes.WRONG_FILE_TYPE ? { - link: 'https://google.com', + link: TROUBLESHOOTING_INFO.FILE_UPLOAD_TROUBLESHOOTING_LINK, message: 'Learn about troubleshooting files', } : undefined, diff --git a/web-client/src/views/FileUploadErrorModal.tsx b/web-client/src/views/FileUploadErrorModal.tsx index 1c34ebd601f..545095569e3 100644 --- a/web-client/src/views/FileUploadErrorModal.tsx +++ b/web-client/src/views/FileUploadErrorModal.tsx @@ -1,4 +1,5 @@ import { ModalDialog } from './ModalDialog'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { TroubleshootingLinkInfo } from '@web-client/presenter/sequences/showFileUploadErrorModalSequence'; import { connect } from '@web-client/presenter/shared.cerebral'; import { isEmpty } from 'lodash'; @@ -55,8 +56,8 @@ export const FileUploadErrorModal = connect(
{(contactSupportMessage || 'If you still have a problem after trying again, email') + ' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} . diff --git a/web-client/src/views/Login/ForgotPassword.tsx b/web-client/src/views/Login/ForgotPassword.tsx index 42525b05fd4..87dac968b64 100644 --- a/web-client/src/views/Login/ForgotPassword.tsx +++ b/web-client/src/views/Login/ForgotPassword.tsx @@ -1,6 +1,7 @@ import { Button } from '@web-client/ustc-ui/Button/Button'; import { ErrorNotification } from '@web-client/views/ErrorNotification'; import { SuccessNotification } from '@web-client/views/SuccessNotification'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { connect } from '@web-client/presenter/shared.cerebral'; import { sequences, state } from '@web-client/presenter/app.cerebral'; import React from 'react'; @@ -68,8 +69,10 @@ export const ForgotPassword = connect(

If you no longer have access to the email address on file, contact{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} .

diff --git a/web-client/src/views/PetitionWelcomePage.tsx b/web-client/src/views/PetitionWelcomePage.tsx index 950b88ca020..d5f3ab88e3f 100644 --- a/web-client/src/views/PetitionWelcomePage.tsx +++ b/web-client/src/views/PetitionWelcomePage.tsx @@ -1,5 +1,6 @@ import { Button } from '../ustc-ui/Button/Button'; import { ErrorBanner } from '@web-client/views/ErrorBanner'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import React from 'react'; export const PetitionWelcomePage = () => ( @@ -7,8 +8,8 @@ export const PetitionWelcomePage = () => ( - dawson.support@ustaxcourt.gov + `Do not start a new case. Email + ${TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} with your case's docket number (e.g. 12345-67) to get access to your existing case.`, ]} diff --git a/web-client/src/views/Privacy.tsx b/web-client/src/views/Privacy.tsx index 4d04735b4b9..6051274d213 100644 --- a/web-client/src/views/Privacy.tsx +++ b/web-client/src/views/Privacy.tsx @@ -1,3 +1,4 @@ +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { connect } from '@web-client/presenter/shared.cerebral'; import { sequences } from '@web-client/presenter/app.cerebral'; import { state } from '@web-client/presenter/app.cerebral'; @@ -53,8 +54,8 @@ export const Privacy = connect(

If you have questions about privacy or acceptable use, please email{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} .

diff --git a/web-client/src/views/ScanBatchPreviewer.tsx b/web-client/src/views/ScanBatchPreviewer.tsx index 87f1d0dbd9c..ad343bfafc7 100644 --- a/web-client/src/views/ScanBatchPreviewer.tsx +++ b/web-client/src/views/ScanBatchPreviewer.tsx @@ -17,6 +17,7 @@ import { FormGroup } from '../ustc-ui/FormGroup/FormGroup'; import { PdfPreview } from '../ustc-ui/PdfPreview/PdfPreview'; import { PreviewControls } from './PreviewControls'; import { SelectScannerSourceModal } from './ScanBatchPreviewer/SelectScannerSourceModal'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { Tab, Tabs } from '../ustc-ui/Tabs/Tabs'; import { connect } from '@web-client/presenter/shared.cerebral'; import { sequences } from '@web-client/presenter/app.cerebral'; @@ -435,7 +436,7 @@ export const ScanBatchPreviewer = connect( troubleshootingLink: errorType && errorType !== ErrorTypes.WRONG_FILE_TYPE ? { - link: 'https://google.com', + link: TROUBLESHOOTING_INFO.FILE_UPLOAD_TROUBLESHOOTING_LINK, message: 'Learn about troubleshooting files', } : undefined, diff --git a/web-client/src/views/ServeCaseToIrsErrorModal.tsx b/web-client/src/views/ServeCaseToIrsErrorModal.tsx index 96c011a4a97..5708ce9c418 100644 --- a/web-client/src/views/ServeCaseToIrsErrorModal.tsx +++ b/web-client/src/views/ServeCaseToIrsErrorModal.tsx @@ -1,4 +1,5 @@ import { ModalDialog } from './ModalDialog'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { connect } from '@web-client/presenter/shared.cerebral'; import { sequences } from '@web-client/presenter/app.cerebral'; import React from 'react'; @@ -17,8 +18,8 @@ export const ServeCaseToIrsErrorModal = connect( >
We were unable to complete service to the IRS. Please email{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} {' '} with the docket number.
diff --git a/web-client/src/views/TrialSessionWorkingCopy/FileCompressionErrorModal.tsx b/web-client/src/views/TrialSessionWorkingCopy/FileCompressionErrorModal.tsx index 47b570ee74e..e170ba7ec9d 100644 --- a/web-client/src/views/TrialSessionWorkingCopy/FileCompressionErrorModal.tsx +++ b/web-client/src/views/TrialSessionWorkingCopy/FileCompressionErrorModal.tsx @@ -1,4 +1,5 @@ import { ConfirmModal } from '../../ustc-ui/Modal/ConfirmModal'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { connect } from '@web-client/presenter/shared.cerebral'; import { sequences, state } from '@web-client/presenter/app.cerebral'; import React from 'react'; @@ -43,8 +44,8 @@ export const FileCompressionErrorModal = connect( )) || (

Please try again. If this error persists, contact{' '} - - dawson.support@ustaxcourt.gov + + {TROUBLESHOOTING_INFO.APP_SUPPORT_EMAIL} .

From c774ca137d5ed003981c3d4b70edc94c20b9de3f Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Tue, 10 Sep 2024 14:12:46 -0400 Subject: [PATCH 32/65] 10001-design-debt: fix import issue --- .../documentTemplates/StandingPretrialOrderForSmallCase.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shared/src/business/utilities/pdfGenerator/documentTemplates/StandingPretrialOrderForSmallCase.tsx b/shared/src/business/utilities/pdfGenerator/documentTemplates/StandingPretrialOrderForSmallCase.tsx index 4120941cf20..03512561969 100644 --- a/shared/src/business/utilities/pdfGenerator/documentTemplates/StandingPretrialOrderForSmallCase.tsx +++ b/shared/src/business/utilities/pdfGenerator/documentTemplates/StandingPretrialOrderForSmallCase.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { OrderDocketHeader } from '../components/OrderDocketHeader.tsx'; -import { OrderPrimaryHeader } from '../components/OrderPrimaryHeader.tsx'; -import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants.js'; +import { OrderDocketHeader } from '../components/OrderDocketHeader'; +import { OrderPrimaryHeader } from '../components/OrderPrimaryHeader'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; export const StandingPretrialOrderForSmallCase = ({ options, trialInfo }) => { return ( From b86f86a9eb5dfc9133ccdb1bccd3d9c7eb4a2a7c Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Tue, 10 Sep 2024 14:17:57 -0400 Subject: [PATCH 33/65] 10001-design-debt: update comment before push --- web-client/src/views/FileDocument/StateDrivenFileInput.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index 59f3bbccecc..c051b37cc5e 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -62,7 +62,8 @@ export const StateDrivenFileInput = connect< const fileOnForm = file || form[fileInputName] || form.existingFileName; // Setting the filename here so that we can display it before validation - // finishes, otherwise slow machine might have slight lag. + // finishes, otherwise a slow machine might have slight lag and allow the user + // to "choose file" again. const [selectedFilename, setSelectedFilename] = useState(''); const onFileSelectionChange = async ( From 0551f1038065b253886d6a7792f1a95bc2bf70b0 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Tue, 10 Sep 2024 15:31:29 -0400 Subject: [PATCH 34/65] 10001-design-debt: decouple error we log from error we display --- .../upload-court-issued-pdf-validation.cy.ts | 5 +--- .../FileDocument/StateDrivenFileInput.tsx | 4 +-- .../fileValidation.test.ts | 10 ++++--- .../FileHandlingHelpers/fileValidation.ts | 27 +++++++++++-------- .../FileHandlingHelpers/pdfValidation.test.ts | 13 ++++++--- .../FileHandlingHelpers/pdfValidation.ts | 16 +++++++---- .../PetitionQc/PetitionQcDocumentPreview.tsx | 1 + web-client/src/views/ScanBatchPreviewer.tsx | 4 +-- 8 files changed, 48 insertions(+), 32 deletions(-) diff --git a/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts b/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts index d84886086fa..51a92f105e7 100644 --- a/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts +++ b/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts @@ -4,8 +4,6 @@ import { MAX_FILE_SIZE_MB } from '../../../../../shared/src/business/entities/En import { attachFile } from '../../../../helpers/file/upload-file'; import { loginAsDocketClerk1 } from '../../../../helpers/authentication/login-as-helpers'; -// TODO 10001: Pull out error messages into a shared? - describe('upload court issued document validations', () => { const docketNumber = '102-67'; // Any existing docket number works @@ -52,7 +50,6 @@ describe('upload court issued document validations', () => { }); it('should display error modal when a file larger than the limit is selected', () => { - // Create a 300MB Blob (300 * 1024 * 1024 bytes) const largeFile = new Blob( [new ArrayBuffer((MAX_FILE_SIZE_MB + 1) * 1024 * 1024)], { @@ -61,7 +58,7 @@ describe('upload court issued document validations', () => { ); const fileName = 'large-file.pdf'; - // Use Cypress to trigger the file upload + // Trigger the file upload cy.get('[data-testid="primary-document-file"]').then(input => { const dataTransfer = new DataTransfer(); const file = new File([largeFile], fileName, { type: largeFile.type }); diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index c051b37cc5e..09281a5195a 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -75,12 +75,12 @@ export const StateDrivenFileInput = connect< allowedFileExtensions: accept.split(','), e, megabyteLimit: constants.MAX_FILE_SIZE_MB, - onError: ({ errorType, message }) => { + onError: ({ errorType, message, messageToLog }) => { setSelectedFilename(''); showFileUploadErrorModalSequence({ contactSupportMessage: 'If you still have a problem uploading the file, email', - errorToLog: !message, + errorToLog: messageToLog || message, message, title: 'There Is a Problem With This File', troubleshootingLink: diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts index bbaaad98cdd..103b0a7e4db 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts @@ -27,7 +27,9 @@ describe('validateFileOnSelect', () => { onSuccess, }); - expect(onError).toHaveBeenCalledWith({ message: 'No file selected' }); + expect(onError).toHaveBeenCalledWith({ + message: 'No file selected. Please upload a file.', + }); expect(onSuccess).not.toHaveBeenCalled(); }); @@ -110,7 +112,7 @@ describe('fileValidation', () => { }); expect(validationResult.isValid).toBe(false); - expect(validationResult.errorMessage).toBe( + expect(validationResult.errorMessageToDisplay).toBe( 'The file is not a PDF. Select a PDF file or resave the file as a PDF.', ); }); @@ -125,7 +127,7 @@ describe('fileValidation', () => { }); expect(validationResult.isValid).toBe(false); - expect(validationResult.errorMessage).toBe( + expect(validationResult.errorMessageToDisplay).toBe( 'The file is not in a supported format (.pdf, .doc, .docx). Select a different file or resave it in a supported format.', ); }); @@ -141,7 +143,7 @@ describe('fileValidation', () => { }); expect(validationResult.isValid).toBe(false); - expect(validationResult.errorMessage).toBe( + expect(validationResult.errorMessageToDisplay).toBe( `The file size is too big. The maximum file size is ${megabyteLimit}MB. Reduce the file size and try again.`, ); }); diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.ts index f5c5400c277..66c42410621 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.ts @@ -11,8 +11,9 @@ export enum ErrorTypes { export interface FileValidationResponse { isValid: boolean; - errorMessage?: string; + errorMessageToDisplay?: string; errorType?: ErrorTypes; + errorMessageToLog?: string; // Decouple this from the display so we can send finer-grained errors to our logging } function getFileExtension(filename: string) { @@ -51,10 +52,10 @@ const validateCorrectFileType = ({ }: { file: File; allowedFileExtensions: string[]; -}) => { +}): FileValidationResponse => { if (!allowedFileExtensions.includes(getFileExtension(file.name))) { return { - errorMessage: getWrongFileTypeMessage(allowedFileExtensions), + errorMessageToDisplay: getWrongFileTypeMessage(allowedFileExtensions), errorType: ErrorTypes.WRONG_FILE_TYPE, isValid: false, }; @@ -76,30 +77,34 @@ export const validateFileOnSelect = async ({ onError: ({ errorType, message, + messageToLog, }: { message: string; errorType?: ErrorTypes; + messageToLog?: string; }) => void; }) => { const target = e.target as HTMLInputElement; if (!target || !target.files || target.files.length === 0) { onError({ - message: 'No file selected', + message: 'No file selected. Please upload a file.', }); return; } const selectedFile = target.files[0]; - const { errorMessage, errorType, isValid } = await validateFile({ - allowedFileExtensions, - file: selectedFile, - megabyteLimit, - }); + const { errorMessageToDisplay, errorMessageToLog, errorType, isValid } = + await validateFile({ + allowedFileExtensions, + file: selectedFile, + megabyteLimit, + }); if (!isValid) { onError({ errorType, - message: errorMessage!, + message: errorMessageToDisplay!, + messageToLog: errorMessageToLog, }); target.value = ''; return; @@ -118,7 +123,7 @@ export const validateFile = async ({ }): Promise => { if (file.size > megabyteLimit * 1024 * 1024) { return { - errorMessage: `The file size is too big. The maximum file size is ${megabyteLimit}MB. Reduce the file size and try again.`, + errorMessageToDisplay: `The file size is too big. The maximum file size is ${megabyteLimit}MB. Reduce the file size and try again.`, errorType: ErrorTypes.FILE_TOO_BIG, isValid: false, }; diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts index 7d3b61080da..4c28afcfe59 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts @@ -55,7 +55,7 @@ describe('validatePdf', () => { const result = await resultPromise; expect(result).toEqual({ - errorMessage: PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, + errorMessageToDisplay: PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, errorType: ErrorTypes.ENCRYPTED_FILE, isValid: false, }); @@ -73,7 +73,7 @@ describe('validatePdf', () => { const result = await resultPromise; expect(result).toEqual({ - errorMessage: PDF_CORRUPTED_ERROR_MESSAGE, + errorMessageToDisplay: PDF_CORRUPTED_ERROR_MESSAGE, errorType: ErrorTypes.CORRUPT_FILE, isValid: false, }); @@ -85,7 +85,10 @@ describe('validatePdf', () => { const result = await resultPromise; expect(result).toEqual({ - errorMessage: 'There is a problem uploading the file. Try again later.', + errorMessageToDisplay: + 'There is a problem uploading the file. Try again later.', + errorMessageToLog: + 'There is a problem uploading the file. Try again later.', isValid: false, }); }); @@ -98,7 +101,9 @@ describe('validatePdf', () => { const result = await resultPromise; expect(result).toEqual({ - errorMessage: 'Failed to read file as ArrayBuffer.', + errorMessageToDisplay: + 'There is a problem uploading the file. Try again later.', + errorMessageToLog: 'Failed to read file as ArrayBuffer.', isValid: false, }); }); diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts index 21b7fa8dd16..e99d49fa081 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts @@ -9,6 +9,9 @@ export const PDF_PASSWORD_PROTECTED_ERROR_MESSAGE = export const PDF_CORRUPTED_ERROR_MESSAGE = 'The file is corrupted or in an unsupported PDF format. Ensure that the file is not corrupted and/or is in a supported PDF format and try again.'; +const GENERIC_FILE_ERROR_MESSAGE = + 'There is a problem uploading the file. Try again later.'; + export const validatePdf = ({ file, }: { @@ -23,7 +26,8 @@ export const validatePdf = ({ if (!result || typeof result === 'string') { resolve({ - errorMessage: 'Failed to read file as ArrayBuffer.', + errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, + errorMessageToLog: 'Failed to read file as ArrayBuffer.', isValid: false, }); return; @@ -39,20 +43,21 @@ export const validatePdf = ({ if (err instanceof Error) { if (err.name === 'PasswordException') { resolve({ - errorMessage: PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, + errorMessageToDisplay: PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, errorType: ErrorTypes.ENCRYPTED_FILE, isValid: false, }); } else if (err.name === 'InvalidPDFException') { resolve({ - errorMessage: PDF_CORRUPTED_ERROR_MESSAGE, + errorMessageToDisplay: PDF_CORRUPTED_ERROR_MESSAGE, errorType: ErrorTypes.CORRUPT_FILE, isValid: false, }); } } resolve({ - errorMessage: 'An unknown error occurred: ${err}', + errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, + errorMessageToLog: 'An unknown error occurred: ${err}', isValid: false, }); } @@ -60,7 +65,8 @@ export const validatePdf = ({ fileReader.onerror = () => { resolve({ - errorMessage: 'There is a problem uploading the file. Try again later.', + errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, + errorMessageToLog: GENERIC_FILE_ERROR_MESSAGE, isValid: false, }); }; diff --git a/web-client/src/views/PetitionQc/PetitionQcDocumentPreview.tsx b/web-client/src/views/PetitionQc/PetitionQcDocumentPreview.tsx index 3d3f60d760d..f06a5c5fd96 100644 --- a/web-client/src/views/PetitionQc/PetitionQcDocumentPreview.tsx +++ b/web-client/src/views/PetitionQc/PetitionQcDocumentPreview.tsx @@ -13,6 +13,7 @@ export const PetitionQcDocumentPreview = connect( documentSelectedForPreview, petitionQcHelper, }) { + console.log('HERE!!'); return ( <> { + onError: ({ errorType, message, messageToLog }) => { showFileUploadErrorModalSequence({ contactSupportMessage: 'If you still have a problem uploading the file, email', - errorToLog: !message, + errorToLog: messageToLog || message, message, title: 'There Is a Problem With This File', troubleshootingLink: From c21cc90c6c730763088153ffde8b5aacb8c0a292 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Wed, 11 Sep 2024 13:47:59 -0400 Subject: [PATCH 35/65] 10001-design-debt: add tests for actions, and remove limitFileSize --- .../upload-court-issued-pdf-validation.cy.ts | 15 +++ web-api/src/getUseCases.ts | 2 + .../presenter/actions/logErrorAction.test.ts | 31 +++++ ...rorModalTroubleshootingStepsAction.test.ts | 24 ++++ ...setErrorModalTroubleshootingStepsAction.ts | 2 +- .../actions/setModalMessageAction.test.ts | 14 +++ .../actions/validateFileSizeAction.ts | 9 +- .../showFileUploadErrorModalSequence.ts | 8 +- web-client/src/presenter/state.ts | 2 +- .../FileDocument/StateDrivenFileInput.tsx | 29 ++--- .../fileValidation.test.ts | 44 ++++++- .../FileHandlingHelpers/fileValidation.ts | 108 ++++++++++++++---- .../FileHandlingHelpers/limitFileSize.test.ts | 27 ----- .../FileHandlingHelpers/limitFileSize.ts | 26 ----- .../FileHandlingHelpers/pdfValidation.test.ts | 32 ++++-- .../FileHandlingHelpers/pdfValidation.ts | 36 ++++-- web-client/src/views/FileUploadErrorModal.tsx | 12 +- web-client/src/views/ScanBatchPreviewer.tsx | 29 ++--- 18 files changed, 293 insertions(+), 157 deletions(-) create mode 100644 web-client/src/presenter/actions/logErrorAction.test.ts create mode 100644 web-client/src/presenter/actions/setErrorModalTroubleshootingStepsAction.test.ts create mode 100644 web-client/src/presenter/actions/setModalMessageAction.test.ts delete mode 100644 web-client/src/views/FileHandlingHelpers/limitFileSize.test.ts delete mode 100644 web-client/src/views/FileHandlingHelpers/limitFileSize.ts diff --git a/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts b/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts index 51a92f105e7..e0904988a91 100644 --- a/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts +++ b/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts @@ -15,11 +15,15 @@ describe('upload court issued document validations', () => { }); it('should display error modal when a non-pdf file is selected and see no file selected after closing modal', () => { + cy.intercept('POST', '/logError').as('logErrorRequest'); + attachFile({ filePath: '../../helpers/file/non-pdf.txt', selector: '[data-testid="primary-document-file"]', }); + cy.wait('@logErrorRequest'); + cy.get('@logErrorRequest.all').should('have.length', 1); cy.get('[data-testid="file-upload-error-modal"]').contains( 'The file is not a PDF. Select a PDF file or resave the file as a PDF.', ); @@ -28,28 +32,37 @@ describe('upload court issued document validations', () => { }); it('should display error modal when a non-supported pdf format is selected', () => { + cy.intercept('POST', '/logError').as('logErrorRequest'); + attachFile({ filePath: '../../helpers/file/corrupt-pdf.pdf', selector: '[data-testid="primary-document-file"]', }); + cy.wait('@logErrorRequest'); + cy.get('@logErrorRequest.all').should('have.length', 1); cy.get('[data-testid="file-upload-error-modal"]').contains( 'The file is corrupted or in an unsupported PDF format. Ensure that the file is not corrupted and/or is in a supported PDF format and try again.', ); }); it('should display error modal when a password-protected pdf is selected', () => { + cy.intercept('POST', '/logError').as('logErrorRequest'); + attachFile({ filePath: '../../helpers/file/password-protected-pdf.pdf', selector: '[data-testid="primary-document-file"]', }); + cy.wait('@logErrorRequest'); + cy.get('@logErrorRequest.all').should('have.length', 1); cy.get('[data-testid="file-upload-error-modal"]').contains( 'The file is encrypted or password protected. Remove encryption or password protection and try again.', ); }); it('should display error modal when a file larger than the limit is selected', () => { + cy.intercept('POST', '/logError').as('logErrorRequest'); const largeFile = new Blob( [new ArrayBuffer((MAX_FILE_SIZE_MB + 1) * 1024 * 1024)], { @@ -66,7 +79,9 @@ describe('upload court issued document validations', () => { (input[0] as HTMLInputElement).files = dataTransfer.files; cy.wrap(input).trigger('change', { force: true }); }); + cy.wait('@logErrorRequest'); + cy.get('@logErrorRequest.all').should('have.length', 1); cy.get('[data-testid="file-upload-error-modal"]').contains( `The file size is too big. The maximum file size is ${MAX_FILE_SIZE_MB}MB. Reduce the file size and try again.`, ); diff --git a/web-api/src/getUseCases.ts b/web-api/src/getUseCases.ts index c71216320b5..40fd405006e 100644 --- a/web-api/src/getUseCases.ts +++ b/web-api/src/getUseCases.ts @@ -140,6 +140,7 @@ import { getUsersInSectionInteractor } from './business/useCases/user/getUsersIn import { getUsersPendingEmailInteractor } from './business/useCases/user/getUsersPendingEmailInteractor'; import { getWorkItemInteractor } from './business/useCases/workItems/getWorkItemInteractor'; import { handleBounceNotificationInteractor } from './business/useCases/email/handleBounceNotificationInteractor'; +import { logErrorInteractor } from '@web-api/business/useCases/logErrorInteractor'; import { loginInteractor } from '@web-api/business/useCases/auth/loginInteractor'; import { onConnectInteractor } from './business/useCases/notifications/onConnectInteractor'; import { onDisconnectInteractor } from './business/useCases/notifications/onDisconnectInteractor'; @@ -354,6 +355,7 @@ const useCases = { getUsersPendingEmailInteractor, getWorkItemInteractor, handleBounceNotificationInteractor, + logErrorInteractor, loginInteractor, onConnectInteractor, onDisconnectInteractor, diff --git a/web-client/src/presenter/actions/logErrorAction.test.ts b/web-client/src/presenter/actions/logErrorAction.test.ts new file mode 100644 index 00000000000..8527edef8fd --- /dev/null +++ b/web-client/src/presenter/actions/logErrorAction.test.ts @@ -0,0 +1,31 @@ +import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; +import { logErrorAction } from '@web-client/presenter/actions/logErrorAction'; +import { presenter } from '../presenter-mock'; +import { runAction } from '@web-client/presenter/test.cerebral'; + +describe('logErrorAction', () => { + beforeAll(() => { + presenter.providers.applicationContext = applicationContext; + + applicationContext + .getUseCases() + .logErrorInteractor.mockReturnValue(jest.fn()); + }); + + it('should call the appropriate interactor', async () => { + await runAction(logErrorAction, { + modules: { + presenter, + }, + props: { + errorToLog: 'TestError', + }, + }); + expect( + applicationContext.getUseCases().logErrorInteractor, + ).toHaveBeenCalledWith( + expect.any(Object), + expect.objectContaining({ error: 'TestError' }), + ); + }); +}); diff --git a/web-client/src/presenter/actions/setErrorModalTroubleshootingStepsAction.test.ts b/web-client/src/presenter/actions/setErrorModalTroubleshootingStepsAction.test.ts new file mode 100644 index 00000000000..3128e2f39ce --- /dev/null +++ b/web-client/src/presenter/actions/setErrorModalTroubleshootingStepsAction.test.ts @@ -0,0 +1,24 @@ +import { runAction } from '@web-client/presenter/test.cerebral'; +import { setErrorModalTroubleshootingStepsAction } from './setErrorModalTroubleshootingStepsAction'; + +describe('setErrorModalTroubleshootingStepsAction', () => { + it('sets the troubleshooting steps correctly', async () => { + const { state } = await runAction(setErrorModalTroubleshootingStepsAction, { + props: { + contactSupportMessage: 'testContactSupportMessage', + troubleshootingInfo: { + linkMessage: 'testMessage', + linkUrl: 'testLink', + }, + }, + }); + + expect(state.modal.contactSupportMessage).toEqual( + 'testContactSupportMessage', + ); + expect(state.modal.troubleshootingInfo).toEqual({ + linkMessage: 'testMessage', + linkUrl: 'testLink', + }); + }); +}); diff --git a/web-client/src/presenter/actions/setErrorModalTroubleshootingStepsAction.ts b/web-client/src/presenter/actions/setErrorModalTroubleshootingStepsAction.ts index 8d1ab6ba34f..2f3353f4e47 100644 --- a/web-client/src/presenter/actions/setErrorModalTroubleshootingStepsAction.ts +++ b/web-client/src/presenter/actions/setErrorModalTroubleshootingStepsAction.ts @@ -5,5 +5,5 @@ export const setErrorModalTroubleshootingStepsAction = ({ store, }: ActionProps) => { store.set(state.modal.contactSupportMessage, props.contactSupportMessage); - store.set(state.modal.troubleshootingLink, props.troubleshootingLink); + store.set(state.modal.troubleshootingInfo, props.troubleshootingInfo); }; diff --git a/web-client/src/presenter/actions/setModalMessageAction.test.ts b/web-client/src/presenter/actions/setModalMessageAction.test.ts new file mode 100644 index 00000000000..9e6c83284ab --- /dev/null +++ b/web-client/src/presenter/actions/setModalMessageAction.test.ts @@ -0,0 +1,14 @@ +import { runAction } from '@web-client/presenter/test.cerebral'; +import { setModalMessageAction } from './setModalMessageAction'; + +describe('setModalMessageAction', () => { + it('sets the modal message correctly', async () => { + const { state } = await runAction(setModalMessageAction, { + props: { + message: 'testMessage', + }, + }); + + expect(state.modal.message).toEqual('testMessage'); + }); +}); diff --git a/web-client/src/presenter/actions/validateFileSizeAction.ts b/web-client/src/presenter/actions/validateFileSizeAction.ts index 052f0226bc9..be0eaa910ea 100644 --- a/web-client/src/presenter/actions/validateFileSizeAction.ts +++ b/web-client/src/presenter/actions/validateFileSizeAction.ts @@ -1,4 +1,4 @@ -import { limitFileSize } from '../../views/FileHandlingHelpers/limitFileSize'; +import { validateFileSize } from '@web-client/views/FileHandlingHelpers/fileValidation'; /** * validates whether the given file size does not exceed the set max upload limit @@ -17,9 +17,12 @@ export const validateFileSizeAction = ({ const { MAX_FILE_SIZE_MB } = applicationContext.getConstants(); const { file } = props; - const isFileSizeValid = limitFileSize(file, MAX_FILE_SIZE_MB, () => null); + const fileSizeValidation = validateFileSize({ + file, + megabyteLimit: MAX_FILE_SIZE_MB, + }); - if (isFileSizeValid) { + if (fileSizeValidation.isValid) { return path.valid(); } else { return path.invalid(); diff --git a/web-client/src/presenter/sequences/showFileUploadErrorModalSequence.ts b/web-client/src/presenter/sequences/showFileUploadErrorModalSequence.ts index dd6c3f45bb8..89e8ee97f74 100644 --- a/web-client/src/presenter/sequences/showFileUploadErrorModalSequence.ts +++ b/web-client/src/presenter/sequences/showFileUploadErrorModalSequence.ts @@ -5,8 +5,8 @@ import { setModalMessageAction } from '@web-client/presenter/actions/setModalMes import { setModalTitleAction } from '@web-client/presenter/actions/setModalTitleAction'; export interface TroubleshootingLinkInfo { - link: string; - message: string; + linkUrl: string; + linkMessage: string; } export const showFileUploadErrorModalSequence = [ @@ -18,7 +18,7 @@ export const showFileUploadErrorModalSequence = [ ] as unknown as (props: { message?: string; // Overwrites the default title?: string; // Overwrites the default - errorToLog?: any; // Error message to send to backend, if any + errorToLog?: string; // Error message to send to backend, if any contactSupportMessage?: string; // Please reach out to ... - troubleshootingLink?: TroubleshootingLinkInfo; // Follow this link for helpful tips ... + troubleshootingInfo?: TroubleshootingLinkInfo; // Follow this link for helpful tips ... }) => void; diff --git a/web-client/src/presenter/state.ts b/web-client/src/presenter/state.ts index 5b0ca47c2fe..9a4d93bd460 100644 --- a/web-client/src/presenter/state.ts +++ b/web-client/src/presenter/state.ts @@ -716,7 +716,7 @@ export const baseState = { pdfPreviewModal: undefined, showModal: undefined, // the name of the modal to display title: undefined, - troubleshootingLink: undefined as unknown as TroubleshootingLinkInfo, // steps for troubleshooting + troubleshootingInfo: undefined as unknown as TroubleshootingLinkInfo, // steps for troubleshooting } as Record, navigation: { caseDetailMenu: '', diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index 09281a5195a..811bf097912 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -1,13 +1,12 @@ import { Button } from '../../ustc-ui/Button/Button'; -import { - ErrorTypes, - validateFileOnSelect, -} from '@web-client/views/FileHandlingHelpers/fileValidation'; import { FileUploadErrorModal } from '@web-client/views/FileUploadErrorModal'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { cloneFile } from '../FileHandlingHelpers/cloneFile'; import { connect } from '@web-client/presenter/shared.cerebral'; +import { + genericOnValidationErrorHandler, + validateFileOnSelect, +} from '@web-client/views/FileHandlingHelpers/fileValidation'; import { props } from 'cerebral'; import { sequences } from '@web-client/presenter/app.cerebral'; import { state } from '@web-client/presenter/app.cerebral'; @@ -75,21 +74,13 @@ export const StateDrivenFileInput = connect< allowedFileExtensions: accept.split(','), e, megabyteLimit: constants.MAX_FILE_SIZE_MB, - onError: ({ errorType, message, messageToLog }) => { + onError: ({ errorType, messageToDisplay, messageToLog }) => { setSelectedFilename(''); - showFileUploadErrorModalSequence({ - contactSupportMessage: - 'If you still have a problem uploading the file, email', - errorToLog: messageToLog || message, - message, - title: 'There Is a Problem With This File', - troubleshootingLink: - errorType && errorType !== ErrorTypes.WRONG_FILE_TYPE - ? { - link: TROUBLESHOOTING_INFO.FILE_UPLOAD_TROUBLESHOOTING_LINK, - message: 'Learn about troubleshooting files', - } - : undefined, + genericOnValidationErrorHandler({ + errorType, + messageToDisplay, + messageToLog, + showFileUploadErrorModalSequence, }); }, onSuccess: ({ selectedFile }) => { diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts index 103b0a7e4db..10f5194f7e1 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts @@ -1,8 +1,40 @@ import * as fileValidation from './fileValidation'; import * as pdfValidation from './pdfValidation'; -import { validateFile, validateFileOnSelect } from './fileValidation'; +import { + validateFile, + validateFileOnSelect, + validateFileSize, +} from './fileValidation'; import { validatePdf } from './pdfValidation'; +describe('validateFileSize', () => { + it('should reject a file that is too big', () => { + const maxFileSize = 5; + const blob = new Blob([new ArrayBuffer((maxFileSize + 1) * 1024 * 1024)], { + type: 'application/pdf', + }); + const file = new File([blob], 'test.pdf'); + const validationResult = validateFileSize({ + file, + megabyteLimit: maxFileSize, + }); + expect(validationResult.isValid).toBe(false); + }); + + it('should accept a file that is not too big', () => { + const maxFileSize = 5; + const blob = new Blob([new ArrayBuffer(maxFileSize * 1024 * 1024)], { + type: 'application/pdf', + }); + const file = new File([blob], 'test.pdf'); + const validationResult = validateFileSize({ + file, + megabyteLimit: maxFileSize, + }); + expect(validationResult.isValid).toBe(true); + }); +}); + describe('validateFileOnSelect', () => { beforeEach(() => { jest.spyOn(fileValidation, 'validateFile').mockImplementation(jest.fn()); @@ -28,7 +60,7 @@ describe('validateFileOnSelect', () => { }); expect(onError).toHaveBeenCalledWith({ - message: 'No file selected. Please upload a file.', + messageToDisplay: 'No file selected. Please upload a file.', }); expect(onSuccess).not.toHaveBeenCalled(); }); @@ -54,7 +86,7 @@ describe('validateFileOnSelect', () => { expect(onError).toHaveBeenCalledWith({ errorType: fileValidation.ErrorTypes.WRONG_FILE_TYPE, - message: + messageToDisplay: 'The file is not a PDF. Select a PDF file or resave the file as a PDF.', }); expect(onSuccess).not.toHaveBeenCalled(); @@ -112,7 +144,7 @@ describe('fileValidation', () => { }); expect(validationResult.isValid).toBe(false); - expect(validationResult.errorMessageToDisplay).toBe( + expect(validationResult.errorInformation?.errorMessageToDisplay).toBe( 'The file is not a PDF. Select a PDF file or resave the file as a PDF.', ); }); @@ -127,7 +159,7 @@ describe('fileValidation', () => { }); expect(validationResult.isValid).toBe(false); - expect(validationResult.errorMessageToDisplay).toBe( + expect(validationResult.errorInformation?.errorMessageToDisplay).toBe( 'The file is not in a supported format (.pdf, .doc, .docx). Select a different file or resave it in a supported format.', ); }); @@ -143,7 +175,7 @@ describe('fileValidation', () => { }); expect(validationResult.isValid).toBe(false); - expect(validationResult.errorMessageToDisplay).toBe( + expect(validationResult.errorInformation?.errorMessageToDisplay).toBe( `The file size is too big. The maximum file size is ${megabyteLimit}MB. Reduce the file size and try again.`, ); }); diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.ts index 66c42410621..9dd336549c2 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.ts @@ -1,3 +1,5 @@ +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; +import { TroubleshootingLinkInfo } from '@web-client/presenter/sequences/showFileUploadErrorModalSequence'; import { validatePdf } from '@web-client/views/FileHandlingHelpers/pdfValidation'; import React from 'react'; @@ -9,11 +11,15 @@ export enum ErrorTypes { UNKNOWN = 'UNKNOWN', } +interface FileValidationErrorInfo { + errorType: ErrorTypes; + errorMessageToDisplay: string; + errorMessageToLog?: string; // Decouple this from the display so we can send finer-grained errors to our logging as needed +} + export interface FileValidationResponse { isValid: boolean; - errorMessageToDisplay?: string; - errorType?: ErrorTypes; - errorMessageToLog?: string; // Decouple this from the display so we can send finer-grained errors to our logging + errorInformation?: FileValidationErrorInfo; } function getFileExtension(filename: string) { @@ -46,6 +52,25 @@ const getWrongFileTypeMessage = (fileExtensions: string[]) => { return `The file is not in a supported format (${fileExtensions.join(', ')}). Select a different file or resave it in a supported format.`; }; +export const validateFileSize = ({ + file, + megabyteLimit, +}: { + file: File; + megabyteLimit: number; +}): FileValidationResponse => { + if (file.size > megabyteLimit * 1024 * 1024) { + return { + errorInformation: { + errorMessageToDisplay: `The file size is too big. The maximum file size is ${megabyteLimit}MB. Reduce the file size and try again.`, + errorType: ErrorTypes.FILE_TOO_BIG, + }, + isValid: false, + }; + } + return { isValid: true }; +}; + const validateCorrectFileType = ({ allowedFileExtensions, file, @@ -55,8 +80,10 @@ const validateCorrectFileType = ({ }): FileValidationResponse => { if (!allowedFileExtensions.includes(getFileExtension(file.name))) { return { - errorMessageToDisplay: getWrongFileTypeMessage(allowedFileExtensions), - errorType: ErrorTypes.WRONG_FILE_TYPE, + errorInformation: { + errorMessageToDisplay: getWrongFileTypeMessage(allowedFileExtensions), + errorType: ErrorTypes.WRONG_FILE_TYPE, + }, isValid: false, }; } @@ -76,10 +103,10 @@ export const validateFileOnSelect = async ({ onSuccess: ({ selectedFile }: { selectedFile: File }) => void; onError: ({ errorType, - message, + messageToDisplay, messageToLog, }: { - message: string; + messageToDisplay: string; errorType?: ErrorTypes; messageToLog?: string; }) => void; @@ -88,23 +115,22 @@ export const validateFileOnSelect = async ({ if (!target || !target.files || target.files.length === 0) { onError({ - message: 'No file selected. Please upload a file.', + messageToDisplay: 'No file selected. Please upload a file.', }); return; } const selectedFile = target.files[0]; - const { errorMessageToDisplay, errorMessageToLog, errorType, isValid } = - await validateFile({ - allowedFileExtensions, - file: selectedFile, - megabyteLimit, - }); + const { errorInformation, isValid } = await validateFile({ + allowedFileExtensions, + file: selectedFile, + megabyteLimit, + }); if (!isValid) { onError({ - errorType, - message: errorMessageToDisplay!, - messageToLog: errorMessageToLog, + errorType: errorInformation?.errorType, + messageToDisplay: errorInformation?.errorMessageToDisplay!, + messageToLog: errorInformation?.errorMessageToLog, }); target.value = ''; return; @@ -121,12 +147,9 @@ export const validateFile = async ({ megabyteLimit: number; allowedFileExtensions: string[]; }): Promise => { - if (file.size > megabyteLimit * 1024 * 1024) { - return { - errorMessageToDisplay: `The file size is too big. The maximum file size is ${megabyteLimit}MB. Reduce the file size and try again.`, - errorType: ErrorTypes.FILE_TOO_BIG, - isValid: false, - }; + const fileSizeValidation = validateFileSize({ file, megabyteLimit }); + if (!fileSizeValidation.isValid) { + return fileSizeValidation; } const correctFileValidation = validateCorrectFileType({ allowedFileExtensions, @@ -140,3 +163,42 @@ export const validateFile = async ({ } return { isValid: true }; }; + +export const genericOnValidationErrorHandler = ({ + errorType, + messageToDisplay, + messageToLog, + showFileUploadErrorModalSequence, +}: { + errorType?: ErrorTypes; + messageToDisplay: string; + messageToLog?: string; + showFileUploadErrorModalSequence: ({ + contactSupportMessage, + errorToLog, + message, + title, + troubleshootingInfo, + }: { + contactSupportMessage: string; + errorToLog?: string; + message: string; + title: string; + troubleshootingInfo?: TroubleshootingLinkInfo; + }) => void; +}) => { + showFileUploadErrorModalSequence({ + contactSupportMessage: + 'If you still have a problem uploading the file, email', + errorToLog: messageToLog || messageToDisplay, + message: messageToDisplay, + title: 'There Is a Problem With This File', + troubleshootingInfo: + errorType && errorType !== ErrorTypes.WRONG_FILE_TYPE + ? { + linkMessage: 'Learn about troubleshooting files', + linkUrl: TROUBLESHOOTING_INFO.FILE_UPLOAD_TROUBLESHOOTING_LINK, + } + : undefined, + }); +}; diff --git a/web-client/src/views/FileHandlingHelpers/limitFileSize.test.ts b/web-client/src/views/FileHandlingHelpers/limitFileSize.test.ts deleted file mode 100644 index 4f3ef18d50a..00000000000 --- a/web-client/src/views/FileHandlingHelpers/limitFileSize.test.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { limitFileSize } from './limitFileSize'; - -global.alert = () => {}; - -describe('limit file uploads', () => { - it('does not allow files over 500 MB', () => { - let callbackTriggered = false; - const e = { target: { files: [{ size: 5000000000 }], value: 'something' } }; - const callback = () => { - callbackTriggered = true; - }; - limitFileSize(e, 500, callback); - expect(callbackTriggered).toBeFalsy(); - expect(e.target.value).toBeFalsy(); - }); - - it('does allow files under 500 MB', () => { - let callbackTriggered = false; - const e = { target: { files: [{ size: 50 }], value: 'something' } }; - const callback = () => { - callbackTriggered = true; - }; - limitFileSize(e, 500, callback); - expect(callbackTriggered).toBeTruthy(); - expect(e.target.value).toBeTruthy(); - }); -}); diff --git a/web-client/src/views/FileHandlingHelpers/limitFileSize.ts b/web-client/src/views/FileHandlingHelpers/limitFileSize.ts deleted file mode 100644 index cbd96d1f76d..00000000000 --- a/web-client/src/views/FileHandlingHelpers/limitFileSize.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Limits the file size of the file chosen - * - * @param {object} e the file selected event - * @param {number} megabyteLimit max size - * @param {Function} callback call if the file is an acceptable size - * @returns {boolean} true if the given file size is less than or equal to the limit, otherwise false - */ -export const limitFileSize = (e, megabyteLimit, callback) => { - let file = e; - if (e.target) { - file = e.target.files[0]; - } - if (file.size >= megabyteLimit * 1024 * 1024) { - alert( - `The file size is too big. The maximum file size is ${megabyteLimit}MB.`, - ); - if (e.target) { - e.target.value = null; - } - return false; - } else { - callback(); - return true; - } -}; diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts index 4c28afcfe59..96c6d166f95 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts @@ -55,8 +55,10 @@ describe('validatePdf', () => { const result = await resultPromise; expect(result).toEqual({ - errorMessageToDisplay: PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, - errorType: ErrorTypes.ENCRYPTED_FILE, + errorInformation: { + errorMessageToDisplay: PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, + errorType: ErrorTypes.ENCRYPTED_FILE, + }, isValid: false, }); }); @@ -73,8 +75,10 @@ describe('validatePdf', () => { const result = await resultPromise; expect(result).toEqual({ - errorMessageToDisplay: PDF_CORRUPTED_ERROR_MESSAGE, - errorType: ErrorTypes.CORRUPT_FILE, + errorInformation: { + errorMessageToDisplay: PDF_CORRUPTED_ERROR_MESSAGE, + errorType: ErrorTypes.CORRUPT_FILE, + }, isValid: false, }); }); @@ -85,10 +89,13 @@ describe('validatePdf', () => { const result = await resultPromise; expect(result).toEqual({ - errorMessageToDisplay: - 'There is a problem uploading the file. Try again later.', - errorMessageToLog: - 'There is a problem uploading the file. Try again later.', + errorInformation: { + errorMessageToDisplay: + 'There is a problem uploading the file. Try again later.', + errorMessageToLog: + 'There is a problem uploading the file. Try again later.', + errorType: ErrorTypes.UNKNOWN, + }, isValid: false, }); }); @@ -101,9 +108,12 @@ describe('validatePdf', () => { const result = await resultPromise; expect(result).toEqual({ - errorMessageToDisplay: - 'There is a problem uploading the file. Try again later.', - errorMessageToLog: 'Failed to read file as ArrayBuffer.', + errorInformation: { + errorMessageToDisplay: + 'There is a problem uploading the file. Try again later.', + errorMessageToLog: 'Failed to read file as ArrayBuffer.', + errorType: ErrorTypes.UNKNOWN, + }, isValid: false, }); }); diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts index e99d49fa081..3ccac0972ec 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts @@ -26,8 +26,11 @@ export const validatePdf = ({ if (!result || typeof result === 'string') { resolve({ - errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, - errorMessageToLog: 'Failed to read file as ArrayBuffer.', + errorInformation: { + errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, + errorMessageToLog: 'Failed to read file as ArrayBuffer.', + errorType: ErrorTypes.UNKNOWN, + }, isValid: false, }); return; @@ -35,29 +38,37 @@ export const validatePdf = ({ const fileAsArrayBuffer = new Uint8Array(result as ArrayBuffer); + // We try to load the pdf. If we get any errors, we return an errorInformation accordingly. try { const pdfjs = await applicationContext.getPdfJs(); await pdfjs.getDocument(fileAsArrayBuffer).promise; - resolve({ isValid: true }); // Return true if the PDF is valid + resolve({ isValid: true }); } catch (err) { if (err instanceof Error) { if (err.name === 'PasswordException') { resolve({ - errorMessageToDisplay: PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, - errorType: ErrorTypes.ENCRYPTED_FILE, + errorInformation: { + errorMessageToDisplay: PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, + errorType: ErrorTypes.ENCRYPTED_FILE, + }, isValid: false, }); } else if (err.name === 'InvalidPDFException') { resolve({ - errorMessageToDisplay: PDF_CORRUPTED_ERROR_MESSAGE, - errorType: ErrorTypes.CORRUPT_FILE, + errorInformation: { + errorMessageToDisplay: PDF_CORRUPTED_ERROR_MESSAGE, + errorType: ErrorTypes.CORRUPT_FILE, + }, isValid: false, }); } } resolve({ - errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, - errorMessageToLog: 'An unknown error occurred: ${err}', + errorInformation: { + errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, + errorMessageToLog: 'An unknown error occurred: ${err}', + errorType: ErrorTypes.UNKNOWN, + }, isValid: false, }); } @@ -65,8 +76,11 @@ export const validatePdf = ({ fileReader.onerror = () => { resolve({ - errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, - errorMessageToLog: GENERIC_FILE_ERROR_MESSAGE, + errorInformation: { + errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, + errorMessageToLog: GENERIC_FILE_ERROR_MESSAGE, + errorType: ErrorTypes.UNKNOWN, + }, isValid: false, }); }; diff --git a/web-client/src/views/FileUploadErrorModal.tsx b/web-client/src/views/FileUploadErrorModal.tsx index 545095569e3..f418ac52a18 100644 --- a/web-client/src/views/FileUploadErrorModal.tsx +++ b/web-client/src/views/FileUploadErrorModal.tsx @@ -13,20 +13,20 @@ export const FileUploadErrorModal = connect( contactSupportMessage: state.modal.contactSupportMessage, message: state.modal.message, modalTitle: state.modal.title, - troubleshootingLink: state.modal.troubleshootingLink, + troubleshootingInfo: state.modal.troubleshootingInfo, }, function FileUploadErrorModal({ clearModalSequence, contactSupportMessage, message, modalTitle, - troubleshootingLink, + troubleshootingInfo, }: { clearModalSequence: any; contactSupportMessage: string; message: string; modalTitle: string; - troubleshootingLink: TroubleshootingLinkInfo; + troubleshootingInfo: TroubleshootingLinkInfo; }) { return ( {message || 'There is a problem with the submission. Your firewall or network may be preventing the submission. Check your firewall or network setting and try again.'} - {!isEmpty(troubleshootingLink) && ( + {!isEmpty(troubleshootingInfo) && (

- {troubleshootingLink.message} + {troubleshootingInfo.linkMessage}
)} diff --git a/web-client/src/views/ScanBatchPreviewer.tsx b/web-client/src/views/ScanBatchPreviewer.tsx index c77c9b01cf4..ed4a6762e4d 100644 --- a/web-client/src/views/ScanBatchPreviewer.tsx +++ b/web-client/src/views/ScanBatchPreviewer.tsx @@ -7,19 +7,18 @@ import { ScanErrorModal, UnfinishedScansModal, } from './ScanBatchPreviewer/ScanBatchModals'; -import { - ErrorTypes, - validateFileOnSelect, -} from '@web-client/views/FileHandlingHelpers/fileValidation'; import { FileUploadErrorModal } from '@web-client/views/FileUploadErrorModal'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { FormGroup } from '../ustc-ui/FormGroup/FormGroup'; import { PdfPreview } from '../ustc-ui/PdfPreview/PdfPreview'; import { PreviewControls } from './PreviewControls'; import { SelectScannerSourceModal } from './ScanBatchPreviewer/SelectScannerSourceModal'; -import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { Tab, Tabs } from '../ustc-ui/Tabs/Tabs'; import { connect } from '@web-client/presenter/shared.cerebral'; +import { + genericOnValidationErrorHandler, + validateFileOnSelect, +} from '@web-client/views/FileHandlingHelpers/fileValidation'; import { sequences } from '@web-client/presenter/app.cerebral'; import { state } from '@web-client/presenter/app.cerebral'; import React, { useEffect, useRef } from 'react'; @@ -426,20 +425,12 @@ export const ScanBatchPreviewer = connect( allowedFileExtensions: ['.pdf'], e, megabyteLimit: constants.MAX_FILE_SIZE_MB, - onError: ({ errorType, message, messageToLog }) => { - showFileUploadErrorModalSequence({ - contactSupportMessage: - 'If you still have a problem uploading the file, email', - errorToLog: messageToLog || message, - message, - title: 'There Is a Problem With This File', - troubleshootingLink: - errorType && errorType !== ErrorTypes.WRONG_FILE_TYPE - ? { - link: TROUBLESHOOTING_INFO.FILE_UPLOAD_TROUBLESHOOTING_LINK, - message: 'Learn about troubleshooting files', - } - : undefined, + onError: ({ errorType, messageToDisplay, messageToLog }) => { + genericOnValidationErrorHandler({ + errorType, + messageToDisplay, + messageToLog, + showFileUploadErrorModalSequence, }); }, onSuccess: ({ selectedFile }) => { From fe892858f15627b10634f5543896c076ca78b1d8 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Wed, 11 Sep 2024 16:26:03 -0400 Subject: [PATCH 36/65] 10001-design-debt: move FileUploadStatusModal to one spot to avoid conflicts with multiple components calling it. Also, the prop confirmSequence that we were passing in had no effect in the various uses anyway. --- web-client/src/views/AppComponent.tsx | 2 ++ .../CaseAssociationRequestReview.tsx | 6 ------ web-client/src/views/DocketEntryQc.tsx | 6 ------ web-client/src/views/FileDocument/FileDocumentReview.tsx | 6 ------ .../src/views/FileDocument/FileEntryOfAppearanceReview.tsx | 2 -- web-client/src/views/FileDocument/StateDrivenFileInput.tsx | 4 ---- web-client/src/views/PaperFiling/PaperFiling.tsx | 4 ---- .../src/views/PetitionQc/PetitionQcDocumentPreview.tsx | 1 - web-client/src/views/ScanBatchPreviewer.tsx | 2 -- web-client/src/views/StartCase/StartCaseStep5.tsx | 4 ---- web-client/src/views/StartCase/StartCaseWizard.tsx | 6 +----- .../src/views/StartCaseInternal/StartCaseInternal.tsx | 7 ------- .../views/StartCaseUpdated/UpdatedFilePetitionStep6.tsx | 2 -- 13 files changed, 3 insertions(+), 49 deletions(-) diff --git a/web-client/src/views/AppComponent.tsx b/web-client/src/views/AppComponent.tsx index f3392f85a85..9297ad9f34b 100644 --- a/web-client/src/views/AppComponent.tsx +++ b/web-client/src/views/AppComponent.tsx @@ -54,6 +54,7 @@ import { ErrorView500 } from './ErrorView500'; import { FileCompressionErrorModal } from './TrialSessionWorkingCopy/FileCompressionErrorModal'; import { FileDocumentWizard } from './FileDocument/FileDocumentWizard'; import { FilePetitionSuccess } from './StartCase/FilePetitionSuccess'; +import { FileUploadErrorModal } from '@web-client/views/FileUploadErrorModal'; import { Footer } from './Footer'; import { ForgotPassword } from '@web-client/views/Login/ForgotPassword'; import { GenericErrorModal } from './GenericErrorModal'; @@ -304,6 +305,7 @@ export const AppComponent = connect( {showModal === 'WebSocketErrorModal' && } {showModal === 'AppMaintenanceModal' && } {showModal === 'GenericErrorModal' && } + {showModal === 'FileUploadErrorModal' && } ); }, diff --git a/web-client/src/views/CaseAssociationRequest/CaseAssociationRequestReview.tsx b/web-client/src/views/CaseAssociationRequest/CaseAssociationRequestReview.tsx index e28a804f047..c01a2a84553 100644 --- a/web-client/src/views/CaseAssociationRequest/CaseAssociationRequestReview.tsx +++ b/web-client/src/views/CaseAssociationRequest/CaseAssociationRequestReview.tsx @@ -1,5 +1,4 @@ import { Button } from '../../ustc-ui/Button/Button'; -import { FileUploadErrorModal } from '../FileUploadErrorModal'; import { FileUploadStatusModal } from '../FileUploadStatusModal'; import { Focus } from '../../ustc-ui/Focus/Focus'; import { NonMobile } from '../../ustc-ui/Responsive/Responsive'; @@ -370,11 +369,6 @@ export const CaseAssociationRequestReview = connect(
{showModal === 'FileUploadStatusModal' && } - {showModal === 'FileUploadErrorModal' && ( - - )} ); }, diff --git a/web-client/src/views/DocketEntryQc.tsx b/web-client/src/views/DocketEntryQc.tsx index a54c30099f7..d19eb61685b 100644 --- a/web-client/src/views/DocketEntryQc.tsx +++ b/web-client/src/views/DocketEntryQc.tsx @@ -3,7 +3,6 @@ import { CaseDetailHeader } from './CaseDetail/CaseDetailHeader'; import { CreateMessageModalDialog } from './Messages/CreateMessageModalDialog'; import { DocumentDisplayIframe } from './DocumentDisplayIframe'; import { ErrorNotification } from './ErrorNotification'; -import { FileUploadErrorModal } from './FileUploadErrorModal'; import { FormCancelModalDialog } from './FormCancelModalDialog'; import { Hint } from '../ustc-ui/Hint/Hint'; import { PrimaryDocumentForm } from './EditDocketEntry/PrimaryDocumentForm'; @@ -131,11 +130,6 @@ export const DocketEntryQc = connect( onConfirmSequence={completeDocketEntryQCAndSendMessageSequence} /> )} - {showModal === 'FileUploadErrorModal' && ( - - )} {showModal === 'WorkItemAlreadyCompletedModal' && ( {showModal === 'FileUploadStatusModal' && } - {showModal === 'FileUploadErrorModal' && ( - - )} )} diff --git a/web-client/src/views/FileDocument/FileEntryOfAppearanceReview.tsx b/web-client/src/views/FileDocument/FileEntryOfAppearanceReview.tsx index eccfc0b590b..da6aa8987fa 100644 --- a/web-client/src/views/FileDocument/FileEntryOfAppearanceReview.tsx +++ b/web-client/src/views/FileDocument/FileEntryOfAppearanceReview.tsx @@ -1,5 +1,4 @@ import { Button } from '../../ustc-ui/Button/Button'; -import { FileUploadErrorModal } from '../FileUploadErrorModal'; import { FileUploadStatusModal } from '../FileUploadStatusModal'; import { Focus } from '../../ustc-ui/Focus/Focus'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; @@ -146,7 +145,6 @@ export const FileEntryOfAppearanceReview = ({
{showModal === 'FileUploadStatusModal' && } - {showModal === 'FileUploadErrorModal' && }
); }; diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index 811bf097912..c133c8e2c12 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -1,5 +1,4 @@ import { Button } from '../../ustc-ui/Button/Button'; -import { FileUploadErrorModal } from '@web-client/views/FileUploadErrorModal'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { cloneFile } from '../FileHandlingHelpers/cloneFile'; import { connect } from '@web-client/presenter/shared.cerebral'; @@ -29,7 +28,6 @@ const deps = { setIsLoadingSequence: sequences.setIsLoadingSequence, setIsNotLoadingSequence: sequences.setIsNotLoadingSequence, showFileUploadErrorModalSequence: sequences.showFileUploadErrorModalSequence, - showModal: state.modal.showModal, updateFormValueSequence: sequences[props.updateFormValueSequence], validationSequence: sequences[props.validationSequence], }; @@ -51,7 +49,6 @@ export const StateDrivenFileInput = connect< setIsLoadingSequence, setIsNotLoadingSequence, showFileUploadErrorModalSequence, - showModal, updateFormValueSequence, validationSequence, ...remainingProps @@ -172,7 +169,6 @@ export const StateDrivenFileInput = connect< )} - {showModal === 'FileUploadErrorModal' && } ); }, diff --git a/web-client/src/views/PaperFiling/PaperFiling.tsx b/web-client/src/views/PaperFiling/PaperFiling.tsx index fcffbd6233d..8d51bf695a5 100644 --- a/web-client/src/views/PaperFiling/PaperFiling.tsx +++ b/web-client/src/views/PaperFiling/PaperFiling.tsx @@ -2,7 +2,6 @@ import { Button } from '../../ustc-ui/Button/Button'; import { CaseDetailHeader } from '../CaseDetail/CaseDetailHeader'; import { ConfirmInitiateServiceModal } from '../ConfirmInitiateServiceModal'; import { ErrorNotification } from '../ErrorNotification'; -import { FileUploadErrorModal } from '../FileUploadErrorModal'; import { FileUploadStatusModal } from '../FileUploadStatusModal'; import { FormCancelModalDialog } from '../FormCancelModalDialog'; import { Hint } from '../../ustc-ui/Hint/Hint'; @@ -139,9 +138,6 @@ export const PaperFiling = connect( {showModal === 'FileUploadStatusModal' && } - {showModal === 'FileUploadErrorModal' && ( - - )} {showModal === 'ConfirmInitiatePaperFilingServiceModal' && ( {renderPreviewSection()} )} - {showModal === 'FileUploadErrorModal' && } ); }, diff --git a/web-client/src/views/StartCase/StartCaseStep5.tsx b/web-client/src/views/StartCase/StartCaseStep5.tsx index 6d0977f8e4b..70a6bced5cc 100644 --- a/web-client/src/views/StartCase/StartCaseStep5.tsx +++ b/web-client/src/views/StartCase/StartCaseStep5.tsx @@ -1,7 +1,6 @@ import { AddressDisplay } from '../CaseDetail/AddressDisplay'; import { Button } from '../../ustc-ui/Button/Button'; import { CaseDifferenceModalOverlay } from './CaseDifferenceModalOverlay'; -import { FileUploadErrorModal } from '../FileUploadErrorModal'; import { FileUploadStatusModal } from '../FileUploadStatusModal'; import { Focus } from '../../ustc-ui/Focus/Focus'; import { Hint } from '../../ustc-ui/Hint/Hint'; @@ -290,9 +289,6 @@ export const StartCaseStep5 = connect( )} {showModal === 'FileUploadStatusModal' && } - {showModal === 'FileUploadErrorModal' && ( - - )} ); }, diff --git a/web-client/src/views/StartCase/StartCaseWizard.tsx b/web-client/src/views/StartCase/StartCaseWizard.tsx index a1a5a9061d0..481c79db88f 100644 --- a/web-client/src/views/StartCase/StartCaseWizard.tsx +++ b/web-client/src/views/StartCase/StartCaseWizard.tsx @@ -1,6 +1,5 @@ import { BigHeader } from '../BigHeader'; import { ErrorNotification } from '../ErrorNotification'; -import { FileUploadErrorModal } from '../FileUploadErrorModal'; import { FileUploadStatusModal } from '../FileUploadStatusModal'; import { FormCancelModalDialog } from '../FormCancelModalDialog'; import { StartCaseStep1 } from './StartCaseStep1'; @@ -22,7 +21,7 @@ export const StartCaseWizard = connect( showModal: state.modal.showModal, submitFilePetitionSequence: sequences.submitFilePetitionSequence, }, - function StartCaseWizard({ showModal, submitFilePetitionSequence }) { + function StartCaseWizard({ showModal }) { return ( <> @@ -58,9 +57,6 @@ export const StartCaseWizard = connect( /> )} {showModal === 'FileUploadStatusModal' && } - {showModal === 'FileUploadErrorModal' && ( - - )} ); }, diff --git a/web-client/src/views/StartCaseInternal/StartCaseInternal.tsx b/web-client/src/views/StartCaseInternal/StartCaseInternal.tsx index 8038dd93aca..ed220a1403f 100644 --- a/web-client/src/views/StartCaseInternal/StartCaseInternal.tsx +++ b/web-client/src/views/StartCaseInternal/StartCaseInternal.tsx @@ -2,7 +2,6 @@ import { BigHeader } from './../BigHeader'; import { Button } from '../../ustc-ui/Button/Button'; import { CaseInformation } from './CaseInformation'; import { ErrorNotification } from './../ErrorNotification'; -import { FileUploadErrorModal } from '../FileUploadErrorModal'; import { Focus } from '../../ustc-ui/Focus/Focus'; import { FormCancelModalDialog } from './../FormCancelModalDialog'; import { IRSNotice } from '../IRSNotice'; @@ -115,12 +114,6 @@ export const StartCaseInternal = connect( - - {showModal === 'FileUploadErrorModal' && ( - - )} ); }, diff --git a/web-client/src/views/StartCaseUpdated/UpdatedFilePetitionStep6.tsx b/web-client/src/views/StartCaseUpdated/UpdatedFilePetitionStep6.tsx index 0a01982786c..0f2632c0af3 100644 --- a/web-client/src/views/StartCaseUpdated/UpdatedFilePetitionStep6.tsx +++ b/web-client/src/views/StartCaseUpdated/UpdatedFilePetitionStep6.tsx @@ -1,6 +1,5 @@ import { CaseInformation } from './CaseInformation'; import { ErrorNotification } from '@web-client/views/ErrorNotification'; -import { FileUploadErrorModal } from '@web-client/views/FileUploadErrorModal'; import { FileUploadStatusModal } from '@web-client/views/FileUploadStatusModal'; import { IRSNoticeInformation } from './IRSNoticeInformation'; import { InfoNotificationComponent } from '@web-client/views/InfoNotification'; @@ -119,7 +118,6 @@ export const UpdatedFilePetitionStep6 = connect( {showModal === 'FileUploadStatusModal' && } - {showModal === 'FileUploadErrorModal' && } ); }, From 37985254b634d8f6b092453ef1faabe647f14866 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Wed, 11 Sep 2024 16:59:23 -0400 Subject: [PATCH 37/65] 10001-design-debt: update errorMessageToLog for generic errors after talking with Tenille --- web-client/src/views/FileHandlingHelpers/pdfValidation.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts index 3ccac0972ec..72842e9dacc 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts @@ -28,7 +28,7 @@ export const validatePdf = ({ resolve({ errorInformation: { errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, - errorMessageToLog: 'Failed to read file as ArrayBuffer.', + errorMessageToLog: `${GENERIC_FILE_ERROR_MESSAGE} Failed to read file as ArrayBuffer.`, errorType: ErrorTypes.UNKNOWN, }, isValid: false, @@ -66,7 +66,7 @@ export const validatePdf = ({ resolve({ errorInformation: { errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, - errorMessageToLog: 'An unknown error occurred: ${err}', + errorMessageToLog: `${GENERIC_FILE_ERROR_MESSAGE} An unknown error occurred: ${err}`, errorType: ErrorTypes.UNKNOWN, }, isValid: false, @@ -75,10 +75,11 @@ export const validatePdf = ({ }; fileReader.onerror = () => { + const error = fileReader?.error ?? 'Unknown error'; resolve({ errorInformation: { errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, - errorMessageToLog: GENERIC_FILE_ERROR_MESSAGE, + errorMessageToLog: `${GENERIC_FILE_ERROR_MESSAGE} FileReader encountered an error: ${error}.`, errorType: ErrorTypes.UNKNOWN, }, isValid: false, From d5bf96af693462b9a990eb8ebb768085c7def0ed Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Wed, 11 Sep 2024 17:50:05 -0400 Subject: [PATCH 38/65] 10001-design-debt: fix failing unit tests after latest refactor --- .../src/views/FileHandlingHelpers/pdfValidation.test.ts | 5 +++-- web-client/src/views/FileHandlingHelpers/pdfValidation.ts | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts index 96c6d166f95..67b8aff9b64 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts @@ -93,7 +93,7 @@ describe('validatePdf', () => { errorMessageToDisplay: 'There is a problem uploading the file. Try again later.', errorMessageToLog: - 'There is a problem uploading the file. Try again later.', + 'There is a problem uploading the file. Try again later. (FileReader encountered an error: Unknown error.)', errorType: ErrorTypes.UNKNOWN, }, isValid: false, @@ -111,7 +111,8 @@ describe('validatePdf', () => { errorInformation: { errorMessageToDisplay: 'There is a problem uploading the file. Try again later.', - errorMessageToLog: 'Failed to read file as ArrayBuffer.', + errorMessageToLog: + 'There is a problem uploading the file. Try again later. (Failed to read file as ArrayBuffer.)', errorType: ErrorTypes.UNKNOWN, }, isValid: false, diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts index 72842e9dacc..567201c0583 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts @@ -28,7 +28,7 @@ export const validatePdf = ({ resolve({ errorInformation: { errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, - errorMessageToLog: `${GENERIC_FILE_ERROR_MESSAGE} Failed to read file as ArrayBuffer.`, + errorMessageToLog: `${GENERIC_FILE_ERROR_MESSAGE} (Failed to read file as ArrayBuffer.)`, errorType: ErrorTypes.UNKNOWN, }, isValid: false, @@ -66,7 +66,7 @@ export const validatePdf = ({ resolve({ errorInformation: { errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, - errorMessageToLog: `${GENERIC_FILE_ERROR_MESSAGE} An unknown error occurred: ${err}`, + errorMessageToLog: `${GENERIC_FILE_ERROR_MESSAGE} (An unknown error occurred: ${err})`, errorType: ErrorTypes.UNKNOWN, }, isValid: false, @@ -79,7 +79,7 @@ export const validatePdf = ({ resolve({ errorInformation: { errorMessageToDisplay: GENERIC_FILE_ERROR_MESSAGE, - errorMessageToLog: `${GENERIC_FILE_ERROR_MESSAGE} FileReader encountered an error: ${error}.`, + errorMessageToLog: `${GENERIC_FILE_ERROR_MESSAGE} (FileReader encountered an error: ${error}.)`, errorType: ErrorTypes.UNKNOWN, }, isValid: false, From f98d56e009beed6414ad25fe0794fe69e4f453c7 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Thu, 12 Sep 2024 14:31:49 -0400 Subject: [PATCH 39/65] 10001-design-debt: add test --- .../fileValidation.test.ts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts index 10f5194f7e1..9444928b057 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts @@ -1,5 +1,6 @@ import * as fileValidation from './fileValidation'; import * as pdfValidation from './pdfValidation'; +import { TROUBLESHOOTING_INFO } from '@shared/business/entities/EntityConstants'; import { validateFile, validateFileOnSelect, @@ -206,4 +207,43 @@ describe('fileValidation', () => { expect(validationResult).toMatchObject({ isValid: true }); }); + + describe('genericOnValidationErrorHandler', () => { + it('should call error modal sequence with correct arguments for an error that is not wrong file type', () => { + const mockFunc = jest.fn(); + fileValidation.genericOnValidationErrorHandler({ + errorType: fileValidation.ErrorTypes.CORRUPT_FILE, + messageToDisplay: 'messageToDisplayTest', + messageToLog: 'messageToLogTest', + showFileUploadErrorModalSequence: mockFunc, + }); + expect(mockFunc).toHaveBeenCalledWith({ + contactSupportMessage: + 'If you still have a problem uploading the file, email', + errorToLog: 'messageToLogTest', + message: 'messageToDisplayTest', + title: 'There Is a Problem With This File', + troubleshootingInfo: { + linkMessage: 'Learn about troubleshooting files', + linkUrl: TROUBLESHOOTING_INFO.FILE_UPLOAD_TROUBLESHOOTING_LINK, + }, + }); + }); + }); + it('should call error modal sequence with correct arguments for wrong file type error', () => { + const mockFunc = jest.fn(); + fileValidation.genericOnValidationErrorHandler({ + errorType: fileValidation.ErrorTypes.WRONG_FILE_TYPE, + messageToDisplay: 'messageToDisplayTest', + messageToLog: 'messageToLogTest', + showFileUploadErrorModalSequence: mockFunc, + }); + expect(mockFunc).toHaveBeenCalledWith({ + contactSupportMessage: + 'If you still have a problem uploading the file, email', + errorToLog: 'messageToLogTest', + message: 'messageToDisplayTest', + title: 'There Is a Problem With This File', + }); + }); }); From 11bbb92ecf0aac8ac5bb2037e3e85eced7f205ec Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Thu, 12 Sep 2024 15:41:22 -0400 Subject: [PATCH 40/65] 10001-design-debt: fix attachFile in new test --- .../file-a-petition-generate-petition.cy.ts | 380 ++++++++++++++++++ 1 file changed, 380 insertions(+) create mode 100644 cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-generate-petition.cy.ts diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-generate-petition.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-generate-petition.cy.ts new file mode 100644 index 00000000000..70be396120d --- /dev/null +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-generate-petition.cy.ts @@ -0,0 +1,380 @@ +import { attachFile } from '../../../../helpers/file/upload-file'; +import { + contactInfo, + fillBusinessandOtherContact, + fillCaseProcedureInformation, + fillGeneratePetitionFileInformation, + fillIrsNoticeInformation, + fillMultipleIRSNotices, + fillPetitionerInformation, + fillPrimaryContact, + fillSecondaryContact, + fillStinInformation, + secondaryContactInfo, +} from './petition-helper'; +import { downloadAndParsePdf } from '../../../support/helpers'; +import { + loginAsPetitioner, + loginAsPrivatePractitioner, +} from '../../../../helpers/authentication/login-as-helpers'; + +describe('File a petition', () => { + const VALID_FILE = '../../helpers/file/sample.pdf'; + + describe('Generate petition file', () => { + it('should generate petition for filing type Myself', () => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + fillPetitionerInformation(); + fillGeneratePetitionFileInformation(); + fillIrsNoticeInformation(VALID_FILE, 'Deficiency'); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.intercept('POST', '**/cases').as('postCase'); + + cy.get('[data-testid="step-6-next-button"]').click(); + cy.wait('@postCase').then(({ response }) => { + if (!response) throw Error('Did not find response'); + + cy.get('[data-testid="case-link"]').click(); + downloadAndParsePdf('[data-testid="document-download-link-P"]').then( + text => { + expect(text).to.include(response.body.docketNumber); + expect(text).to.include( + 'John Cruz Petitioner v. Commissioner of Internal Revenue Respondent', + ); + expect(text).to.include( + '1. Which IRS ACTION(S) do you dispute? Notice of Deficiency', + ); + expect(text).to.include( + '2. If applicable, provide the date(s) the IRS issued the NOTICE(S) for the above and the city and state of the IRS office(s) issuing the NOTICE(S): N/A - Jackson, NJ', + ); + expect(text).to.include( + '3. Provide the year(s) or period(s) for which the NOTICE(S) was/were issued: 2024', + ); + expect(text).to.include( + '4. Which case procedure and trial location are you requesting? Regular - Birmingham, Alabama', + ); + + expect(text).to.include( + '5. Explain why you disagree with the IRS action(s) in this case (please add each reason separately): a. REASON 1', + ); + + expect(text).to.include( + '6. State the facts upon which you rely (please add each fact separately): a. FACT 1', + ); + + expect(text).to.include( + "Petitioner's contact information: John Cruz 123 Test Drive Boulder, CO 12345 Phone: Test Phone Service email: petitioner1@example.com", + ); + }, + ); + }); + }); + + it('should generate petition for case type Disclosure', () => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + fillPetitionerInformation(); + fillGeneratePetitionFileInformation(); + fillIrsNoticeInformation(VALID_FILE, 'Disclosure2'); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.intercept('POST', '**/cases').as('postCase'); + + cy.get('[data-testid="step-6-next-button"]').click(); + cy.wait('@postCase').then(({ response }) => { + if (!response) throw Error('Did not find response'); + + cy.get('[data-testid="case-link"]').click(); + downloadAndParsePdf('[data-testid="document-download-link-P"]').then( + text => { + expect(text).to.include(response.body.docketNumber); + expect(text).to.include( + 'John Cruz Petitioner v. Commissioner of Internal Revenue Respondent', + ); + expect(text).to.include( + '1. Which IRS ACTION(S) do you dispute? Notice - We Are Going To Make Your Determination Letter Available for Public Inspection', + ); + }, + ); + }); + }); + + it('should generate petition when user has not received an IRS notice', () => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + fillPetitionerInformation(); + fillGeneratePetitionFileInformation(); + fillIrsNoticeInformation(VALID_FILE, 'Deficiency', false); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.intercept('POST', '**/cases').as('postCase'); + + cy.get('[data-testid="step-6-next-button"]').click(); + cy.wait('@postCase').then(({ response }) => { + if (!response) throw Error('Did not find response'); + + cy.get('[data-testid="case-link"]').click(); + downloadAndParsePdf('[data-testid="document-download-link-P"]').then( + text => { + expect(text).to.include(response.body.docketNumber); + expect(text).to.include( + 'John Cruz Petitioner v. Commissioner of Internal Revenue Respondent', + ); + expect(text).to.include( + '1. Which IRS ACTION(S) do you dispute? Deficiency', + ); + expect(text).to.include( + '2. If applicable, provide the date(s) the IRS issued the NOTICE(S) for the above and the city and state of the IRS office(s) issuing the NOTICE(S): N/A', + ); + expect(text).to.include( + '3. Provide the year(s) or period(s) for which the NOTICE(S) was/were issued: N/A', + ); + }, + ); + }); + }); + + it('should generate petition when user received multiple IRS notices', () => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + fillPetitionerInformation(); + fillGeneratePetitionFileInformation(true); + fillMultipleIRSNotices(VALID_FILE); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.intercept('POST', '**/cases').as('postCase'); + + cy.get('[data-testid="step-6-next-button"]').click(); + cy.wait('@postCase').then(({ response }) => { + if (!response) throw Error('Did not find response'); + + cy.get('[data-testid="case-link"]').click(); + downloadAndParsePdf('[data-testid="document-download-link-P"]').then( + text => { + expect(text).to.include(response.body.docketNumber); + expect(text).to.include( + 'John Cruz Petitioner v. Commissioner of Internal Revenue Respondent', + ); + expect(text).to.include( + '2. If applicable, provide the date(s) the IRS issued the NOTICE(S) for the above and the city and state of the IRS office(s) issuing the NOTICE(S): 05/02/24 - Jackson, NJ 05/02/23 - New York, NY', + ); + expect(text).to.include( + '3. Provide the year(s) or period(s) for which the NOTICE(S) was/were issued: 2024 2023', + ); + }, + ); + }); + }); + + it('should generate petition when user enters multiple facts and reasons', () => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + fillPetitionerInformation(); + fillGeneratePetitionFileInformation(true); + fillIrsNoticeInformation(VALID_FILE, 'Deficiency', false); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.intercept('POST', '**/cases').as('postCase'); + + cy.get('[data-testid="step-6-next-button"]').click(); + cy.wait('@postCase').then(({ response }) => { + if (!response) throw Error('Did not find response'); + + cy.get('[data-testid="case-link"]').click(); + downloadAndParsePdf('[data-testid="document-download-link-P"]').then( + text => { + expect(text).to.include(response.body.docketNumber); + expect(text).to.include( + 'John Cruz Petitioner v. Commissioner of Internal Revenue Respondent', + ); + expect(text).to.include( + '5. Explain why you disagree with the IRS action(s) in this case (please add each reason separately): a. REASON 1 b. REASON 2', + ); + + expect(text).to.include( + '6. State the facts upon which you rely (please add each fact separately): a. FACT 1 b. FACT 2', + ); + }, + ); + }); + }); + + it('should generate petition when filing for Myself and deceased Spouse', () => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + + cy.get('[data-testid="filing-type-1"]').click(); + fillPrimaryContact(); + cy.get('[data-testid="is-spouse-deceased-0"]').click(); + cy.get('[data-testid="contact-secondary-name"]').type( + secondaryContactInfo.name, + ); + cy.get('[data-testid="contactSecondary-in-care-of"]').type( + secondaryContactInfo.inCareOf, + ); + fillSecondaryContact(); + cy.get('[data-testid="step-1-next-button"]').click(); + + fillGeneratePetitionFileInformation(); + fillIrsNoticeInformation(VALID_FILE, 'Disclosure2'); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.intercept('POST', '**/cases').as('postCase'); + + cy.get('[data-testid="step-6-next-button"]').click(); + cy.wait('@postCase').then(({ response }) => { + if (!response) throw Error('Did not find response'); + + cy.get('[data-testid="case-link"]').click(); + downloadAndParsePdf('[data-testid="document-download-link-P"]').then( + text => { + expect(text).to.include(response.body.docketNumber); + expect(text).to.include( + 'John & Bill, Deceased Petitioners v. Commissioner of Internal Revenue Respondent', + ); + expect(text).to.include( + "Petitioner's contact information: John 111 South West St. Orlando, AK 33233 Phone: 3232323232 Place of legal residence: Delaware Service email: petitioner1@example.com", + ); + expect(text).to.include( + "Spouse's contact information: Bill c/o: Spouse Care of 111 South West St. Orlando, AK 33233 Phone: 7878787878 Email: petitioner2@example.com Register for electronic filing and service: Yes Place of legal residence: New Jersey", + ); + }, + ); + }); + }); + + it('should generate petition when filing for Myself and Spouse', () => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + + cy.get('[data-testid="filing-type-1"]').click(); + fillPrimaryContact(); + cy.get('[data-testid="is-spouse-deceased-1"]').click(); + cy.get('[data-testid="have-spouse-consent-label"]').click(); + cy.get('[data-testid="contact-secondary-name"]').type( + secondaryContactInfo.name, + ); + fillSecondaryContact(); + + cy.get('[data-testid="step-1-next-button"]').click(); + + fillGeneratePetitionFileInformation(); + fillIrsNoticeInformation(VALID_FILE, 'Disclosure2'); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.intercept('POST', '**/cases').as('postCase'); + + cy.get('[data-testid="step-6-next-button"]').click(); + cy.wait('@postCase').then(({ response }) => { + if (!response) throw Error('Did not find response'); + + cy.get('[data-testid="case-link"]').click(); + downloadAndParsePdf('[data-testid="document-download-link-P"]').then( + text => { + expect(text).to.include(response.body.docketNumber); + expect(text).to.include( + 'John & Bill Petitioners v. Commissioner of Internal Revenue Respondent', + ); + expect(text).to.include( + "Petitioner's contact information: John 111 South West St. Orlando, AK 33233 Phone: 3232323232 Place of legal residence: Delaware Service email: petitioner1@example.com", + ); + expect(text).to.include( + "Spouse's contact information: Bill 111 South West St. Orlando, AK 33233 Phone: 7878787878 Email: petitioner2@example.com Register for electronic filing and service: Yes Place of legal residence: New Jersey", + ); + }, + ); + }); + }); + + it('should generate petition when filing for Business', () => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + + cy.get('[data-testid="filing-type-2"]').click(); + cy.get('[data-testid="business-type-0"]').click(); + fillBusinessandOtherContact({ + fillInCareOf: true, + }); + cy.get('[data-testid="contactPrimary-placeOfLegalResidence"]').select( + contactInfo.placeOfLegalResidence, + ); + cy.get('[data-testid="contact-primary-phone"]').type(contactInfo.phone); + attachFile({ + filePath: VALID_FILE, + selector: '[data-testid="contact-primary-phone"]', + selectorToAwaitOnSuccess: '[data-testid^="upload-file-success"]', + }); + cy.get('[data-testid="step-1-next-button"]').click(); + + fillGeneratePetitionFileInformation(); + fillIrsNoticeInformation(VALID_FILE, 'Disclosure2'); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.intercept('POST', '**/cases').as('postCase'); + + cy.get('[data-testid="step-6-next-button"]').click(); + cy.wait('@postCase').then(({ response }) => { + if (!response) throw Error('Did not find response'); + + cy.get('[data-testid="case-link"]').click(); + downloadAndParsePdf('[data-testid="document-download-link-P"]').then( + text => { + expect(text).to.include(response.body.docketNumber); + expect(text).to.include( + 'Test name Petitioner v. Commissioner of Internal Revenue Respondent', + ); + expect(text).to.include('Corporate Disclosure Statement'); + expect(text).to.include('Place of business: Delaware'); + }, + ); + }); + }); + + it('should generate petition when filed by Practitioner', () => { + loginAsPrivatePractitioner(); + cy.visit('/file-a-petition/new'); + fillPetitionerInformation(); + fillGeneratePetitionFileInformation(); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.intercept('POST', '**/cases').as('postCase'); + + cy.get('[data-testid="step-6-next-button"]').click(); + cy.wait('@postCase').then(({ response }) => { + if (!response) throw Error('Did not find response'); + + cy.get('[data-testid="case-link"]').click(); + downloadAndParsePdf('[data-testid="document-download-link-P"]').then( + text => { + expect(text).to.include(response.body.docketNumber); + expect(text).to.include( + 'John Cruz Petitioner v. Commissioner of Internal Revenue Respondent', + ); + expect(text).to.include( + "Petitioner's contact information: John Cruz 123 Test Drive Boulder, CO 12345 Phone: Test Phone", + ); + expect(text).to.include( + "Counsel's contact information: Test Private Practitioner Bogus Barristers 234 Main St Apartment 4 Under the stairs Chicago, IL 61234 Phone: +1 (555) 555-5555 Email: privatePractitioner1@example.com Tax Court Bar No.: PT5432", + ); + expect(text).not.to.include('Service Email'); + expect(text).not.to.include( + 'Register for electronic filing and service', + ); + }, + ); + }); + }); + }); +}); From 75c0d234bef730e9a29b674ebb8f8134e4c877be Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 13 Sep 2024 11:23:38 -0400 Subject: [PATCH 41/65] 10001-design-debt: use correct selector in light of PR feedback --- cypress/helpers/file/upload-file.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress/helpers/file/upload-file.ts b/cypress/helpers/file/upload-file.ts index ec86b64a9fb..6cc96144ea2 100644 --- a/cypress/helpers/file/upload-file.ts +++ b/cypress/helpers/file/upload-file.ts @@ -25,7 +25,7 @@ export function attachFile({ }) { cy.get(selector).attachFile(filePath); if (selectorToAwaitOnSuccess) { - cy.get('loading-overlay').should('not.exist'); + cy.get('[data-testid="loading-overlay"]').should('not.exist'); cy.get(selectorToAwaitOnSuccess).should('exist'); } } From 0c3af28bfab28695faa2914b11da5938c300de65 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Mon, 16 Sep 2024 17:49:46 -0400 Subject: [PATCH 42/65] 10001-design-debt: catch corrupt pdf warnings and ensure cypress mimics production file inputs --- cypress/helpers/file/upload-file.ts | 4 +- .../FileHandlingHelpers/pdfValidation.ts | 40 +++++++++++++++++-- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/cypress/helpers/file/upload-file.ts b/cypress/helpers/file/upload-file.ts index 6cc96144ea2..79349ae6bc1 100644 --- a/cypress/helpers/file/upload-file.ts +++ b/cypress/helpers/file/upload-file.ts @@ -15,6 +15,7 @@ export function attachSamplePdfFile(testId: string) { } export function attachFile({ + encoding, filePath, selector, selectorToAwaitOnSuccess, @@ -22,8 +23,9 @@ export function attachFile({ selector: string; filePath: string; selectorToAwaitOnSuccess?: string; + encoding?: 'binary'; // Use binary for non-text files because it better mimics, e.g., readAsArrayBuffer }) { - cy.get(selector).attachFile(filePath); + cy.get(selector).attachFile({ encoding, filePath }); if (selectorToAwaitOnSuccess) { cy.get('[data-testid="loading-overlay"]').should('not.exist'); cy.get(selectorToAwaitOnSuccess).should('exist'); diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts index 567201c0583..159ea6250ca 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts @@ -38,10 +38,39 @@ export const validatePdf = ({ const fileAsArrayBuffer = new Uint8Array(result as ArrayBuffer); - // We try to load the pdf. If we get any errors, we return an errorInformation accordingly. + // eslint-disable-next-line spellcheck/spell-checker + // As of 2024 September, pdfjs can sometimes render PDFs with invalid characters, + // and it only indicates this by logging a warning via console.log. + // These PDFs are corrupt and should not be allowed to be uploaded. + // Therefore, to catch these warnings, we will temporarily override console.log. + const consoleLog = console.log; + + // We will try to load the PDF. If we get any errors, we will return an errorInformation object accordingly. try { + let pdfIsCorrupt = false; + // We will listen for invalid hex string warnings logged by pdfjs, which indicate a corrupt PDF + console.log = message => { + consoleLog(message); + if (message.includes('Warning: getHexString')) { + pdfIsCorrupt = true; + } + }; + + // Attempt to load the PDF const pdfjs = await applicationContext.getPdfJs(); - await pdfjs.getDocument(fileAsArrayBuffer).promise; + await pdfjs.getDocument({ + data: fileAsArrayBuffer, + isEvalSupported: false, + }).promise; + + // We raise a custom error even if the load was successful + // when invalid hex string warnings were caught + if (pdfIsCorrupt) { + const corruptPdfError = new Error('PDF has invalid characters'); + corruptPdfError.name = 'CorruptPDFException'; + throw corruptPdfError; + } + resolve({ isValid: true }); } catch (err) { if (err instanceof Error) { @@ -53,10 +82,13 @@ export const validatePdf = ({ }, isValid: false, }); - } else if (err.name === 'InvalidPDFException') { + } else if ( + ['InvalidPDFException', 'CorruptPDFException'].includes(err.name) + ) { resolve({ errorInformation: { errorMessageToDisplay: PDF_CORRUPTED_ERROR_MESSAGE, + errorMessageToLog: `${PDF_CORRUPTED_ERROR_MESSAGE} (${err.name})`, errorType: ErrorTypes.CORRUPT_FILE, }, isValid: false, @@ -71,6 +103,8 @@ export const validatePdf = ({ }, isValid: false, }); + } finally { + console.log = consoleLog; } }; From d5341c32fc8de12f400143498e4a6be2c94be163 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Tue, 17 Sep 2024 12:34:29 -0400 Subject: [PATCH 43/65] 10001-design-debt: fix header validation --- .../utilities/validatePdfHeader.test.ts | 40 +++++++++++++++++ .../business/utilities/validatePdfHeader.ts | 15 +++++++ .../FileHandlingHelpers/pdfValidation.test.ts | 44 ++++++++++++++++++- .../FileHandlingHelpers/pdfValidation.ts | 41 +++++++---------- 4 files changed, 113 insertions(+), 27 deletions(-) create mode 100644 shared/src/business/utilities/validatePdfHeader.test.ts create mode 100644 shared/src/business/utilities/validatePdfHeader.ts diff --git a/shared/src/business/utilities/validatePdfHeader.test.ts b/shared/src/business/utilities/validatePdfHeader.test.ts new file mode 100644 index 00000000000..b4bea8cad95 --- /dev/null +++ b/shared/src/business/utilities/validatePdfHeader.test.ts @@ -0,0 +1,40 @@ +import { validatePdfHeader } from '@shared/business/utilities/validatePdfHeader'; + +describe('validatePdfHeader', () => { + const mockLoggerFunc = jest.fn(); + + it('should return true for valid PDF header', () => { + const validPdfData = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]); // %PDF- + + const result = validatePdfHeader(validPdfData, mockLoggerFunc); + + expect(result).toBe(true); + expect(mockLoggerFunc).toHaveBeenCalledWith( + 'pdfHeaderBytes', + validPdfData.slice(0, 5), + ); + expect(mockLoggerFunc).toHaveBeenCalledWith('pdfHeaderString', '%PDF-'); + }); + + it('should return false for invalid PDF header', () => { + const invalidPdfData = new Uint8Array([0x50, 0x44, 0x46, 0x25, 0x2d]); // PFD%- + + const result = validatePdfHeader(invalidPdfData, mockLoggerFunc); + + expect(result).toBe(false); + expect(mockLoggerFunc).toHaveBeenCalledWith( + 'pdfHeaderBytes', + invalidPdfData.slice(0, 5), + ); + expect(mockLoggerFunc).toHaveBeenCalledWith('pdfHeaderString', 'PDF%-'); + }); + + it('should not call loggerFunc if it is not provided', () => { + const validPdfData = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]); // %PDF- + + const result = validatePdfHeader(validPdfData); + + expect(result).toBe(true); + expect(mockLoggerFunc).not.toHaveBeenCalled(); + }); +}); diff --git a/shared/src/business/utilities/validatePdfHeader.ts b/shared/src/business/utilities/validatePdfHeader.ts new file mode 100644 index 00000000000..67c45f4ebad --- /dev/null +++ b/shared/src/business/utilities/validatePdfHeader.ts @@ -0,0 +1,15 @@ +import { StringDecoder } from 'string_decoder'; + +export const validatePdfHeader = ( + pdfData: Uint8Array, + loggerFunc?: (message: any, context?: any) => {}, +): boolean => { + const stringDecoder = new StringDecoder('utf8'); + const pdfHeaderBytes = pdfData.slice(0, 5); + const pdfHeaderString = stringDecoder.write(pdfHeaderBytes); + if (loggerFunc) { + loggerFunc('pdfHeaderBytes', pdfHeaderBytes); + loggerFunc('pdfHeaderString', pdfHeaderString); + } + return pdfHeaderString === '%PDF-'; +}; diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts index 67b8aff9b64..a159ba5e725 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts @@ -3,20 +3,44 @@ import { PDF_CORRUPTED_ERROR_MESSAGE, PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, validatePdf, + validatePdfHeader, } from './pdfValidation'; import { applicationContext } from '@web-client/applicationContext'; +const VALID_PDF_HEADER_BYTES = [0x25, 0x50, 0x44, 0x46, 0x2d]; // %PDF- +const INVALID_PDF_HEADER_BYTES = [0x50, 0x44, 0x46, 0x25, 0x2d]; // %PDF- + +describe('validatePdfHeader', () => { + it('should return true for valid PDF header', () => { + const validPdfData = new Uint8Array(VALID_PDF_HEADER_BYTES); + + const result = validatePdfHeader(validPdfData); + + expect(result).toBe(true); + }); + + it('should return false for invalid PDF header', () => { + const invalidPdfData = new Uint8Array(INVALID_PDF_HEADER_BYTES); + + const result = validatePdfHeader(invalidPdfData); + + expect(result).toBe(false); + }); +}); + describe('validatePdf', () => { let mockFile: File; let mockPdfJs: any; let mockFileReader: any; beforeEach(() => { + jest.restoreAllMocks(); + mockFileReader = { onerror: null, onload: null, readAsArrayBuffer: jest.fn(), - result: new ArrayBuffer(8), + result: VALID_PDF_HEADER_BYTES, }; (global as any).FileReader = jest.fn(() => mockFileReader); @@ -63,6 +87,23 @@ describe('validatePdf', () => { }); }); + it('should return error message for PDF with invalid header', async () => { + const resultPromise = validatePdf({ file: mockFile }); + mockFileReader.result = INVALID_PDF_HEADER_BYTES; + mockFileReader.onload(); + + const result = await resultPromise; + + expect(result).toEqual({ + errorInformation: { + errorMessageToDisplay: PDF_CORRUPTED_ERROR_MESSAGE, + errorMessageToLog: `${PDF_CORRUPTED_ERROR_MESSAGE} (CorruptPDFHeaderException)`, + errorType: ErrorTypes.CORRUPT_FILE, + }, + isValid: false, + }); + }); + it('should return error message for corrupted PDF', async () => { const error = new Error(); error.name = 'InvalidPDFException'; @@ -77,6 +118,7 @@ describe('validatePdf', () => { expect(result).toEqual({ errorInformation: { errorMessageToDisplay: PDF_CORRUPTED_ERROR_MESSAGE, + errorMessageToLog: `${PDF_CORRUPTED_ERROR_MESSAGE} (InvalidPDFException)`, errorType: ErrorTypes.CORRUPT_FILE, }, isValid: false, diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts index 159ea6250ca..36ac220b72f 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts @@ -12,6 +12,13 @@ export const PDF_CORRUPTED_ERROR_MESSAGE = const GENERIC_FILE_ERROR_MESSAGE = 'There is a problem uploading the file. Try again later.'; +export const validatePdfHeader = (pdfData: Uint8Array): boolean => { + const stringDecoder = new TextDecoder('utf8'); + const pdfHeaderBytes = pdfData.slice(0, 5); + const pdfHeaderString = stringDecoder.decode(pdfHeaderBytes); + return pdfHeaderString === '%PDF-'; +}; + export const validatePdf = ({ file, }: { @@ -38,23 +45,13 @@ export const validatePdf = ({ const fileAsArrayBuffer = new Uint8Array(result as ArrayBuffer); - // eslint-disable-next-line spellcheck/spell-checker - // As of 2024 September, pdfjs can sometimes render PDFs with invalid characters, - // and it only indicates this by logging a warning via console.log. - // These PDFs are corrupt and should not be allowed to be uploaded. - // Therefore, to catch these warnings, we will temporarily override console.log. - const consoleLog = console.log; - // We will try to load the PDF. If we get any errors, we will return an errorInformation object accordingly. try { - let pdfIsCorrupt = false; - // We will listen for invalid hex string warnings logged by pdfjs, which indicate a corrupt PDF - console.log = message => { - consoleLog(message); - if (message.includes('Warning: getHexString')) { - pdfIsCorrupt = true; - } - }; + if (!validatePdfHeader(fileAsArrayBuffer)) { + const corruptPdfError = new Error('PDF header is invalid'); + corruptPdfError.name = 'CorruptPDFHeaderException'; + throw corruptPdfError; + } // Attempt to load the PDF const pdfjs = await applicationContext.getPdfJs(); @@ -63,14 +60,6 @@ export const validatePdf = ({ isEvalSupported: false, }).promise; - // We raise a custom error even if the load was successful - // when invalid hex string warnings were caught - if (pdfIsCorrupt) { - const corruptPdfError = new Error('PDF has invalid characters'); - corruptPdfError.name = 'CorruptPDFException'; - throw corruptPdfError; - } - resolve({ isValid: true }); } catch (err) { if (err instanceof Error) { @@ -83,7 +72,9 @@ export const validatePdf = ({ isValid: false, }); } else if ( - ['InvalidPDFException', 'CorruptPDFException'].includes(err.name) + ['InvalidPDFException', 'CorruptPDFHeaderException'].includes( + err.name, + ) ) { resolve({ errorInformation: { @@ -103,8 +94,6 @@ export const validatePdf = ({ }, isValid: false, }); - } finally { - console.log = consoleLog; } }; From 5ea72c315d619d6c0afc76dec314b2dd9959a359 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Tue, 17 Sep 2024 12:45:54 -0400 Subject: [PATCH 44/65] 10001-design-debt: update branch to mimic test changes --- .../src/views/FileHandlingHelpers/pdfValidation.test.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts index a159ba5e725..6177d1a25e7 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts @@ -8,7 +8,7 @@ import { import { applicationContext } from '@web-client/applicationContext'; const VALID_PDF_HEADER_BYTES = [0x25, 0x50, 0x44, 0x46, 0x2d]; // %PDF- -const INVALID_PDF_HEADER_BYTES = [0x50, 0x44, 0x46, 0x25, 0x2d]; // %PDF- +const INVALID_PDF_HEADER_BYTES = [0x50, 0x44, 0x46, 0x25, 0x2d]; // PFD%- describe('validatePdfHeader', () => { it('should return true for valid PDF header', () => { @@ -34,8 +34,6 @@ describe('validatePdf', () => { let mockFileReader: any; beforeEach(() => { - jest.restoreAllMocks(); - mockFileReader = { onerror: null, onload: null, From 335130a5360b6c5e261e97b73dfec826e339ba59 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Thu, 19 Sep 2024 13:00:36 -0400 Subject: [PATCH 45/65] 10001-design-debt: update troubleshooting link --- shared/src/business/entities/EntityConstants.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shared/src/business/entities/EntityConstants.ts b/shared/src/business/entities/EntityConstants.ts index b55ff1708c4..d24527c6abe 100644 --- a/shared/src/business/entities/EntityConstants.ts +++ b/shared/src/business/entities/EntityConstants.ts @@ -1732,5 +1732,6 @@ export const STATUS_REPORT_ORDER_OPTIONS = { export const TROUBLESHOOTING_INFO = { APP_SUPPORT_EMAIL: 'dawson.support@ustaxcourt.gov', - FILE_UPLOAD_TROUBLESHOOTING_LINK: '', // TODO 10001 + FILE_UPLOAD_TROUBLESHOOTING_LINK: + 'https://ustaxcourt.gov/dawson_faqs_case_management.html#FileUpload', }; From 1d97e635f9dcf07b8fc0154883d32e78fef22ad3 Mon Sep 17 00:00:00 2001 From: Jim Lerza Date: Thu, 19 Sep 2024 20:15:58 -0400 Subject: [PATCH 46/65] opex: added a script to quickly revoke a petitioner's e-access to a single case. --- scripts/user/revoke-e-access.ts | 57 +++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 scripts/user/revoke-e-access.ts diff --git a/scripts/user/revoke-e-access.ts b/scripts/user/revoke-e-access.ts new file mode 100644 index 00000000000..3a9beacc966 --- /dev/null +++ b/scripts/user/revoke-e-access.ts @@ -0,0 +1,57 @@ +// Usage: npx ts-node --transpile-only scripts/user/revoke-e-access.ts 432143213-4321-1234-4321-432143214321 101-23 + +import { Case } from '@shared/business/entities/cases/Case'; +import { createApplicationContext } from '@web-api/applicationContext'; +import { getCaseByDocketNumber } from '@web-api/persistence/dynamo/cases/getCaseByDocketNumber'; + +const userId = process.argv[2]; +const docketNumber = process.argv[3]; + +if (!userId || !docketNumber) { + console.error('Error: missing docket number or user id.'); + console.log( + 'Usage:\nnpx ts-node --transpile-only scripts/user/revoke-e-access.ts 432143213-4321-1234-4321-432143214321 101-23', + ); + process.exit(1); +} + +// eslint-disable-next-line @typescript-eslint/no-floating-promises +(async () => { + const applicationContext = createApplicationContext({}); + + const rawCase = await getCaseByDocketNumber({ + applicationContext, + docketNumber, + }); + if (!rawCase.docketNumber) { + console.error(`Error: Unable to find case ${docketNumber}.`); + process.exit(1); + } + + const offendingPetitioner = rawCase.petitioners.find( + p => p.contactId === userId, + ); + if (!offendingPetitioner) { + console.error( + `Error: Unable to find petitioner with id ${userId} in case ${docketNumber}.`, + ); + process.exit(1); + } + + offendingPetitioner.serviceIndicator = 'Paper'; + delete offendingPetitioner.email; + const caseToUpdate = new Case(rawCase, { authorizedUser: undefined }) + .validate() + .toRawObject(); + + await applicationContext + .getPersistenceGateway() + .updateCase({ applicationContext, caseToUpdate }); + await applicationContext + .getPersistenceGateway() + .deleteUserFromCase({ applicationContext, docketNumber, userId }); + + console.log( + `Electronic access to case ${docketNumber} has been revoked for ${offendingPetitioner.name}.`, + ); +})(); From cf8d1dbf6ed4d5521f25fbf72704cd6a94907dd6 Mon Sep 17 00:00:00 2001 From: Jim Lerza Date: Fri, 20 Sep 2024 08:47:49 -0400 Subject: [PATCH 47/65] opex: check for env vars before executing the AWS calls in the revoke-e-access script. --- scripts/user/revoke-e-access.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/user/revoke-e-access.ts b/scripts/user/revoke-e-access.ts index 3a9beacc966..2881a815f0c 100644 --- a/scripts/user/revoke-e-access.ts +++ b/scripts/user/revoke-e-access.ts @@ -3,6 +3,7 @@ import { Case } from '@shared/business/entities/cases/Case'; import { createApplicationContext } from '@web-api/applicationContext'; import { getCaseByDocketNumber } from '@web-api/persistence/dynamo/cases/getCaseByDocketNumber'; +import { requireEnvVars } from '../../shared/admin-tools/util'; const userId = process.argv[2]; const docketNumber = process.argv[3]; @@ -14,6 +15,7 @@ if (!userId || !docketNumber) { ); process.exit(1); } +requireEnvVars(['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'ENV']); // eslint-disable-next-line @typescript-eslint/no-floating-promises (async () => { From 27c260d4f4d84415f8a1c901800ba6f75503c21e Mon Sep 17 00:00:00 2001 From: Jim Lerza Date: Fri, 20 Sep 2024 10:55:21 -0400 Subject: [PATCH 48/65] opex: when revoking a petitioner's e-access, overwrite their contactId with a newly-generated uuid. --- scripts/user/revoke-e-access.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/user/revoke-e-access.ts b/scripts/user/revoke-e-access.ts index 2881a815f0c..63d7cd3a7d8 100644 --- a/scripts/user/revoke-e-access.ts +++ b/scripts/user/revoke-e-access.ts @@ -3,6 +3,7 @@ import { Case } from '@shared/business/entities/cases/Case'; import { createApplicationContext } from '@web-api/applicationContext'; import { getCaseByDocketNumber } from '@web-api/persistence/dynamo/cases/getCaseByDocketNumber'; +import { getUniqueId } from '@shared/sharedAppContext'; import { requireEnvVars } from '../../shared/admin-tools/util'; const userId = process.argv[2]; @@ -40,6 +41,7 @@ requireEnvVars(['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'ENV']); process.exit(1); } + offendingPetitioner.contactId = getUniqueId(); offendingPetitioner.serviceIndicator = 'Paper'; delete offendingPetitioner.email; const caseToUpdate = new Case(rawCase, { authorizedUser: undefined }) From 0b7a44d39c32125c453b68a0cfeb0ab0ab7b61d0 Mon Sep 17 00:00:00 2001 From: Missy Westereng Date: Fri, 20 Sep 2024 13:11:54 -0500 Subject: [PATCH 49/65] updated QC process flow chart pdf --- docs/wiki/Petitions-Clerk-QC-Process-Flow.pdf | Bin 0 -> 110955 bytes docs/wiki/UX-Documentation.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/wiki/Petitions-Clerk-QC-Process-Flow.pdf diff --git a/docs/wiki/Petitions-Clerk-QC-Process-Flow.pdf b/docs/wiki/Petitions-Clerk-QC-Process-Flow.pdf new file mode 100644 index 0000000000000000000000000000000000000000..afacbdd14724f475aab34616a1bee42a2db89ded GIT binary patch literal 110955 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≷(89A1SH;qZ*9JJR0ah11MUbBRcj=A( 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 TC6OU Date: Mon, 23 Sep 2024 10:08:00 -0600 Subject: [PATCH 50/65] dep-updates-09-23-2024: update package.json via outdated. --- package-lock.json | 9025 ++++++++++++++++++++++----------------------- package.json | 88 +- 2 files changed, 4535 insertions(+), 4578 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff7e8c87a34..3a8e56237db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,33 +12,33 @@ "dependencies": { "@18f/us-federal-holidays": "4.0.0", "@aws-crypto/sha256-browser": "5.2.0", - "@aws-sdk/client-api-gateway": "3.650.0", - "@aws-sdk/client-apigatewaymanagementapi": "3.650.0", - "@aws-sdk/client-apigatewayv2": "3.650.0", - "@aws-sdk/client-cloudfront": "3.650.0", - "@aws-sdk/client-cloudwatch": "3.650.0", - "@aws-sdk/client-cloudwatch-logs": "3.650.0", - "@aws-sdk/client-cognito-identity-provider": "3.650.0", - "@aws-sdk/client-dynamodb": "3.650.0", - "@aws-sdk/client-dynamodb-streams": "3.650.0", - "@aws-sdk/client-glue": "3.650.0", - "@aws-sdk/client-lambda": "3.650.0", - "@aws-sdk/client-opensearch": "3.650.0", - "@aws-sdk/client-route-53": "3.650.0", - "@aws-sdk/client-s3": "3.650.0", - "@aws-sdk/client-ses": "3.650.0", - "@aws-sdk/client-sns": "3.650.0", - "@aws-sdk/client-sqs": "3.650.0", - "@aws-sdk/client-ssm": "3.650.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/lib-dynamodb": "3.650.0", - "@aws-sdk/lib-storage": "3.650.0", + "@aws-sdk/client-api-gateway": "3.654.0", + "@aws-sdk/client-apigatewaymanagementapi": "3.654.0", + "@aws-sdk/client-apigatewayv2": "3.654.0", + "@aws-sdk/client-cloudfront": "3.654.0", + "@aws-sdk/client-cloudwatch": "3.654.0", + "@aws-sdk/client-cloudwatch-logs": "3.654.0", + "@aws-sdk/client-cognito-identity-provider": "3.654.0", + "@aws-sdk/client-dynamodb": "3.656.0", + "@aws-sdk/client-dynamodb-streams": "3.654.0", + "@aws-sdk/client-glue": "3.655.0", + "@aws-sdk/client-lambda": "3.656.0", + "@aws-sdk/client-opensearch": "3.654.0", + "@aws-sdk/client-route-53": "3.654.0", + "@aws-sdk/client-s3": "3.654.0", + "@aws-sdk/client-ses": "3.654.0", + "@aws-sdk/client-sns": "3.654.0", + "@aws-sdk/client-sqs": "3.654.0", + "@aws-sdk/client-ssm": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/lib-dynamodb": "3.656.0", + "@aws-sdk/lib-storage": "3.654.0", "@aws-sdk/node-http-handler": "3.374.0", "@aws-sdk/protocol-http": "3.374.0", - "@aws-sdk/s3-presigned-post": "3.650.0", - "@aws-sdk/s3-request-presigner": "3.650.0", + "@aws-sdk/s3-presigned-post": "3.654.0", + "@aws-sdk/s3-request-presigner": "3.654.0", "@aws-sdk/signature-v4": "3.374.0", - "@aws-sdk/util-dynamodb": "3.650.0", + "@aws-sdk/util-dynamodb": "3.656.0", "@cerebral/react": "4.2.1", "@fortawesome/fontawesome-svg-core": "1.2.36", "@fortawesome/free-regular-svg-icons": "5.15.4", @@ -49,7 +49,7 @@ "@sparticuz/chromium": "127.0.0", "@uswds/uswds": "3.7.1", "aws-lambda": "1.0.7", - "aws-xray-sdk": "3.10.0", + "aws-xray-sdk": "3.10.1", "axios": "1.7.7", "broadcast-channel": "7.0.0", "canvas": "2.11.2", @@ -63,7 +63,7 @@ "diff-arrays-of-objects": "1.1.9", "english-ordinals": "3.3.0", "export-to-csv": "1.4.0", - "express": "4.20.0", + "express": "4.21.0", "fflate": "0.8.2", "form-data": "4.0.0", "image-blob-reduce": "4.1.0", @@ -87,7 +87,7 @@ "react-number-format": "5.4.2", "react-quill": "2.0.0", "react-responsive": "10.0.0", - "react-select": "5.8.0", + "react-select": "5.8.1", "riot-route": "3.1.4", "sanitize-filename": "1.6.3", "servor": "4.0.2", @@ -100,8 +100,8 @@ "winston": "3.14.2" }, "devDependencies": { - "@aws-sdk/client-iam": "3.650.0", - "@aws-sdk/client-secrets-manager": "3.650.0", + "@aws-sdk/client-iam": "3.654.0", + "@aws-sdk/client-secrets-manager": "3.654.0", "@babel/cli": "7.25.6", "@babel/core": "7.25.2", "@babel/eslint-parser": "7.25.1", @@ -110,20 +110,20 @@ "@babel/preset-typescript": "7.24.7", "@babel/register": "7.24.6", "@cypress/puppeteer": "^0.1.5", - "@faker-js/faker": "9.0.0", + "@faker-js/faker": "9.0.1", "@miovision/eslint-plugin-disallow-date": "2.0.0", "@types/aws-lambda": "8.10.145", - "@types/jest": "29.5.12", + "@types/jest": "29.5.13", "@types/lodash": "4.17.7", "@types/luxon": "3.4.2", - "@types/node": "22.5.4", + "@types/node": "22.5.5", "@types/promise-retry": "1.1.6", - "@types/react": "18.3.5", + "@types/react": "18.3.8", "@types/react-dom": "18.3.0", "@types/uuid": "10.0.0", "@types/websocket": "1.0.10", - "@typescript-eslint/eslint-plugin": "8.5.0", - "@typescript-eslint/parser": "8.5.0", + "@typescript-eslint/eslint-plugin": "8.6.0", + "@typescript-eslint/parser": "8.6.0", "@vendia/serverless-express": "4.12.6", "artillery": "2.0.20", "artillery-plugin-metrics-by-endpoint": "1.14.0", @@ -141,7 +141,7 @@ "decimal.js": "10.4.3", "dynamodb-admin": "4.6.1", "dynamodb-streams-readable": "3.0.0", - "esbuild": "0.23.1", + "esbuild": "0.24.0", "esbuild-css-modules-plugin": "3.1.2", "esbuild-plugin-babel-cached": "0.2.3", "esbuild-plugin-clean": "1.0.1", @@ -159,34 +159,34 @@ "eslint-plugin-jsx-a11y": "6.10.0", "eslint-plugin-prettier": "5.2.1", "eslint-plugin-promise": "7.1.0", - "eslint-plugin-react": "7.35.2", + "eslint-plugin-react": "7.36.1", "eslint-plugin-security": "3.0.1", "eslint-plugin-sort-destructure-keys": "2.0.0", "eslint-plugin-sort-imports-es6-autofix": "0.6.0", "eslint-plugin-sort-keys-fix": "1.1.2", "eslint-plugin-sort-requires-fix": "2.1.2", "eslint-plugin-spellcheck": "0.0.20", - "husky": "9.1.5", + "husky": "9.1.6", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-environment-node": "29.7.0", - "jsdom": "25.0.0", + "jsdom": "25.0.1", "lint-staged": "15.2.10", "lint-staged-shellcheck": "0.1.2", "livereload": "0.9.3", - "nodemon": "3.1.4", + "nodemon": "3.1.7", "pdf2pic": "3.1.3", "pixelmatch": "6.0.0", "pngjs": "7.0.0", - "postcss": "8.4.45", - "postcss-preset-env": "10.0.3", + "postcss": "8.4.47", + "postcss-preset-env": "10.0.5", "prettier": "3.3.3", "puppeteer": "23.0.0", "puppeteer-core": "23.0.0", "readline": "1.3.0", "s3rver": "github:20minutes/s3rver", - "sass": "1.78.0", - "sass-loader": "16.0.1", + "sass": "1.79.3", + "sass-loader": "16.0.2", "shuffle-seed": "1.1.6", "stream-browserify": "3.0.0", "stylelint": "16.9.0", @@ -788,51 +788,51 @@ } }, "node_modules/@aws-sdk/client-api-gateway": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-api-gateway/-/client-api-gateway-3.650.0.tgz", - "integrity": "sha512-3/YHJwB8yGT4fpgxNlcd0C41qCNt5egpK3NpaNCzubpnUOx7H0n2GFtAcmlLlkSwfEVJn1YjqIluft5mt0dbnw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-api-gateway/-/client-api-gateway-3.654.0.tgz", + "integrity": "sha512-8MEwsaZzp0br8KKMjR3CKB4X3yRVWcUZc+UADNoYmx1n13hsUoKrbSnNUCIUQcy6FrbTHCyimAcVhZVaK2ccSA==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-sdk-api-gateway": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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-sdk-api-gateway": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", - "@smithy/util-stream": "^3.1.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "@smithy/util-stream": "^3.1.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -841,47 +841,47 @@ } }, "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -889,52 +889,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -943,18 +943,18 @@ } }, "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -963,13 +963,13 @@ } }, "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -977,12 +977,12 @@ } }, "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -990,13 +990,13 @@ } }, "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1004,14 +1004,14 @@ } }, "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1019,15 +1019,15 @@ } }, "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -1035,11 +1035,11 @@ } }, "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1047,13 +1047,13 @@ } }, "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -1061,24 +1061,24 @@ } }, "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1106,49 +1106,49 @@ } }, "node_modules/@aws-sdk/client-apigatewaymanagementapi": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-apigatewaymanagementapi/-/client-apigatewaymanagementapi-3.650.0.tgz", - "integrity": "sha512-6F26cLo2EVwIwCAyHdxh0miuG5VIyc1WKqxJ6soX6LNFX41Sa9F031O4LV7n0VxN/KLN6STVX/PxnmrLm5etnw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-apigatewaymanagementapi/-/client-apigatewaymanagementapi-3.654.0.tgz", + "integrity": "sha512-5bblGFoaRFFxnr8zSdE7zCS6QmZMJdkvUnJMhBjR6X+uIyY+ybQ1C65OQYwo7DciXUOTRx4yLElqBLXNnqZalw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -1157,47 +1157,47 @@ } }, "node_modules/@aws-sdk/client-apigatewaymanagementapi/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -1205,52 +1205,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-apigatewaymanagementapi/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -1259,18 +1259,18 @@ } }, "node_modules/@aws-sdk/client-apigatewaymanagementapi/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -1279,13 +1279,13 @@ } }, "node_modules/@aws-sdk/client-apigatewaymanagementapi/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1293,12 +1293,12 @@ } }, "node_modules/@aws-sdk/client-apigatewaymanagementapi/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1306,13 +1306,13 @@ } }, "node_modules/@aws-sdk/client-apigatewaymanagementapi/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1320,14 +1320,14 @@ } }, "node_modules/@aws-sdk/client-apigatewaymanagementapi/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1335,15 +1335,15 @@ } }, "node_modules/@aws-sdk/client-apigatewaymanagementapi/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -1351,11 +1351,11 @@ } }, "node_modules/@aws-sdk/client-apigatewaymanagementapi/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1363,13 +1363,13 @@ } }, "node_modules/@aws-sdk/client-apigatewaymanagementapi/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -1377,24 +1377,24 @@ } }, "node_modules/@aws-sdk/client-apigatewaymanagementapi/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-apigatewaymanagementapi/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1422,50 +1422,50 @@ } }, "node_modules/@aws-sdk/client-apigatewayv2": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-apigatewayv2/-/client-apigatewayv2-3.650.0.tgz", - "integrity": "sha512-JVib5DD+WVQ1hoD3Oh9ZMriSiog9bsTq2Q3wOR3fIW+8Y4rJS1wA28ao2rXwpcWvAbu79aRpq7R9bNjirev1tg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-apigatewayv2/-/client-apigatewayv2-3.654.0.tgz", + "integrity": "sha512-mymXG3v8qWx0WFY++SKSKAhBM/MisaCZlHnerg+LapFdG7vVNXI5ZsnJa9xx3BhqRddCYnz8PN2Xwi9vHorjUw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", - "@smithy/util-stream": "^3.1.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "@smithy/util-stream": "^3.1.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -1474,47 +1474,47 @@ } }, "node_modules/@aws-sdk/client-apigatewayv2/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -1522,52 +1522,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-apigatewayv2/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -1576,18 +1576,18 @@ } }, "node_modules/@aws-sdk/client-apigatewayv2/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -1596,13 +1596,13 @@ } }, "node_modules/@aws-sdk/client-apigatewayv2/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1610,12 +1610,12 @@ } }, "node_modules/@aws-sdk/client-apigatewayv2/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1623,13 +1623,13 @@ } }, "node_modules/@aws-sdk/client-apigatewayv2/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1637,14 +1637,14 @@ } }, "node_modules/@aws-sdk/client-apigatewayv2/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1652,15 +1652,15 @@ } }, "node_modules/@aws-sdk/client-apigatewayv2/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -1668,11 +1668,11 @@ } }, "node_modules/@aws-sdk/client-apigatewayv2/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1680,13 +1680,13 @@ } }, "node_modules/@aws-sdk/client-apigatewayv2/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -1694,24 +1694,24 @@ } }, "node_modules/@aws-sdk/client-apigatewayv2/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-apigatewayv2/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1739,53 +1739,53 @@ } }, "node_modules/@aws-sdk/client-cloudfront": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.650.0.tgz", - "integrity": "sha512-gamewK+ZWCFp3RBtkPosLaN9+ktWYooZo9JMMllsdfiFS0U+NC/pVc/D4uNhQ7gDPaBJI5OkNGv63yL9b7w9WQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.654.0.tgz", + "integrity": "sha512-AdSusqY4WJVcHpOMPRSpQpcknhOSUfxfAPYaIFkeyFduIGsl5lxvvMfhT4c+37nHFNhP9od1BxZZuaa6idgEDg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@aws-sdk/xml-builder": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/client-sts": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@aws-sdk/xml-builder": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", - "@smithy/util-stream": "^3.1.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "@smithy/util-stream": "^3.1.6", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.3", + "@smithy/util-waiter": "^3.1.5", "tslib": "^2.6.2" }, "engines": { @@ -1793,47 +1793,47 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -1841,52 +1841,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -1895,18 +1895,18 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -1915,13 +1915,13 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1929,12 +1929,12 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1942,13 +1942,13 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1956,14 +1956,14 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1971,15 +1971,15 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -1987,11 +1987,11 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -1999,13 +1999,13 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -2013,24 +2013,24 @@ } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2058,52 +2058,52 @@ } }, "node_modules/@aws-sdk/client-cloudwatch": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.650.0.tgz", - "integrity": "sha512-a8zmxWF6pfXi8icBraYimuHAiOKJ8fO+//XWzVPyc7X/DIFkIUkvlmk1B5WskJY80u3B21QFdPDUv6AlmyARMQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.654.0.tgz", + "integrity": "sha512-2S3D8yF1ldpAoJjZlWXYYBhLnvUM2Vvt0ktKpe2J9y5cBqbs9AsrvdCHEf4eWM+vmfEbOLDOtUblrHpGfPSJkw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-compression": "^3.0.8", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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", + "@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-compression": "^3.0.10", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.3", + "@smithy/util-waiter": "^3.1.5", "tslib": "^2.6.2" }, "engines": { @@ -2111,52 +2111,52 @@ } }, "node_modules/@aws-sdk/client-cloudwatch-logs": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.650.0.tgz", - "integrity": "sha512-mPv/u/sIiocmsyVS911lEOc4+NxKBcCWDZYvtbDsTzdw+kaMm8tPtKBb4ZN1eDO01zPf45n1ibycmM24bVueLg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.654.0.tgz", + "integrity": "sha512-a6OMQKTr9XR23GUZ8ldnqKBYPl+ADoNQJJQ/KqIvZbXNKzTzYDaAnl1+B4XC18yl85jyyQb9h6Ih1x5/3s3dsw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/eventstream-serde-browser": "^3.0.7", - "@smithy/eventstream-serde-config-resolver": "^3.0.4", - "@smithy/eventstream-serde-node": "^3.0.6", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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", + "@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-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2", "uuid": "^9.0.1" @@ -2166,47 +2166,47 @@ } }, "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -2214,52 +2214,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -2268,18 +2268,18 @@ } }, "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -2288,13 +2288,13 @@ } }, "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2302,12 +2302,12 @@ } }, "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2315,13 +2315,13 @@ } }, "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2329,14 +2329,14 @@ } }, "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2344,15 +2344,15 @@ } }, "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -2360,11 +2360,11 @@ } }, "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2372,13 +2372,13 @@ } }, "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -2386,24 +2386,24 @@ } }, "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2443,47 +2443,47 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -2491,52 +2491,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -2545,18 +2545,18 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -2565,13 +2565,13 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2579,12 +2579,12 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2592,13 +2592,13 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2606,14 +2606,14 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2621,15 +2621,15 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -2637,11 +2637,11 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2649,13 +2649,13 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -2663,24 +2663,24 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2760,49 +2760,49 @@ } }, "node_modules/@aws-sdk/client-cognito-identity-provider": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity-provider/-/client-cognito-identity-provider-3.650.0.tgz", - "integrity": "sha512-uX8XJVNIHCT0M3PpYM+cJJzhWMVQvUwh294x+WVpn22R/Bg5x1XLo9QVtWiVPhLcQCLN/kYzsz9n3uE5b7YozQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity-provider/-/client-cognito-identity-provider-3.654.0.tgz", + "integrity": "sha512-uJ92MxiqeNVdC0FUYhorPYpvOcxd1WnRThGxyunDU2ypoh6IyAU4mIjs9Wg94bzwbR2demhRg6B8E5F32BtSAw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -2811,47 +2811,47 @@ } }, "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -2859,52 +2859,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -2913,18 +2913,18 @@ } }, "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -2933,13 +2933,13 @@ } }, "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2947,12 +2947,12 @@ } }, "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2960,13 +2960,13 @@ } }, "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2974,14 +2974,14 @@ } }, "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -2989,15 +2989,15 @@ } }, "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -3005,11 +3005,11 @@ } }, "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3017,13 +3017,13 @@ } }, "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -3031,24 +3031,24 @@ } }, "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3112,52 +3112,52 @@ } }, "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.650.0.tgz", - "integrity": "sha512-WdlBZsDJqufse4DcCeAwDV+kP/fh8QgVfH/IsUc0ST534inx9fiztr41/H2rE1qRf7t2iLtVkF5Jm1+Ew+GqPg==", + "version": "3.656.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.656.0.tgz", + "integrity": "sha512-a7nzK4tGZHlg1IY63aGmdSlVLYpdYFwjIDFx3vQwNAzStwh8pbb7Fv8jLFTAi33ZNHM7H4mASwvgFbu8ZfbMVA==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-endpoint-discovery": "3.649.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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-endpoint-discovery": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.3", + "@smithy/util-waiter": "^3.1.5", "tslib": "^2.6.2", "uuid": "^9.0.1" }, @@ -3166,49 +3166,49 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb-streams/-/client-dynamodb-streams-3.650.0.tgz", - "integrity": "sha512-nxyddio6sV3tT1KZPVTkn8K5NmqRFpSysD8XHPJiwLlSIXRX7YClO9TIk517Bh6UF6eR01yjnUAwI9ieslQX/A==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb-streams/-/client-dynamodb-streams-3.654.0.tgz", + "integrity": "sha512-vCsi6D6gtJwY4k3il7Sr6QwW2BpyM0uZpAGYMfoSKpNXlJtN2zmTJ7NOa0qwLcQUzTH8VpsVlcFIvHNlYWkScQ==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -3217,47 +3217,47 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -3265,52 +3265,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -3319,18 +3319,18 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -3339,13 +3339,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3353,12 +3353,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3366,13 +3366,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3380,14 +3380,14 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3395,15 +3395,15 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -3411,11 +3411,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3423,13 +3423,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -3437,24 +3437,24 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3482,47 +3482,47 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -3530,52 +3530,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -3584,18 +3584,18 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -3604,13 +3604,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3618,12 +3618,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3631,13 +3631,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3645,14 +3645,14 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3660,15 +3660,15 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -3676,11 +3676,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3688,13 +3688,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -3702,24 +3702,24 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3759,49 +3759,49 @@ } }, "node_modules/@aws-sdk/client-glue": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-glue/-/client-glue-3.650.0.tgz", - "integrity": "sha512-eR20tQUO6Z9RHcLUY3FCxypL5Pu3DI/ZCvvZemfM4AfY7TAZHj+Dydfb1vz9fWdzZVqnPSyi3s0/ylmX+JIavg==", + "version": "3.655.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-glue/-/client-glue-3.655.0.tgz", + "integrity": "sha512-8K8WlJdgOLzfJj7TBURDPoXiJU2MRtTB+lUgkiW24JGkI84yBwBhVLtaXShdQGMBgXMWpidN8SU4kWQVD5kI3w==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -3810,47 +3810,47 @@ } }, "node_modules/@aws-sdk/client-glue/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -3858,52 +3858,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-glue/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -3912,18 +3912,18 @@ } }, "node_modules/@aws-sdk/client-glue/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -3932,13 +3932,13 @@ } }, "node_modules/@aws-sdk/client-glue/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3946,12 +3946,12 @@ } }, "node_modules/@aws-sdk/client-glue/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3959,13 +3959,13 @@ } }, "node_modules/@aws-sdk/client-glue/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3973,14 +3973,14 @@ } }, "node_modules/@aws-sdk/client-glue/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -3988,15 +3988,15 @@ } }, "node_modules/@aws-sdk/client-glue/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -4004,11 +4004,11 @@ } }, "node_modules/@aws-sdk/client-glue/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4016,13 +4016,13 @@ } }, "node_modules/@aws-sdk/client-glue/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -4030,24 +4030,24 @@ } }, "node_modules/@aws-sdk/client-glue/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-glue/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4075,52 +4075,52 @@ } }, "node_modules/@aws-sdk/client-iam": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-iam/-/client-iam-3.650.0.tgz", - "integrity": "sha512-LVXeP5ArnSWQK846U8q/v0+WrbIuJtUvkm9KSlcqWpDGgoN/u6SoMM/9D75olxgSXwKP5NQj9LNNP+BSQb7vGg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-iam/-/client-iam-3.654.0.tgz", + "integrity": "sha512-gPYqj+gen9wTMjGtJM+qiL55/0q6TwjYIOzciunY4+d6B8xsz/k98G84tTlQ2yZ8Fi94DLjZFAw0VVumxlceqQ==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.3", + "@smithy/util-waiter": "^3.1.5", "tslib": "^2.6.2" }, "engines": { @@ -4128,48 +4128,48 @@ } }, "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -4177,53 +4177,53 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -4232,19 +4232,19 @@ } }, "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dev": true, - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dev": true, + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -4253,14 +4253,14 @@ } }, "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4268,13 +4268,13 @@ } }, "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4282,14 +4282,14 @@ } }, "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4297,15 +4297,15 @@ } }, "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4313,16 +4313,16 @@ } }, "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -4330,12 +4330,12 @@ } }, "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dev": true, "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4343,14 +4343,14 @@ } }, "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -4358,26 +4358,26 @@ } }, "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4406,55 +4406,55 @@ } }, "node_modules/@aws-sdk/client-lambda": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.650.0.tgz", - "integrity": "sha512-u8fqVod+EeMXxal72TbDWPAnMpmGvo1Z3P07qZ6M+dm5FkwUVzRhDkp8jLokwsIzlSt0lkasqDhn97rZLfgTZg==", + "version": "3.656.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.656.0.tgz", + "integrity": "sha512-tpJDNpMa4G3TTjBEimBkczM/obxWwrYo88BD5/iwmxQ9LUpBLrGfbH3e1YU5vxhEvGWzNUvP7IGbIif7EvaqpQ==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/eventstream-serde-browser": "^3.0.7", - "@smithy/eventstream-serde-config-resolver": "^3.0.4", - "@smithy/eventstream-serde-node": "^3.0.6", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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", + "@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-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", - "@smithy/util-stream": "^3.1.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "@smithy/util-stream": "^3.1.6", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.3", + "@smithy/util-waiter": "^3.1.5", "tslib": "^2.6.2" }, "engines": { @@ -4462,47 +4462,47 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -4510,52 +4510,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -4564,18 +4564,18 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -4584,13 +4584,13 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4598,12 +4598,12 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4611,13 +4611,13 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4625,14 +4625,14 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4640,15 +4640,15 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -4656,11 +4656,11 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4668,13 +4668,13 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -4682,24 +4682,24 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4727,49 +4727,49 @@ } }, "node_modules/@aws-sdk/client-opensearch": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-opensearch/-/client-opensearch-3.650.0.tgz", - "integrity": "sha512-+pQcgwJfW26Vtzx5K4I3xUD1ogssxUMmVNMZNSpFZEDdw9J9zFXellfOLBfGCAgY05PF0vItDn14aRt5oKKxwQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-opensearch/-/client-opensearch-3.654.0.tgz", + "integrity": "sha512-RoQST8E66RZSSysFUGNEdWvAHR3o+lUxOsE7c5GP0TuEc+nNRiXy6yWz2Z6HXK1DgFaOUk4yrPhfUM8ybn5nIQ==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -4778,47 +4778,47 @@ } }, "node_modules/@aws-sdk/client-opensearch/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -4826,52 +4826,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-opensearch/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -4880,18 +4880,18 @@ } }, "node_modules/@aws-sdk/client-opensearch/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -4900,13 +4900,13 @@ } }, "node_modules/@aws-sdk/client-opensearch/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4914,12 +4914,12 @@ } }, "node_modules/@aws-sdk/client-opensearch/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4927,13 +4927,13 @@ } }, "node_modules/@aws-sdk/client-opensearch/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4941,14 +4941,14 @@ } }, "node_modules/@aws-sdk/client-opensearch/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4956,15 +4956,15 @@ } }, "node_modules/@aws-sdk/client-opensearch/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -4972,11 +4972,11 @@ } }, "node_modules/@aws-sdk/client-opensearch/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -4984,13 +4984,13 @@ } }, "node_modules/@aws-sdk/client-opensearch/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -4998,24 +4998,24 @@ } }, "node_modules/@aws-sdk/client-opensearch/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-opensearch/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5043,53 +5043,53 @@ } }, "node_modules/@aws-sdk/client-route-53": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-route-53/-/client-route-53-3.650.0.tgz", - "integrity": "sha512-QozlZaGvUL/+CWV1envjWvYwkqTf0y9GlHbV06EEU4VQCgY7x33ur48T7XTfIyVeihLDhVw9/t8FbotHhYO5/Q==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-route-53/-/client-route-53-3.654.0.tgz", + "integrity": "sha512-3HX6FvoFMEVPYwmseCzFlRmjCtX4GbErAA+nQAzust745Jk2Hh6zKWtzmfnO8Y2o6kyDPVo3p6I/+ePHlwHWFw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-sdk-route53": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@aws-sdk/xml-builder": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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-sdk-route53": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@aws-sdk/xml-builder": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.3", + "@smithy/util-waiter": "^3.1.5", "tslib": "^2.6.2" }, "engines": { @@ -5097,47 +5097,47 @@ } }, "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -5145,52 +5145,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -5199,18 +5199,18 @@ } }, "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -5219,13 +5219,13 @@ } }, "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5233,12 +5233,12 @@ } }, "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5246,13 +5246,13 @@ } }, "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5260,14 +5260,14 @@ } }, "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5275,15 +5275,15 @@ } }, "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -5291,11 +5291,11 @@ } }, "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5303,13 +5303,13 @@ } }, "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -5317,24 +5317,24 @@ } }, "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5362,67 +5362,67 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.650.0.tgz", - "integrity": "sha512-6ZfkDu2FMOtYPV1ah5vWMqFKNKEqlBQ3/NOVvLGscU1dR0ybbOwwm4ywWofZmz72uOts5NGqe12kzohb/AsGAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.654.0.tgz", + "integrity": "sha512-EsyeZJhkZD2VMdZpNt4NhlQ3QUAF24gMC+5w2wpGg6Yw+Bv7VLdg1t3PkTQovriJX1KTJAYHcGAuy92OFmWIng==", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-bucket-endpoint": "3.649.0", - "@aws-sdk/middleware-expect-continue": "3.649.0", - "@aws-sdk/middleware-flexible-checksums": "3.649.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-location-constraint": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-sdk-s3": "3.649.0", - "@aws-sdk/middleware-ssec": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/signature-v4-multi-region": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@aws-sdk/xml-builder": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/eventstream-serde-browser": "^3.0.7", - "@smithy/eventstream-serde-config-resolver": "^3.0.4", - "@smithy/eventstream-serde-node": "^3.0.6", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-blob-browser": "^3.1.3", - "@smithy/hash-node": "^3.0.4", - "@smithy/hash-stream-node": "^3.1.3", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/md5-js": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/client-sts": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-bucket-endpoint": "3.654.0", + "@aws-sdk/middleware-expect-continue": "3.654.0", + "@aws-sdk/middleware-flexible-checksums": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-location-constraint": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-sdk-s3": "3.654.0", + "@aws-sdk/middleware-ssec": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/signature-v4-multi-region": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@aws-sdk/xml-builder": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/eventstream-serde-browser": "^3.0.9", + "@smithy/eventstream-serde-config-resolver": "^3.0.6", + "@smithy/eventstream-serde-node": "^3.0.8", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-blob-browser": "^3.1.5", + "@smithy/hash-node": "^3.0.6", + "@smithy/hash-stream-node": "^3.1.5", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/md5-js": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", - "@smithy/util-stream": "^3.1.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "@smithy/util-stream": "^3.1.6", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.3", + "@smithy/util-waiter": "^3.1.5", "tslib": "^2.6.2" }, "engines": { @@ -5430,47 +5430,47 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -5478,52 +5478,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -5532,18 +5532,18 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -5552,13 +5552,13 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5566,12 +5566,12 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5579,13 +5579,13 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5593,14 +5593,14 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5608,15 +5608,15 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -5624,11 +5624,11 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5636,13 +5636,13 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -5650,24 +5650,24 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5695,50 +5695,50 @@ } }, "node_modules/@aws-sdk/client-secrets-manager": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.650.0.tgz", - "integrity": "sha512-9Id73Z98s8h6Ngex4y9KeaD1FFynTYVcpV+JYRh0yq6I/3Z3kPvyIPg2R/EXDof9sVbngi52dlPLsubMb5sV/A==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.654.0.tgz", + "integrity": "sha512-Fua3kW8XCU2+gWcv8vHpsaR5g4ABuE4/tqv2B7vbMThLZ2Aam6Rw9b5dIMhpbje+edhAUBS0x6UyE88zQeHWZQ==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2", "uuid": "^9.0.1" @@ -5748,48 +5748,48 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -5797,53 +5797,53 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -5852,19 +5852,19 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dev": true, - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dev": true, + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -5873,14 +5873,14 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5888,13 +5888,13 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5902,14 +5902,14 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5917,15 +5917,15 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5933,16 +5933,16 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -5950,12 +5950,12 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dev": true, "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -5963,14 +5963,14 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -5978,26 +5978,26 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6039,51 +6039,51 @@ } }, "node_modules/@aws-sdk/client-ses": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ses/-/client-ses-3.650.0.tgz", - "integrity": "sha512-vesMZ9j2Q8B14m4r5veBJy7gsp2C3Lx/XChATTzkgFJ4Kfx0ptcziNG0hm9Zi3I7iMYRfYTKR0e1tEoMPHw8dw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ses/-/client-ses-3.654.0.tgz", + "integrity": "sha512-DeM1ocK/ct98xDiZ5G4weSVDf4r8y+G2VOcJAiq4BnUYI0VGYB8yYkl1/Dy8hjlu2Ow8UgUz719pzBYhJvD9aQ==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.3", + "@smithy/util-waiter": "^3.1.5", "tslib": "^2.6.2" }, "engines": { @@ -6091,47 +6091,47 @@ } }, "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -6139,52 +6139,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -6193,18 +6193,18 @@ } }, "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -6213,13 +6213,13 @@ } }, "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6227,12 +6227,12 @@ } }, "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6240,13 +6240,13 @@ } }, "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6254,14 +6254,14 @@ } }, "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6269,15 +6269,15 @@ } }, "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -6285,11 +6285,11 @@ } }, "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6297,13 +6297,13 @@ } }, "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -6311,24 +6311,24 @@ } }, "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6356,49 +6356,49 @@ } }, "node_modules/@aws-sdk/client-sns": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sns/-/client-sns-3.650.0.tgz", - "integrity": "sha512-4fb2GRBjNdHC5V444QFB5RtKSK1/D42aTTbp1qINxd/RXNYqJrMd//eCyaTp2ayhmOtA/wPaFYLJr72cPv6o3g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sns/-/client-sns-3.654.0.tgz", + "integrity": "sha512-A8VdNcF+G36iEMmpYB4KzSJcVSP5u4U6ic3GifZL/xHz0lxLk4j0GNQc38iJcIA4EGxnI9ji/DcA5d/exOZ5gQ==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -6407,47 +6407,47 @@ } }, "node_modules/@aws-sdk/client-sns/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -6455,52 +6455,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-sns/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -6509,18 +6509,18 @@ } }, "node_modules/@aws-sdk/client-sns/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -6529,13 +6529,13 @@ } }, "node_modules/@aws-sdk/client-sns/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6543,12 +6543,12 @@ } }, "node_modules/@aws-sdk/client-sns/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6556,13 +6556,13 @@ } }, "node_modules/@aws-sdk/client-sns/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6570,14 +6570,14 @@ } }, "node_modules/@aws-sdk/client-sns/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6585,15 +6585,15 @@ } }, "node_modules/@aws-sdk/client-sns/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -6601,11 +6601,11 @@ } }, "node_modules/@aws-sdk/client-sns/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6613,13 +6613,13 @@ } }, "node_modules/@aws-sdk/client-sns/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -6627,24 +6627,24 @@ } }, "node_modules/@aws-sdk/client-sns/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-sns/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6672,51 +6672,51 @@ } }, "node_modules/@aws-sdk/client-sqs": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.650.0.tgz", - "integrity": "sha512-QoWgJ2PQCFI9SNwTw7PM2XeqNfWIS8Nqip25j3JMo3GqiQjbqtR9tVWsf2E5V4XqmnpCC398PaY5eMwixRdLfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.654.0.tgz", + "integrity": "sha512-YpVvieMQy7zzEV5rxHoXCml8CSnRzZWfgfqcYfhHkhDZ+z04KjD2mfBy6DS1HlPCbQXSIH7RslsYuyze7j8OFQ==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-sdk-sqs": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/md5-js": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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-sdk-sqs": "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/md5-js": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -6725,47 +6725,47 @@ } }, "node_modules/@aws-sdk/client-sqs/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -6773,52 +6773,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-sqs/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -6827,18 +6827,18 @@ } }, "node_modules/@aws-sdk/client-sqs/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -6847,13 +6847,13 @@ } }, "node_modules/@aws-sdk/client-sqs/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6861,12 +6861,12 @@ } }, "node_modules/@aws-sdk/client-sqs/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6874,13 +6874,13 @@ } }, "node_modules/@aws-sdk/client-sqs/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6888,14 +6888,14 @@ } }, "node_modules/@aws-sdk/client-sqs/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6903,15 +6903,15 @@ } }, "node_modules/@aws-sdk/client-sqs/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -6919,11 +6919,11 @@ } }, "node_modules/@aws-sdk/client-sqs/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6931,13 +6931,13 @@ } }, "node_modules/@aws-sdk/client-sqs/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -6945,24 +6945,24 @@ } }, "node_modules/@aws-sdk/client-sqs/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-sqs/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -6990,51 +6990,51 @@ } }, "node_modules/@aws-sdk/client-ssm": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.650.0.tgz", - "integrity": "sha512-TXHJqspaS4/89u4lFwsLUOmkfPq4igkfpXKi7MH5BD6SiKsTIq8zgF1RqlOD0QjoJL675UlzLsD5F9H9H5xj9A==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.654.0.tgz", + "integrity": "sha512-Lg+BvIcD+fol1Jke8GcPLofwJAs6gzLeXvHijI9lEIeTvtIJYG8QANG435StEEGHMsAeSVrmoVT9UHOwLnM/KA==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/client-sts": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@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", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.3", + "@smithy/util-waiter": "^3.1.5", "tslib": "^2.6.2", "uuid": "^9.0.1" }, @@ -7043,47 +7043,47 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -7091,52 +7091,52 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -7145,18 +7145,18 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -7165,13 +7165,13 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -7179,12 +7179,12 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -7192,13 +7192,13 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -7206,14 +7206,14 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -7221,15 +7221,15 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -7237,11 +7237,11 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -7249,13 +7249,13 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -7263,24 +7263,24 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -7654,21 +7654,21 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.650.0.tgz", - "integrity": "sha512-uBra5YjzS/gWSekAogfqJfY6c+oKQkkou7Cjc4d/cpMNvQtF1IBdekJ7NaE1RfsDEz3uH1+Myd07YWZAJo/2Qw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.654.0.tgz", + "integrity": "sha512-wPV7CNYaXDEc+SS+3R0v8SZwkHRUE1z2k2j1d49tH5QBDT4tb/k2V/biXWkwSk3hbR+IMWXmuhJDv/5lybhIvg==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.649.0", - "@aws-sdk/credential-provider-http": "3.649.0", - "@aws-sdk/credential-provider-ini": "3.650.0", - "@aws-sdk/credential-provider-process": "3.649.0", - "@aws-sdk/credential-provider-sso": "3.650.0", - "@aws-sdk/credential-provider-web-identity": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@smithy/credential-provider-imds": "^3.2.1", - "@smithy/property-provider": "^3.1.4", - "@smithy/shared-ini-file-loader": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/credential-provider-env": "3.654.0", + "@aws-sdk/credential-provider-http": "3.654.0", + "@aws-sdk/credential-provider-ini": "3.654.0", + "@aws-sdk/credential-provider-process": "3.654.0", + "@aws-sdk/credential-provider-sso": "3.654.0", + "@aws-sdk/credential-provider-web-identity": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@smithy/credential-provider-imds": "^3.2.3", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -7676,46 +7676,46 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/client-sso": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.650.0.tgz", - "integrity": "sha512-YKm14gCMChD/jlCisFlsVqB8HJujR41bl4Fup2crHwNJxhD/9LTnzwMiVVlBqlXr41Sfa6fSxczX2AMP8NM14A==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.654.0.tgz", + "integrity": "sha512-4kBxs2IzCDtj6a6lRXa/lXK5wWpMGzwKtb+HMXf/rJYVM6x7wYRzc1hYrOd3DYkFQ/sR3dUFj+0mTP0os3aAbA==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -7724,48 +7724,48 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.650.0.tgz", - "integrity": "sha512-6J7IS0f8ovhvbIAZaynOYP+jPX8344UlTjwHxjaXHgFvI8axu3+NslKtEEV5oHLhgzDvrKbinsu5lgE2n4Sqng==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.654.0.tgz", + "integrity": "sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==", "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -7773,53 +7773,53 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/client-sts": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.650.0.tgz", - "integrity": "sha512-ISK0ZQYA7O5/WYgslpWy956lUBudGC9d7eL0FFbiL0j50N80Gx3RUv22ezvZgxJWE0W3DqNr4CE19sPYn4Lw8g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.654.0.tgz", + "integrity": "sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==", "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.650.0", - "@aws-sdk/core": "3.649.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/middleware-host-header": "3.649.0", - "@aws-sdk/middleware-logger": "3.649.0", - "@aws-sdk/middleware-recursion-detection": "3.649.0", - "@aws-sdk/middleware-user-agent": "3.649.0", - "@aws-sdk/region-config-resolver": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@aws-sdk/util-user-agent-browser": "3.649.0", - "@aws-sdk/util-user-agent-node": "3.649.0", - "@smithy/config-resolver": "^3.0.6", - "@smithy/core": "^2.4.1", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/hash-node": "^3.0.4", - "@smithy/invalid-dependency": "^3.0.4", - "@smithy/middleware-content-length": "^3.0.6", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@aws-sdk/client-sso-oidc": "3.654.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.3", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.18", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.16", - "@smithy/util-defaults-mode-node": "^3.0.16", - "@smithy/util-endpoints": "^2.1.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.18", + "@smithy/util-defaults-mode-node": "^3.0.18", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -7828,18 +7828,18 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -7848,13 +7848,13 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.649.0.tgz", - "integrity": "sha512-tViwzM1dauksA3fdRjsg0T8mcHklDa8EfveyiQKK6pUJopkqV6FQx+X5QNda0t/LrdEVlFZvwHNdXqOEfc83TA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.654.0.tgz", + "integrity": "sha512-kogsx3Ql81JouHS7DkheCDU9MYAvK0AokxjcshDveGmf7BbgbWCA8Fnb9wjQyNDaOXNvkZu8Z8rgkX91z324/w==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/property-provider": "^3.1.4", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -7862,18 +7862,18 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.649.0.tgz", - "integrity": "sha512-ODAJ+AJJq6ozbns6ejGbicpsQ0dyMOpnGlg0J9J0jITQ05DKQZ581hdB8APDOZ9N8FstShP6dLZflSj8jb5fNA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.654.0.tgz", + "integrity": "sha512-tgmAH4MBi/aDR882lfw48+tDV95ZH3GWc1Eoe6DpNLiM3GN2VfU/cZwuHmi6aq+vAbdIlswBHJ/+va0fOvlyjw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-stream": "^3.1.4", + "@aws-sdk/types": "3.654.0", + "@smithy/fetch-http-handler": "^3.2.7", + "@smithy/node-http-handler": "^3.2.2", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-stream": "^3.1.6", "tslib": "^2.6.2" }, "engines": { @@ -7881,38 +7881,38 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.650.0.tgz", - "integrity": "sha512-x2M9buZxIsKuUbuDgkGHhAKYBpn0/rYdKlwuFuOhXyyAcnhvPj0lgNF2KE4ld/GF1mKr7FF/uV3G9lM6PFaYmA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.654.0.tgz", + "integrity": "sha512-DKSdaNu2hwdmuvnm9KnA0NLqMWxxmxSOLWjSUSoFIm++wGXUjPrRMFYKvMktaXnPuyf5my8gF/yGbwzPZ8wlTg==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.649.0", - "@aws-sdk/credential-provider-http": "3.649.0", - "@aws-sdk/credential-provider-process": "3.649.0", - "@aws-sdk/credential-provider-sso": "3.650.0", - "@aws-sdk/credential-provider-web-identity": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@smithy/credential-provider-imds": "^3.2.1", - "@smithy/property-provider": "^3.1.4", - "@smithy/shared-ini-file-loader": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/credential-provider-env": "3.654.0", + "@aws-sdk/credential-provider-http": "3.654.0", + "@aws-sdk/credential-provider-process": "3.654.0", + "@aws-sdk/credential-provider-sso": "3.654.0", + "@aws-sdk/credential-provider-web-identity": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@smithy/credential-provider-imds": "^3.2.3", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.650.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.649.0.tgz", - "integrity": "sha512-6VYPQpEVpU+6DDS/gLoI40ppuNM5RPIEprK30qZZxnhTr5wyrGOeJ7J7wbbwPOZ5dKwta290BiJDU2ipV8Y9BQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.654.0.tgz", + "integrity": "sha512-PmQoo8sZ9Q2Ow8OMzK++Z9lI7MsRUG7sNq3E72DVA215dhtTICTDQwGlXH2AAmIp7n+G9LLRds+4wo2ehG4mkg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/property-provider": "^3.1.4", - "@smithy/shared-ini-file-loader": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -7920,16 +7920,16 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.650.0.tgz", - "integrity": "sha512-069nkhcwximbvyGiAC6Fr2G+yrG/p1S3NQ5BZ2cMzB1hgUKo6TvgFK7nriYI4ljMQ+UWxqPwIdTqiUmn2iJmhg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.654.0.tgz", + "integrity": "sha512-7GFme6fWEdA/XYKzZPOAdj/jS6fMBy1NdSIZsDXikS0v9jU+ZzHrAaWt13YLzHyjgxB9Sg9id9ncdY1IiubQXQ==", "dependencies": { - "@aws-sdk/client-sso": "3.650.0", - "@aws-sdk/token-providers": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@smithy/property-provider": "^3.1.4", - "@smithy/shared-ini-file-loader": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/client-sso": "3.654.0", + "@aws-sdk/token-providers": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -7937,30 +7937,30 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.649.0.tgz", - "integrity": "sha512-XVk3WsDa0g3kQFPmnCH/LaCtGY/0R2NDv7gscYZSXiBZcG/fixasglTprgWSp8zcA0t7tEIGu9suyjz8ZwhymQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.654.0.tgz", + "integrity": "sha512-6a2g9gMtZToqSu+CusjNK5zvbLJahQ9di7buO3iXgbizXpLXU1rnawCpWxwslMpT5fLgMSKDnKDrr6wdEk7jSw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/property-provider": "^3.1.4", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.649.0" + "@aws-sdk/client-sts": "^3.654.0" } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.649.0.tgz", - "integrity": "sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -7968,12 +7968,12 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/middleware-logger": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.649.0.tgz", - "integrity": "sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -7981,13 +7981,13 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.649.0.tgz", - "integrity": "sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -7995,14 +7995,14 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.649.0.tgz", - "integrity": "sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-endpoints": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8010,15 +8010,15 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.649.0.tgz", - "integrity": "sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -8026,29 +8026,29 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/token-providers": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.649.0.tgz", - "integrity": "sha512-ZBqr+JuXI9RiN+4DSZykMx5gxpL8Dr3exIfFhxMiwAP3DQojwl0ub8ONjMuAjq9OvmX6n+jHZL6fBnNgnNFC8w==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.654.0.tgz", + "integrity": "sha512-D8GeJYmvbfWkQDtTB4owmIobSMexZel0fOoetwvgCQ/7L8VPph3Q2bn1TRRIXvH7wdt6DcDxA3tKMHPBkT3GlA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/property-provider": "^3.1.4", - "@smithy/shared-ini-file-loader": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.649.0" + "@aws-sdk/client-sso-oidc": "^3.654.0" } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8056,13 +8056,13 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/util-endpoints": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.649.0.tgz", - "integrity": "sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", - "@smithy/util-endpoints": "^2.1.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", "tslib": "^2.6.2" }, "engines": { @@ -8070,24 +8070,24 @@ } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.649.0.tgz", - "integrity": "sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.649.0.tgz", - "integrity": "sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8229,31 +8229,31 @@ } }, "node_modules/@aws-sdk/lib-dynamodb": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.650.0.tgz", - "integrity": "sha512-wa9TJH6raSKXCRsTbRySb6bo7gF+dWvx9FN3e0sW1nz4V26JIwmkuXGJ5Ei8UDFSN4/72QXtbi6aoo7Af550ZA==", + "version": "3.656.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.656.0.tgz", + "integrity": "sha512-UgT+jSMZGckYuXXGpj+agCv0N8zuK/jCgw7nTQH9g02ZQHTI7dedHUnsgfBN5Jts7fm21Mxkwnd5Mj8xK5DeOQ==", "dependencies": { - "@aws-sdk/util-dynamodb": "3.650.0", - "@smithy/core": "^2.4.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/util-dynamodb": "3.656.0", + "@smithy/core": "^2.4.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-dynamodb": "^3.650.0" + "@aws-sdk/client-dynamodb": "^3.656.0" } }, "node_modules/@aws-sdk/lib-storage": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.650.0.tgz", - "integrity": "sha512-pFVeIsPtDKU5uMX4wvoIKmPhahwHQAekr3shj1YG7WyT35hNY+DHVr9sPo7sU7lP9fspHKqrWDOv++EBqrOQQA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.654.0.tgz", + "integrity": "sha512-x3o11PnghWkIaC19/TYuyc0/o6jA6Oh4sa5ZPvszaaJ+NRCrN/XXrX1XlJv720X+99WN7tdz4oEcmtgQ0RaJIQ==", "dependencies": { - "@smithy/abort-controller": "^3.1.2", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/smithy-client": "^3.3.0", + "@smithy/abort-controller": "^3.1.4", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/smithy-client": "^3.3.2", "buffer": "5.6.0", "events": "3.3.0", "stream-browserify": "3.0.0", @@ -8263,19 +8263,19 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-s3": "^3.650.0" + "@aws-sdk/client-s3": "^3.654.0" } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.649.0.tgz", - "integrity": "sha512-ZdDICtUU4YZkrVllTUOH1Fj/F3WShLhkfNKJE3HJ/yj6pS8JS9P2lWzHiHkHiidjrHSxc6NuBo6vuZ+182XLbw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.654.0.tgz", + "integrity": "sha512-/lWkyeLESiK+rAB4+NCw1cVPle9RN7RW/v7B4b8ORiCn1FwZLUPmEiZSYzyh4in5oa3Mri+W/g+KafZDH6LCbA==", "dependencies": { - "@aws-sdk/types": "3.649.0", + "@aws-sdk/types": "3.654.0", "@aws-sdk/util-arn-parser": "3.568.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", "tslib": "^2.6.2" }, @@ -8284,11 +8284,11 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8296,15 +8296,15 @@ } }, "node_modules/@aws-sdk/middleware-endpoint-discovery": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.649.0.tgz", - "integrity": "sha512-deyv8Vx2a7+63NVrOURfUlyfxPbpbtJSPHLbQikHthuEs3dYol/5LXr1VonFe9dlzHRa1ZPMnA2ibOBmUCwz5g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.654.0.tgz", + "integrity": "sha512-oHmSZYWsoGSYTjrohu/EFbtthGZOr9qIU8ewDzzhI2ceCEvCy6w7Vd/Ov1pG6C3faNEGAGNZynOmYJBeF2XIOA==", "dependencies": { "@aws-sdk/endpoint-cache": "3.572.0", - "@aws-sdk/types": "3.649.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8312,11 +8312,11 @@ } }, "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8324,13 +8324,13 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.649.0.tgz", - "integrity": "sha512-pW2id/mWNd+L0/hZKp5yL3J+8rTwsamu9E69Hc5pM3qTF4K4DTZZ+A0sQbY6duIvZvc8IbQHbSMulBOLyWNP3A==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.654.0.tgz", + "integrity": "sha512-S7fSlo8vdjkQTy9DmdF54ZsPwc+aA4z5Y9JVqAlGL9QiZe/fPtRE3GZ8BBbMICjBfMEa12tWjzhDz9su2c6PIA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8338,11 +8338,11 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8350,16 +8350,18 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.649.0.tgz", - "integrity": "sha512-8mzMBEA+Tk6rbrS8iqnXX119C6z+Id84cuzvUc6dAiYcbnOVbus8M4XKKsAFzGGXHCRc2gMwYhKdnoVz2ijaFA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.654.0.tgz", + "integrity": "sha512-ZSRC+Lf9WxyoDLuTkd7JrFRrBLPLXcTOZzX6tDsnHc6tgdneBNwV3/ZOYUwQ8bdwLLnzSaQUU+X5B2BkEFKIhQ==", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", - "@aws-sdk/types": "3.649.0", + "@aws-sdk/types": "3.654.0", "@smithy/is-array-buffer": "^3.0.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -8368,11 +8370,11 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8407,12 +8409,12 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.649.0.tgz", - "integrity": "sha512-O9AXhaFUQx34UTnp/cKCcaWW/IVk4mntlWfFjsIxvRatamKaY33b5fOiakGG+J1t0QFK0niDBSvOYUR1fdlHzw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.654.0.tgz", + "integrity": "sha512-Duvv5c4DEQ7P6c0YlcvEUW3xCJi6X2uktafNGjILhVDMQwShSF/aFqNv/ikWU/luQcmWHZ9DtDjTR9UKLh6eTA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8420,11 +8422,11 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8461,13 +8463,13 @@ } }, "node_modules/@aws-sdk/middleware-sdk-api-gateway": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-api-gateway/-/middleware-sdk-api-gateway-3.649.0.tgz", - "integrity": "sha512-CqSBjqey0IV0JK1IXqw1y2wBLNdx98Vrc9HmxEOeC+ORumnL8VkNm6ffAF8qn4Oh7i81JDzEPbYVP+W8BV/z9g==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-api-gateway/-/middleware-sdk-api-gateway-3.654.0.tgz", + "integrity": "sha512-nNcYuSs1QNsH1Re4i5gfIqrcbuH+uM/9J/ZZI8zUYSbBy8oRWoqiShW/n15uDEnM8kzzXGlq+9tVWitOGGJIfQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8475,11 +8477,11 @@ } }, "node_modules/@aws-sdk/middleware-sdk-api-gateway/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8487,12 +8489,12 @@ } }, "node_modules/@aws-sdk/middleware-sdk-route53": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-route53/-/middleware-sdk-route53-3.649.0.tgz", - "integrity": "sha512-fybBOVQjeOe6fBKuZhCqdm6otGHmpuwtB7wACEKpz/lbW4ci4ENA1BnqXAJ5DnepGaZ58quc88Zy5u7oziwq1Q==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-route53/-/middleware-sdk-route53-3.654.0.tgz", + "integrity": "sha512-la8jqNgzllCK/erCaD+N0hWm6pUF3ybumT7sQAgQjImnsYgomsq68M8H4b234kV/REQm0XWijkAmEExTdOqwZA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8500,11 +8502,11 @@ } }, "node_modules/@aws-sdk/middleware-sdk-route53/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8512,22 +8514,22 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.649.0.tgz", - "integrity": "sha512-3H8735xTAD7IxNdreT6qv2YRk4CGOGfz8ufZo5pROJYZ4N5rfcdDMvb8szMSLvQHegqS4v1DqO9nrOPgc0I2Qg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.654.0.tgz", + "integrity": "sha512-6prq+GK6hLMAbxEb83tBMb1YiTWWK196fJhFO/7gE5TUPL1v756RhQZzKV/njbwB1fIBjRBTuhYLh5Bn98HhdA==", "dependencies": { - "@aws-sdk/core": "3.649.0", - "@aws-sdk/types": "3.649.0", + "@aws-sdk/core": "3.654.0", + "@aws-sdk/types": "3.654.0", "@aws-sdk/util-arn-parser": "3.568.0", - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-stream": "^3.1.4", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-stream": "^3.1.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -8536,18 +8538,18 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@aws-sdk/core": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.649.0.tgz", - "integrity": "sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==", - "dependencies": { - "@smithy/core": "^2.4.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.654.0.tgz", + "integrity": "sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==", + "dependencies": { + "@smithy/core": "^2.4.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -8556,11 +8558,11 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8580,13 +8582,13 @@ } }, "node_modules/@aws-sdk/middleware-sdk-sqs": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.649.0.tgz", - "integrity": "sha512-ifuBdP4onwjdQ3NuneW6s6Ev4wPR/D+4PJbEV6aJqutHkTsp5aKemVCxkjl8KTchMtE6ICst0SHy1t20FZpmDw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.654.0.tgz", + "integrity": "sha512-nZfzGjUKWKKbra2sNFfXTFcCOlN98akBV7iVSdpRQw59pPpc+eBJWthSCNv2jeF6bg/Ph0DmaYaEvPTK0OubKw==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", "@smithy/util-hex-encoding": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" @@ -8596,11 +8598,11 @@ } }, "node_modules/@aws-sdk/middleware-sdk-sqs/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8620,12 +8622,12 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.649.0.tgz", - "integrity": "sha512-r/WBIpX+Kcx+AV5vJ+LbdDOuibk7spBqcFK2LytQjOZKPksZNRAM99khbFe9vr9S1+uDmCLVjAVkIfQ5seJrOw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.654.0.tgz", + "integrity": "sha512-k7hkQDJh4hcRJC7YojQ11kc37SY4foryen26Eafj5qYjeG2OGMW0oZTJDl1TVFJ7AcCjqIuMIo0Ho2US/2JspQ==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8633,11 +8635,11 @@ } }, "node_modules/@aws-sdk/middleware-ssec/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8801,16 +8803,16 @@ } }, "node_modules/@aws-sdk/s3-presigned-post": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/s3-presigned-post/-/s3-presigned-post-3.650.0.tgz", - "integrity": "sha512-M5gKVzKl51v6MJX9ONYBR/CzQgen9boQz21i5LgDcbIRRLIoRN5VDesFB5B+UDgUaQayR8zNMjJkPaxbMEtw2g==", - "dependencies": { - "@aws-sdk/client-s3": "3.650.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-format-url": "3.649.0", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/types": "^3.4.0", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-presigned-post/-/s3-presigned-post-3.654.0.tgz", + "integrity": "sha512-MKpoLK4FV5/8Oydm3FQiSCbP6HoI75k2Z8z8MVK9bTiObedAMXTkdZDzq2qtqngEM4Lb1GgyJkActihJcv3AYw==", + "dependencies": { + "@aws-sdk/client-s3": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-format-url": "3.654.0", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/types": "^3.4.2", "@smithy/util-hex-encoding": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" @@ -8820,11 +8822,11 @@ } }, "node_modules/@aws-sdk/s3-presigned-post/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8844,17 +8846,17 @@ } }, "node_modules/@aws-sdk/s3-request-presigner": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.650.0.tgz", - "integrity": "sha512-/tAzAOYjN8oTX7dYG/koNc8WI/2htJ6w2cv0Y3smkRyD9nC/s33ZJ6VplC3WBTeGv9lzHazP/EQkXz1IvJKd/Q==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.654.0.tgz", + "integrity": "sha512-se1DllTTkaB85RSB60U/VUq5rCzwhqYZudxrf1zlWD0YjZpwKqifWgBomd3AyPZtQRQOcQooBcmZCVfGfdAuJQ==", "dependencies": { - "@aws-sdk/signature-v4-multi-region": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@aws-sdk/util-format-url": "3.649.0", - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", + "@aws-sdk/signature-v4-multi-region": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-format-url": "3.654.0", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.2", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8862,11 +8864,11 @@ } }, "node_modules/@aws-sdk/s3-request-presigner/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8887,15 +8889,15 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.649.0.tgz", - "integrity": "sha512-feJfSHtCarFmTMZSE5k7/A+m4FrdCrmotljc/AmXArWy3wl8XFyxE5tFVW/PiUgbgeoVDN+ZLt3YYtItHfNUWQ==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.654.0.tgz", + "integrity": "sha512-f8kyvbzgD3lSK1kFc3jsDCYjdutcqGO3tOzYO/QIK7BTl5lxc4rm6IKTcF2UYJsn8jiNqih7tVK8aVIGi8IF/w==", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.649.0", - "@aws-sdk/types": "3.649.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/signature-v4": "^4.1.1", - "@smithy/types": "^3.4.0", + "@aws-sdk/middleware-sdk-s3": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -8903,11 +8905,11 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -9095,9 +9097,9 @@ } }, "node_modules/@aws-sdk/util-dynamodb": { - "version": "3.650.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.650.0.tgz", - "integrity": "sha512-91bt1ZW3BbVajRS1/Ttms4UFrQx2y/gPh7NmcmFg633JLElLXKBUb79NGNPBbpvPmP5Oa8wYeDI9t7Q8nTw01g==", + "version": "3.656.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.656.0.tgz", + "integrity": "sha512-vavQ0AZ4t7US3zWCv8mSS9wH6O2nB2lW4yFMO5pkd1Y8YFE3DDFSbzl0zI2A2YSrU1n4fqFbCfXhQhK6sRYoNA==", "dependencies": { "tslib": "^2.6.2" }, @@ -9105,7 +9107,7 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-dynamodb": "^3.650.0" + "@aws-sdk/client-dynamodb": "^3.656.0" } }, "node_modules/@aws-sdk/util-endpoints": { @@ -9124,13 +9126,13 @@ } }, "node_modules/@aws-sdk/util-format-url": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.649.0.tgz", - "integrity": "sha512-I5olOLkXQRJWAaoTSTXcycNBJ26daeEpgxYD6VPpQma9StFVK7a0MbHa1QGkOy9eVTTuf6xb2U1eiCWDWn3TXA==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.654.0.tgz", + "integrity": "sha512-2yAlJ/l1uTJhS52iu4+/EvdIyQhDBL+nATY8rEjFI0H+BHGVrJIH2CL4DByhvi2yvYwsqQX0HYah6pF/yoXukA==", "dependencies": { - "@aws-sdk/types": "3.649.0", - "@smithy/querystring-builder": "^3.0.4", - "@smithy/types": "^3.4.0", + "@aws-sdk/types": "3.654.0", + "@smithy/querystring-builder": "^3.0.6", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -9138,11 +9140,11 @@ } }, "node_modules/@aws-sdk/util-format-url/node_modules/@aws-sdk/types": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.649.0.tgz", - "integrity": "sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -9204,11 +9206,11 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.649.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.649.0.tgz", - "integrity": "sha512-XVESKkK7m5LdCVzZ3NvAja40BEyCrfPqtaiFAAhJIvW2U1Edyugf2o3XikuQY62crGT6BZagxJFgOiLKvuTiTg==", + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.654.0.tgz", + "integrity": "sha512-qA2diK3d/ztC8HUb7NwPKbJRV01NpzTzxFn+L5G3HzJBNeKbjLcprQ/9uG9gp2UEx2Go782FI1ddrMNa0qBICA==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -12047,9 +12049,9 @@ } }, "node_modules/@csstools/postcss-light-dark-function": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.2.tgz", - "integrity": "sha512-QAWWDJtJ7ywzhaMe09QwhjhuwB0XN04fW1MFwoEJMcYyiQub4a57mVFV+ngQEekUhsqe/EtKVCzyOx4q3xshag==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.4.tgz", + "integrity": "sha512-yHUt5DZ61Irvp72notmAl3Zt4Me50EWToWNocazyIFTVYFwwo/EucmV3hWi9zJehu3rOSvMclL7DzvRDfbak/A==", "dev": true, "funding": [ { @@ -13042,9 +13044,9 @@ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", "cpu": [ "ppc64" ], @@ -13058,9 +13060,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", "cpu": [ "arm" ], @@ -13074,9 +13076,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", "cpu": [ "arm64" ], @@ -13090,9 +13092,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", "cpu": [ "x64" ], @@ -13106,9 +13108,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", "cpu": [ "arm64" ], @@ -13122,9 +13124,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", "cpu": [ "x64" ], @@ -13138,9 +13140,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", "cpu": [ "arm64" ], @@ -13154,9 +13156,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", "cpu": [ "x64" ], @@ -13170,9 +13172,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", "cpu": [ "arm" ], @@ -13186,9 +13188,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", "cpu": [ "arm64" ], @@ -13202,9 +13204,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", "cpu": [ "ia32" ], @@ -13218,9 +13220,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", "cpu": [ "loong64" ], @@ -13234,9 +13236,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", "cpu": [ "mips64el" ], @@ -13250,9 +13252,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", "cpu": [ "ppc64" ], @@ -13266,9 +13268,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", "cpu": [ "riscv64" ], @@ -13282,9 +13284,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", "cpu": [ "s390x" ], @@ -13298,9 +13300,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", "cpu": [ "x64" ], @@ -13314,9 +13316,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", "cpu": [ "x64" ], @@ -13330,9 +13332,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", "cpu": [ "arm64" ], @@ -13346,9 +13348,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", "cpu": [ "x64" ], @@ -13362,9 +13364,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", "cpu": [ "x64" ], @@ -13378,9 +13380,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", "cpu": [ "arm64" ], @@ -13394,9 +13396,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", "cpu": [ "ia32" ], @@ -13410,9 +13412,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", "cpu": [ "x64" ], @@ -13577,9 +13579,9 @@ } }, "node_modules/@faker-js/faker": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-9.0.0.tgz", - "integrity": "sha512-dTDHJSmz6c1OJ6HO7jiUiIb4sB20Dlkb3pxYsKm0qTXm2Bmj97rlXIhlvaFsW2rvCi+OLlwKLVSS6ZxFUVZvjQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-9.0.1.tgz", + "integrity": "sha512-4mDeYIgM3By7X6t5E6eYwLAa+2h4DeZDF7thhzIg6XB76jeEvMwadYAMCFJL/R4AnEBcAUO9+gL0vhy3s+qvZA==", "dev": true, "funding": [ { @@ -16288,11 +16290,11 @@ "dev": true }, "node_modules/@smithy/abort-controller": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.2.tgz", - "integrity": "sha512-b5g+PNujlfqIib9BjkNB108NyO5aZM/RXjfOCXRCqXQ1oPnIkfvdORrztbGgCZdPe/BN/MKDlrGA7PafKPM2jw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.4.tgz", + "integrity": "sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16317,14 +16319,14 @@ } }, "node_modules/@smithy/config-resolver": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.6.tgz", - "integrity": "sha512-j7HuVNoRd8EhcFp0MzcUb4fG40C7BcyshH+fAd3Jhd8bINNFvEQYBrZoS/SK6Pun9WPlfoI8uuU2SMz8DsEGlA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.8.tgz", + "integrity": "sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw==", "dependencies": { - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -16332,18 +16334,18 @@ } }, "node_modules/@smithy/core": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.1.tgz", - "integrity": "sha512-7cts7/Oni7aCHebHGiBeWoz5z+vmH+Vx2Z/UW3XtXMslcxI3PEwBZxNinepwZjixS3n12fPc247PHWmjU7ndsQ==", - "dependencies": { - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-retry": "^3.0.16", - "@smithy/middleware-serde": "^3.0.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.5.tgz", + "integrity": "sha512-Z0qlPXgZ0pouYgnu/cZTEYeRAvniiKZmVl4wIbZHX/nEMHkMDV9ao6KFArsU9KndE0TuhL149xcRx45wfw1YCA==", + "dependencies": { + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.20", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.4", + "@smithy/types": "^3.4.2", "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -16364,14 +16366,14 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.1.tgz", - "integrity": "sha512-4z/oTWpRF2TqQI3aCM89/PWu3kim58XU4kOCTtuTJnoaS4KT95cPWMxbQfTN2vzcOe96SOKO8QouQW/+ESB1fQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz", + "integrity": "sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg==", "dependencies": { - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -16379,23 +16381,23 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.3.tgz", - "integrity": "sha512-mKBrmhg6Zd3j07G9dkKTGmrU7pdJGTNz8LbZtIOR3QoodS5yDNqEqoXU4Eg38snZcnCAh7NPBsw5ndxtJPLiCg==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.5.tgz", + "integrity": "sha512-6pu+PT2r+5ZnWEV3vLV1DzyrpJ0TmehQlniIDCSpZg6+Ji2SfOI38EqUyQ+O8lotVElCrfVc9chKtSMe9cmCZQ==", "dependencies": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "@smithy/util-hex-encoding": "^3.0.0", "tslib": "^2.6.2" } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.7.tgz", - "integrity": "sha512-UC4RQqyM8B0g5cX/xmWtsNgSBmZ13HrzCqoe5Ulcz6R462/egbIdfTXnayik7jkjvwOrCPL1N11Q9S+n68jPLA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.9.tgz", + "integrity": "sha512-PiQLo6OQmZAotJweIcObL1H44gkvuJACKMNqpBBe5Rf2Ax1DOcGi/28+feZI7yTe1ERHlQQaGnm8sSkyDUgsMg==", "dependencies": { - "@smithy/eventstream-serde-universal": "^3.0.6", - "@smithy/types": "^3.4.0", + "@smithy/eventstream-serde-universal": "^3.0.8", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16403,11 +16405,11 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.4.tgz", - "integrity": "sha512-saIs5rtAMpifqL7u7nc5YeE/6gkenzXpSz5NwEyhIesRWtHK+zEuYn9KY8SArZEbPSHyGxvvgKk1z86VzfUGHw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.6.tgz", + "integrity": "sha512-iew15It+c7WfnVowWkt2a7cdPp533LFJnpjDQgfZQcxv2QiOcyEcea31mnrk5PVbgo0nNH3VbYGq7myw2q/F6A==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16415,12 +16417,12 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.6.tgz", - "integrity": "sha512-gRKGBdZah3EjZZgWcsTpShq4cZ4Q4JTTe1OPob+jrftmbYj6CvpeydZbH0roO5SvBG8SI3aBZIet9TGN3zUxUw==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.8.tgz", + "integrity": "sha512-6m+wI+fT0na+6oao6UqALVA38fsScCpoG5UO/A8ZSyGLnPM2i4MS1cFUhpuALgvLMxfYoTCh7qSeJa0aG4IWpQ==", "dependencies": { - "@smithy/eventstream-serde-universal": "^3.0.6", - "@smithy/types": "^3.4.0", + "@smithy/eventstream-serde-universal": "^3.0.8", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16428,12 +16430,12 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.6.tgz", - "integrity": "sha512-1jvXd4sFG+zKaL6WqrJXpL6E+oAMafuM5GPd4qF0+ccenZTX3DZugoCCjlooQyTh+TZho2FpdVYUf5J/bB/j6Q==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.8.tgz", + "integrity": "sha512-09tqzIQ6e+7jLqGvRji1yJoDbL/zob0OFhq75edgStWErGLf16+yI5hRc/o9/YAybOhUZs/swpW2SPn892G5Gg==", "dependencies": { - "@smithy/eventstream-codec": "^3.1.3", - "@smithy/types": "^3.4.0", + "@smithy/eventstream-codec": "^3.1.5", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16441,34 +16443,34 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.5.tgz", - "integrity": "sha512-DjRtGmK8pKQMIo9+JlAKUt14Z448bg8nAN04yKIvlrrpmpRSG57s5d2Y83npks1r4gPtTRNbAFdQCoj9l3P2KQ==", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.8.tgz", + "integrity": "sha512-Lqe0B8F5RM7zkw//6avq1SJ8AfaRd3ubFUS1eVp5WszV7p6Ne5hQ4dSuMHDpNRPhgTvj4va9Kd/pcVigHEHRow==", "dependencies": { - "@smithy/protocol-http": "^4.1.1", - "@smithy/querystring-builder": "^3.0.4", - "@smithy/types": "^3.4.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/querystring-builder": "^3.0.6", + "@smithy/types": "^3.4.2", "@smithy/util-base64": "^3.0.0", "tslib": "^2.6.2" } }, "node_modules/@smithy/hash-blob-browser": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.3.tgz", - "integrity": "sha512-im9wAU9mANWW0OP0YGqwX3lw0nXG0ngyIcKQ8V/MUz1r7A6uO2lpPqKmAsH4VPGNLP2JPUhj4aW/m5UKkxX/IA==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.5.tgz", + "integrity": "sha512-Vi3eoNCmao4iKglS80ktYnBOIqZhjbDDwa1IIbF/VaJ8PsHnZTQ5wSicicPrU7nTI4JPFn92/txzWkh4GlK18Q==", "dependencies": { "@smithy/chunked-blob-reader": "^3.0.0", "@smithy/chunked-blob-reader-native": "^3.0.0", - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" } }, "node_modules/@smithy/hash-node": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.4.tgz", - "integrity": "sha512-6FgTVqEfCr9z/7+Em8BwSkJKA2y3krf1em134x3yr2NHWVCo2KYI8tcA53cjeO47y41jwF84ntsEE0Pe6pNKlg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.6.tgz", + "integrity": "sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "@smithy/util-buffer-from": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" @@ -16490,11 +16492,11 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.3.tgz", - "integrity": "sha512-Tz/eTlo1ffqYn+19VaMjDDbmEWqYe4DW1PAWaS8HvgRdO6/k9hxNPt8Wv5laXoilxE20YzKugiHvxHyO6J7kGA==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.5.tgz", + "integrity": "sha512-61CyFCzqN3VBfcnGX7mof/rkzLb8oHjm4Lr6ZwBIRpBssBb8d09ChrZAqinP2rUrA915BRNkq9NpJz18N7+3hQ==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -16515,11 +16517,11 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.4.tgz", - "integrity": "sha512-MJBUrojC4SEXi9aJcnNOE3oNAuYNphgCGFXscaCj2TA/59BTcXhzHACP8jnnEU3n4yir/NSLKzxqez0T4x4tjA==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.6.tgz", + "integrity": "sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" } }, @@ -16535,11 +16537,11 @@ } }, "node_modules/@smithy/md5-js": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.4.tgz", - "integrity": "sha512-qSlqr/+hybufIJgxQW2gYzGE6ywfOxkjjJVojbbmv4MtxfdDFfzRew+NOIOXcYgazW0f8OYBTIKsmNsjxpvnng==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.6.tgz", + "integrity": "sha512-Ze690T8O3M5SVbb70WormwrKzVf9QQRtIuxtJDgpUQDkmt+PtdYDetBbyCbF9ryupxLw6tgzWKgwffAShhVIXQ==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" } @@ -16557,16 +16559,16 @@ } }, "node_modules/@smithy/middleware-compression": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/middleware-compression/-/middleware-compression-3.0.8.tgz", - "integrity": "sha512-qY3ALlU0YT+ewBniwjQHwYApIK3fQWiNrLtcnw5Wk4spYZJQlDl0Z9SOvL+GKX4mKOlbR/pWG/gKfpGqwHW65Q==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@smithy/middleware-compression/-/middleware-compression-3.0.10.tgz", + "integrity": "sha512-0dzc3D4GqbuHFYN0bDti+suxAT18s2RFL1EYIvZSTOLz0Vt7E/xqgNLgQ+SDCg/B8kvR0JeClkCqYPcWEqtnQQ==", "dependencies": { "@smithy/is-array-buffer": "^3.0.0", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "fflate": "0.8.1", "tslib": "^2.6.2" @@ -16593,12 +16595,12 @@ "integrity": "sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==" }, "node_modules/@smithy/middleware-content-length": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.6.tgz", - "integrity": "sha512-AFyHCfe8rumkJkz+hCOVJmBagNBj05KypyDwDElA4TgMSA4eYDZRjVePFZuyABrJZFDc7uVj3dpFIDCEhf59SA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.8.tgz", + "integrity": "sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og==", "dependencies": { - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16606,16 +16608,16 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.1.tgz", - "integrity": "sha512-Irv+soW8NKluAtFSEsF8O3iGyLxa5oOevJb/e1yNacV9H7JP/yHyJuKST5YY2ORS1+W34VR8EuUrOF+K29Pl4g==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.3.tgz", + "integrity": "sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg==", "dependencies": { - "@smithy/middleware-serde": "^3.0.4", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/shared-ini-file-loader": "^3.1.5", - "@smithy/types": "^3.4.0", - "@smithy/url-parser": "^3.0.4", - "@smithy/util-middleware": "^3.0.4", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", + "@smithy/util-middleware": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -16623,17 +16625,17 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.16.tgz", - "integrity": "sha512-08kI36p1yB4CWO3Qi+UQxjzobt8iQJpnruF0K5BkbZmA/N/sJ51A1JJGJ36GgcbFyPfWw2FU48S5ZoqXt0h0jw==", - "dependencies": { - "@smithy/node-config-provider": "^3.1.5", - "@smithy/protocol-http": "^4.1.1", - "@smithy/service-error-classification": "^3.0.4", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", - "@smithy/util-middleware": "^3.0.4", - "@smithy/util-retry": "^3.0.4", + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.20.tgz", + "integrity": "sha512-HELCOVwYw5hFDBm69d+LmmGjBCjWnwp/t7SJiHmp+c4u9vgfIaCjdSeIdnlOsLrr5ic5jGTJXvJFUQnd987b/g==", + "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.4", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", "tslib": "^2.6.2", "uuid": "^9.0.1" }, @@ -16654,11 +16656,11 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.4.tgz", - "integrity": "sha512-1lPDB2O6IJ50Ucxgn7XrvZXbbuI48HmPCcMTuSoXT1lDzuTUfIuBjgAjpD8YLVMfnrjdepi/q45556LA51Pubw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.6.tgz", + "integrity": "sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16666,11 +16668,11 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.4.tgz", - "integrity": "sha512-sLMRjtMCqtVcrOqaOZ10SUnlFE25BSlmLsi4bRSGFD7dgR54eqBjfqkVkPBQyrKBortfGM0+2DJoUPcGECR+nQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.6.tgz", + "integrity": "sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16678,13 +16680,13 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.5.tgz", - "integrity": "sha512-dq/oR3/LxgCgizVk7in7FGTm0w9a3qM4mg3IIXLTCHeW3fV+ipssSvBZ2bvEx1+asfQJTyCnVLeYf7JKfd9v3Q==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz", + "integrity": "sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==", "dependencies": { - "@smithy/property-provider": "^3.1.4", - "@smithy/shared-ini-file-loader": "^3.1.5", - "@smithy/types": "^3.4.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16692,14 +16694,14 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.0.tgz", - "integrity": "sha512-5TFqaABbiY7uJMKbqR4OARjwI/l4TRoysDJ75pLpVQyO3EcmeloKYwDGyCtgB9WJniFx3BMkmGCB9+j+QiB+Ww==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.3.tgz", + "integrity": "sha512-/gcm5DJ3k1b1zEInzBGAZC8ntJ+jwrz1NcSIu+9dSXd1FfG0G6QgkDI40tt8/WYUbHtLyo8fEqtm2v29koWo/w==", "dependencies": { - "@smithy/abort-controller": "^3.1.2", - "@smithy/protocol-http": "^4.1.1", - "@smithy/querystring-builder": "^3.0.4", - "@smithy/types": "^3.4.0", + "@smithy/abort-controller": "^3.1.4", + "@smithy/protocol-http": "^4.1.3", + "@smithy/querystring-builder": "^3.0.6", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16707,11 +16709,11 @@ } }, "node_modules/@smithy/property-provider": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.4.tgz", - "integrity": "sha512-BmhefQbfkSl9DeU0/e6k9N4sT5bya5etv2epvqLUz3eGyfRBhtQq60nDkc1WPp4c+KWrzK721cUc/3y0f2psPQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", + "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16719,11 +16721,11 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.1.tgz", - "integrity": "sha512-Fm5+8LkeIus83Y8jTL1XHsBGP8sPvE1rEVyKf/87kbOPTbzEDMcgOlzcmYXat2h+nC3wwPtRy8hFqtJS71+Wow==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.3.tgz", + "integrity": "sha512-GcbMmOYpH9iRqtC05RbRnc/0FssxSTHlmaNhYBTgSgNCYpdR3Kt88u5GAZTBmouzv+Zlj/VRv92J9ruuDeJuEw==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16731,11 +16733,11 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.4.tgz", - "integrity": "sha512-NEoPAsZPdpfVbF98qm8i5k1XMaRKeEnO47CaL5ja6Y1Z2DgJdwIJuJkTJypKm/IKfp8gc0uimIFLwhml8+/pAw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.6.tgz", + "integrity": "sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "@smithy/util-uri-escape": "^3.0.0", "tslib": "^2.6.2" }, @@ -16744,11 +16746,11 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.4.tgz", - "integrity": "sha512-7CHPXffFcakFzhO0OZs/rn6fXlTHrSDdLhIT6/JIk1u2bvwguTL3fMCc1+CfcbXA7TOhjWXu3TcB1EGMqJQwHg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz", + "integrity": "sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16756,22 +16758,22 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.4.tgz", - "integrity": "sha512-KciDHHKFVTb9A1KlJHBt2F26PBaDtoE23uTZy5qRvPzHPqrooXFi6fmx98lJb3Jl38PuUTqIuCUmmY3pacuMBQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.6.tgz", + "integrity": "sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg==", "dependencies": { - "@smithy/types": "^3.4.0" + "@smithy/types": "^3.4.2" }, "engines": { "node": ">=16.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.5.tgz", - "integrity": "sha512-6jxsJ4NOmY5Du4FD0enYegNJl4zTSuKLiChIMqIkh+LapxiP7lmz5lYUNLE9/4cvA65mbBmtdzZ8yxmcqM5igg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", + "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16779,15 +16781,15 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.1.tgz", - "integrity": "sha512-SH9J9be81TMBNGCmjhrgMWu4YSpQ3uP1L06u/K9SDrE2YibUix1qxedPCxEQu02At0P0SrYDjvz+y91vLG0KRQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.4.tgz", + "integrity": "sha512-72MiK7xYukNsnLJI9NqvUHqTu0ziEsfMsYNlWpiJfuGQnCTFKpckThlEatirvcA/LmT1h7rRO+pJD06PYsPu9Q==", "dependencies": { "@smithy/is-array-buffer": "^3.0.0", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-middleware": "^3.0.4", + "@smithy/util-middleware": "^3.0.6", "@smithy/util-uri-escape": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" @@ -16809,15 +16811,15 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.3.0.tgz", - "integrity": "sha512-H32nVo8tIX82kB0xI2LBrIcj8jx/3/ITotNLbeG1UL0b3b440YPR/hUvqjFJiaB24pQrMjRbU8CugqH5sV0hkw==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.3.4.tgz", + "integrity": "sha512-NKw/2XxOW/Rg3rzB90HxsmGok5oS6vRzJgMh/JN4BHaOQQ4q5OuX999GmOGxEp730wbpIXIowfKZmIMXkG4v0Q==", "dependencies": { - "@smithy/middleware-endpoint": "^3.1.1", - "@smithy/middleware-stack": "^3.0.4", - "@smithy/protocol-http": "^4.1.1", - "@smithy/types": "^3.4.0", - "@smithy/util-stream": "^3.1.4", + "@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.8", "tslib": "^2.6.2" }, "engines": { @@ -16825,9 +16827,9 @@ } }, "node_modules/@smithy/types": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.0.tgz", - "integrity": "sha512-0shOWSg/pnFXPcsSU8ZbaJ4JBHZJPPzLCJxafJvbMVFo9l1w81CqpgUqjlKGNHVrVB7fhIs+WS82JDTyzaLyLA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", + "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", "dependencies": { "tslib": "^2.6.2" }, @@ -16836,12 +16838,12 @@ } }, "node_modules/@smithy/url-parser": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.4.tgz", - "integrity": "sha512-XdXfObA8WrloavJYtDuzoDhJAYc5rOt+FirFmKBRKaihu7QtU/METAxJgSo7uMK6hUkx0vFnqxV75urtRaLkLg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.6.tgz", + "integrity": "sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==", "dependencies": { - "@smithy/querystring-parser": "^3.0.4", - "@smithy/types": "^3.4.0", + "@smithy/querystring-parser": "^3.0.6", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" } }, @@ -16913,13 +16915,13 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.16.tgz", - "integrity": "sha512-Os8ddfNBe7hmc5UMWZxygIHCyAqY0aWR8Wnp/aKbti3f8Df/r0J9ttMZIxeMjsFgtVjEryB0q7SGcwBsHk8WEw==", + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.20.tgz", + "integrity": "sha512-HpYmCpEThQJpCKzwzrGrklhdegRfuXI9keHRrHidbyEMliCdgic6t38MikJeZEkdIcEMhO1g95HIYMzjUzB+xg==", "dependencies": { - "@smithy/property-provider": "^3.1.4", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/smithy-client": "^3.3.4", + "@smithy/types": "^3.4.2", "bowser": "^2.11.0", "tslib": "^2.6.2" }, @@ -16928,16 +16930,16 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.16.tgz", - "integrity": "sha512-rNhFIYRtrOrrhRlj6RL8jWA6/dcwrbGYAmy8+OAHjjzQ6zdzUBB1P+3IuJAgwWN6Y5GxI+mVXlM/pOjaoIgHow==", + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.20.tgz", + "integrity": "sha512-atdsHNtAX0rwTvRRGsrONU0C0XzapH6tI8T1y/OReOvWN7uBwXqqWRft6m8egU2DgeReU0xqT3PHdGCe5VRaaQ==", "dependencies": { - "@smithy/config-resolver": "^3.0.6", - "@smithy/credential-provider-imds": "^3.2.1", - "@smithy/node-config-provider": "^3.1.5", - "@smithy/property-provider": "^3.1.4", - "@smithy/smithy-client": "^3.3.0", - "@smithy/types": "^3.4.0", + "@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.4", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16945,12 +16947,12 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.0.tgz", - "integrity": "sha512-ilS7/0jcbS2ELdg0fM/4GVvOiuk8/U3bIFXUW25xE1Vh1Ol4DP6vVHQKqM40rCMizCLmJ9UxK+NeJrKlhI3HVA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.2.tgz", + "integrity": "sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ==", "dependencies": { - "@smithy/node-config-provider": "^3.1.5", - "@smithy/types": "^3.4.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16969,11 +16971,11 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.4.tgz", - "integrity": "sha512-uSXHTBhstb1c4nHdmQEdkNMv9LiRNaJ/lWV2U/GO+5F236YFpdPw+hyWI9Zc0Rp9XKzwD9kVZvhZmEgp0UCVnA==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.6.tgz", + "integrity": "sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ==", "dependencies": { - "@smithy/types": "^3.4.0", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16981,12 +16983,12 @@ } }, "node_modules/@smithy/util-retry": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.4.tgz", - "integrity": "sha512-JJr6g0tO1qO2tCQyK+n3J18r34ZpvatlFN5ULcLranFIBZPxqoivb77EPyNTVwTGMEvvq2qMnyjm4jMIxjdLFg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.6.tgz", + "integrity": "sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg==", "dependencies": { - "@smithy/service-error-classification": "^3.0.4", - "@smithy/types": "^3.4.0", + "@smithy/service-error-classification": "^3.0.6", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -16994,13 +16996,13 @@ } }, "node_modules/@smithy/util-stream": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.4.tgz", - "integrity": "sha512-txU3EIDLhrBZdGfon6E9V6sZz/irYnKFMblz4TLVjyq8hObNHNS2n9a2t7GIrl7d85zgEPhwLE0gANpZsvpsKg==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.8.tgz", + "integrity": "sha512-hoKOqSmb8FD3WLObuB5hwbM7bNIWgcnvkThokTvVq7J5PKjlLUK5qQQcB9zWLHIoSaIlf3VIv2OxZY2wtQjcRQ==", "dependencies": { - "@smithy/fetch-http-handler": "^3.2.5", - "@smithy/node-http-handler": "^3.2.0", - "@smithy/types": "^3.4.0", + "@smithy/fetch-http-handler": "^3.2.8", + "@smithy/node-http-handler": "^3.2.3", + "@smithy/types": "^3.4.2", "@smithy/util-base64": "^3.0.0", "@smithy/util-buffer-from": "^3.0.0", "@smithy/util-hex-encoding": "^3.0.0", @@ -17070,12 +17072,12 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.3.tgz", - "integrity": "sha512-OU0YllH51/CxD8iyr3UHSMwYqTGTyuxFdCMH/0F978t+iDmJseC/ttrWPb22zmYkhkrjqtipzC1xaMuax5QKIA==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.5.tgz", + "integrity": "sha512-jYOSvM3H6sZe3CHjzD2VQNCjWBJs+4DbtwBMvUp9y5EnnwNa7NQxTeYeQw0CKCAdGGZ3QvVkyJmvbvs5M/B10A==", "dependencies": { - "@smithy/abort-controller": "^3.1.2", - "@smithy/types": "^3.4.0", + "@smithy/abort-controller": "^3.1.4", + "@smithy/types": "^3.4.2", "tslib": "^2.6.2" }, "engines": { @@ -18126,9 +18128,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.12", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", - "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "version": "29.5.13", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.13.tgz", + "integrity": "sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -18201,9 +18203,9 @@ } }, "node_modules/@types/node": { - "version": "22.5.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", - "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "version": "22.5.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", + "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", "dependencies": { "undici-types": "~6.19.2" } @@ -18214,9 +18216,9 @@ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, "node_modules/@types/pg": { - "version": "8.11.9", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.11.9.tgz", - "integrity": "sha512-M4mYeJZRBD9lCBCGa72F44uKSV9eJrAFfjlPJagdA6pgIr2OPJULFB7nqnZzOdqXG0qzHlgtZKzTdIgbmHitSg==", + "version": "8.11.10", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.11.10.tgz", + "integrity": "sha512-LczQUW4dbOQzsH2RQ5qoeJ6qJPdrcM/DcMLoqWQkMLMsq83J5lAX3LXjdkWdpscFy67JSOWDnh7Ny/sPFykmkg==", "dependencies": { "@types/node": "*", "pg-protocol": "*", @@ -18238,9 +18240,9 @@ "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", + "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==" }, "node_modules/@types/quill": { "version": "1.3.10", @@ -18256,9 +18258,9 @@ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" }, "node_modules/@types/react": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz", - "integrity": "sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==", + "version": "18.3.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.8.tgz", + "integrity": "sha512-syBUrW3/XpnW4WJ41Pft+I+aPoDVbrBVQGEnbD7NijDGlVC+8gV/XKRY+7vMDlfPpbwYt0l1vd/Sj8bJGMbs9Q==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -18394,16 +18396,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.5.0.tgz", - "integrity": "sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.6.0.tgz", + "integrity": "sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/type-utils": "8.5.0", - "@typescript-eslint/utils": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/type-utils": "8.6.0", + "@typescript-eslint/utils": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -18427,15 +18429,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.5.0.tgz", - "integrity": "sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.6.0.tgz", + "integrity": "sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/typescript-estree": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/typescript-estree": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "debug": "^4.3.4" }, "engines": { @@ -18455,13 +18457,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz", - "integrity": "sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.6.0.tgz", + "integrity": "sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0" + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -18472,13 +18474,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.5.0.tgz", - "integrity": "sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.6.0.tgz", + "integrity": "sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "8.5.0", - "@typescript-eslint/utils": "8.5.0", + "@typescript-eslint/typescript-estree": "8.6.0", + "@typescript-eslint/utils": "8.6.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -18496,9 +18498,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz", - "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.6.0.tgz", + "integrity": "sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -18509,13 +18511,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.5.0.tgz", - "integrity": "sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.6.0.tgz", + "integrity": "sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -18537,15 +18539,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.5.0.tgz", - "integrity": "sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.6.0.tgz", + "integrity": "sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/typescript-estree": "8.5.0" + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/typescript-estree": "8.6.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -18559,12 +18561,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz", - "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.6.0.tgz", + "integrity": "sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/types": "8.6.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -19955,23 +19957,23 @@ } }, "node_modules/aws-xray-sdk": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.10.0.tgz", - "integrity": "sha512-a3EYe/VfQHrvfLmr9lOppB7c+ej7CIOz4BSfDq6EDhIc/2JugfKBEwteO3WadGx3CIhTWgxiw6xZRE+XtfHgTw==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.10.1.tgz", + "integrity": "sha512-Ihp5L2x9LdM8CmC5Hu9HvgenEqb3d+DJZbgDegToPjer+WfVn0PU7JnGmBHX+2nnhbO6SyA7kZcFNAyQyw0rmQ==", "dependencies": { - "aws-xray-sdk-core": "3.10.0", - "aws-xray-sdk-express": "3.10.0", - "aws-xray-sdk-mysql": "3.10.0", - "aws-xray-sdk-postgres": "3.10.0" + "aws-xray-sdk-core": "3.10.1", + "aws-xray-sdk-express": "3.10.1", + "aws-xray-sdk-mysql": "3.10.1", + "aws-xray-sdk-postgres": "3.10.1" }, "engines": { "node": ">= 14.x" } }, "node_modules/aws-xray-sdk-core": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.10.0.tgz", - "integrity": "sha512-D1Qk0CSu6ILu3dkDnoUimzUKLdUdngPggLXDJaOQlxr5TC+2/Yvvopf+GL43gXu7OFYEo0dciyGoSb3mAsuLAQ==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.10.1.tgz", + "integrity": "sha512-Eb1Iy5WEjRqRi8G+gi32QjR7t/9xTDore8EKasXsPMXCLMlYunslxJAvT2PDLXQ7ohEC/mKT9+7tUyUt6CGruw==", "dependencies": { "@aws-sdk/types": "^3.4.1", "@smithy/service-error-classification": "^2.0.4", @@ -20007,9 +20009,9 @@ } }, "node_modules/aws-xray-sdk-express": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.10.0.tgz", - "integrity": "sha512-2UjlK6IlwTLqEg7S96U2fGfmSb6IeShL2Ov3XMgIdG85NvqvnGjgFH/JCL9A0a9rVYVru3pzqEQQ39f03IeuvQ==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.10.1.tgz", + "integrity": "sha512-tfAv34B43c7oLu2Q+a7Hdp+33PNskMVJcA/bFHQjkbRJN0FJASwuq1/oVqNG1exRYHXyYpVx3X7r+9rfHYIf7w==", "dependencies": { "@types/express": "*" }, @@ -20017,13 +20019,13 @@ "node": ">= 14.x" }, "peerDependencies": { - "aws-xray-sdk-core": "^3.10.0" + "aws-xray-sdk-core": "^3.10.1" } }, "node_modules/aws-xray-sdk-mysql": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.10.0.tgz", - "integrity": "sha512-RoyZkv1kRwKBBc0XsL1TK2cIqiqZ1ZJUPnf1+2n8X9HlnhjOKhl9PiD+kelcI7opDUa+vlrVD9SB65YWF6JAPA==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.10.1.tgz", + "integrity": "sha512-xUl8YSRzgua0zXgaJ7cd70UMiTcepiQYnf5lNIINeby/9quv+5ObhgIzzfNiLiD9SMAQRFx710Nh0rkjieCgVA==", "dependencies": { "@types/mysql": "*" }, @@ -20031,13 +20033,13 @@ "node": ">= 14.x" }, "peerDependencies": { - "aws-xray-sdk-core": "^3.10.0" + "aws-xray-sdk-core": "^3.10.1" } }, "node_modules/aws-xray-sdk-postgres": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.10.0.tgz", - "integrity": "sha512-ChpCA0OVYTrJoqpAyoQR4xBA7YBWNHA3feeQeNccTPT9BREkQx4lEEH2oFPeZhGfrqFXs3UT0AosW1i+QgQetg==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.10.1.tgz", + "integrity": "sha512-uZ0OtS6PWonrar3hUqyzftyFro4YnQrbii6ZudsiEFJu+/k6nwmVU4H5leM6jHP4Lt6pgjUhCwGvxTlNBZeAEA==", "dependencies": { "@types/pg": "*" }, @@ -20045,7 +20047,7 @@ "node": ">= 14.x" }, "peerDependencies": { - "aws-xray-sdk-core": "^3.10.0" + "aws-xray-sdk-core": "^3.10.1" } }, "node_modules/aws4": { @@ -22305,23 +22307,17 @@ "dev": true }, "node_modules/cssstyle": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", - "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz", + "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==", "dev": true, "dependencies": { - "rrweb-cssom": "^0.6.0" + "rrweb-cssom": "^0.7.1" }, "engines": { "node": ">=18" } }, - "node_modules/cssstyle/node_modules/rrweb-cssom": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", - "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", - "dev": true - }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -23975,9 +23971,9 @@ } }, "node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, "hasInstallScript": true, "bin": { @@ -23987,30 +23983,30 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" } }, "node_modules/esbuild-css-modules-plugin": { @@ -24627,9 +24623,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.35.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz", - "integrity": "sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==", + "version": "7.36.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz", + "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==", "dev": true, "dependencies": { "array-includes": "^3.1.8", @@ -25312,9 +25308,9 @@ } }, "node_modules/express": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", - "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -25328,7 +25324,7 @@ "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", "merge-descriptors": "1.0.3", @@ -25337,11 +25333,11 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.19.0", - "serve-static": "1.16.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -25373,20 +25369,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/express/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/ext": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", @@ -25688,12 +25670,12 @@ "dev": true }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -25712,6 +25694,14 @@ "ms": "2.0.0" } }, + "node_modules/finalhandler/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -26956,9 +26946,9 @@ } }, "node_modules/husky": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.5.tgz", - "integrity": "sha512-rowAVRUBfI0b4+niA4SJMhfQwc107VLkBUgEYYAOQAbqDCnra1nYh83hF/MDmhYs9t9n1E3DuKOrs2LYNC+0Ag==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz", + "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==", "dev": true, "bin": { "husky": "bin.js" @@ -29700,12 +29690,12 @@ "dev": true }, "node_modules/jsdom": { - "version": "25.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.0.tgz", - "integrity": "sha512-OhoFVT59T7aEq75TVw9xxEfkXgacpqAhQaYgP9y/fDqWQCMB/b1H66RfmPm/MaeaAIU9nDwMOVTlPN51+ao6CQ==", + "version": "25.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz", + "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==", "dev": true, "dependencies": { - "cssstyle": "^4.0.1", + "cssstyle": "^4.1.0", "data-urls": "^5.0.0", "decimal.js": "^10.4.3", "form-data": "^4.0.0", @@ -29718,7 +29708,7 @@ "rrweb-cssom": "^0.7.1", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.4", + "tough-cookie": "^5.0.0", "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", "whatwg-encoding": "^3.1.1", @@ -29764,39 +29754,6 @@ "node": ">= 14" } }, - "node_modules/jsdom/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsdom/node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsdom/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/jsdom/node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", @@ -32125,9 +32082,9 @@ } }, "node_modules/nodemon": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.4.tgz", - "integrity": "sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.7.tgz", + "integrity": "sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==", "dev": true, "dependencies": { "chokidar": "^3.5.2", @@ -33306,9 +33263,9 @@ } }, "node_modules/pg-protocol": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", - "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==" }, "node_modules/pg-types": { "version": "4.0.2", @@ -33339,9 +33296,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -33610,9 +33567,9 @@ } }, "node_modules/postcss": { - "version": "8.4.45", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", - "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "dev": true, "funding": [ { @@ -33630,8 +33587,8 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -34171,9 +34128,9 @@ } }, "node_modules/postcss-preset-env": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.0.3.tgz", - "integrity": "sha512-1nrZ4IeBXEEj53IMoRKE+k/Ub6nQb3gFjaxTeyUNG5zv3JQclFDY5GKKhAi3nsa1lnPMWgzQX+/1y6wUt2+I7Q==", + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.0.5.tgz", + "integrity": "sha512-ipPOgr3RY0utgJDbNoCX2dxKoQ4e4WO1pC21QhDlxCAX8+qC8O2Ezkzb54fd+8XtZ1UveA5gLjBsVo6dJDoWIg==", "dev": true, "funding": [ { @@ -34198,7 +34155,7 @@ "@csstools/postcss-ic-unit": "^4.0.0", "@csstools/postcss-initial": "^2.0.0", "@csstools/postcss-is-pseudo-class": "^5.0.0", - "@csstools/postcss-light-dark-function": "^2.0.2", + "@csstools/postcss-light-dark-function": "^2.0.4", "@csstools/postcss-logical-float-and-clear": "^3.0.0", "@csstools/postcss-logical-overflow": "^2.0.0", "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", @@ -35479,9 +35436,9 @@ } }, "node_modules/react-select": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.0.tgz", - "integrity": "sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.1.tgz", + "integrity": "sha512-RT1CJmuc+ejqm5MPgzyZujqDskdvB9a9ZqrdnVLsvAHjJ3Tj0hELnLeVPQlmYdVKCdCpxanepl6z7R5KhXhWzg==", "dependencies": { "@babel/runtime": "^7.12.0", "@emotion/cache": "^11.4.0", @@ -36240,12 +36197,12 @@ } }, "node_modules/sass": { - "version": "1.78.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.78.0.tgz", - "integrity": "sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==", + "version": "1.79.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.3.tgz", + "integrity": "sha512-m7dZxh0W9EZ3cw50Me5GOuYm/tVAJAn91SUnohLRo9cXBixGUOdvmryN+dXpwR831bhoY3Zv7rEFt85PUwTmzA==", "dev": true, "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", + "chokidar": "^4.0.0", "immutable": "^4.0.0", "source-map-js": ">=0.6.2 <2.0.0" }, @@ -36310,9 +36267,9 @@ } }, "node_modules/sass-loader": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.1.tgz", - "integrity": "sha512-xACl1ToTsKnL9Ce5yYpRxrLj9QUDCnwZNhzpC7tKiFyA8zXsd3Ap+HGVnbCgkdQcm43E+i6oKAWBsvGA6ZoiMw==", + "version": "16.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.2.tgz", + "integrity": "sha512-Ll6iXZ1EYwYT19SqW4mSBb76vSSi8JgzElmzIerhEGgzB5hRjDQIWsPmuk1UrAXkR16KJHqVY0eH+5/uw9Tmfw==", "dev": true, "dependencies": { "neo-async": "^2.6.2" @@ -36373,6 +36330,34 @@ "node": ">=14" } }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "dev": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.1.tgz", + "integrity": "sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==", + "dev": true, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", @@ -36487,53 +36472,25 @@ } }, "node_modules/serve-static": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", - "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/serve-static/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-static/node_modules/debug/node_modules/ms": { + "node_modules/serve-static/node_modules/encodeurl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/serve-static/node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "engines": { - "node": ">= 0.8.0" + "node": ">= 0.8" } }, "node_modules/servor": { @@ -36957,9 +36914,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -38668,9 +38625,9 @@ } }, "node_modules/tough-cookie": { - "version": "5.0.0-rc.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0-rc.4.tgz", - "integrity": "sha512-EN59UG6X/O6Nz2p21O6UK8R97zvLETOZ9+FGNdo56VuJZ8cftVCZ6tyxvedkQBfcX22avA1HY+4n04OVT2q6cw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", + "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==", "dev": true, "dependencies": { "tldts": "^6.1.32" diff --git a/package.json b/package.json index 392498c41ec..9ce4113536c 100644 --- a/package.json +++ b/package.json @@ -11,33 +11,33 @@ "dependencies": { "@18f/us-federal-holidays": "4.0.0", "@aws-crypto/sha256-browser": "5.2.0", - "@aws-sdk/client-api-gateway": "3.650.0", - "@aws-sdk/client-apigatewaymanagementapi": "3.650.0", - "@aws-sdk/client-apigatewayv2": "3.650.0", - "@aws-sdk/client-cloudfront": "3.650.0", - "@aws-sdk/client-cloudwatch": "3.650.0", - "@aws-sdk/client-cloudwatch-logs": "3.650.0", - "@aws-sdk/client-cognito-identity-provider": "3.650.0", - "@aws-sdk/client-dynamodb": "3.650.0", - "@aws-sdk/client-dynamodb-streams": "3.650.0", - "@aws-sdk/client-glue": "3.650.0", - "@aws-sdk/client-lambda": "3.650.0", - "@aws-sdk/client-opensearch": "3.650.0", - "@aws-sdk/client-route-53": "3.650.0", - "@aws-sdk/client-s3": "3.650.0", - "@aws-sdk/client-ses": "3.650.0", - "@aws-sdk/client-sns": "3.650.0", - "@aws-sdk/client-sqs": "3.650.0", - "@aws-sdk/client-ssm": "3.650.0", - "@aws-sdk/credential-provider-node": "3.650.0", - "@aws-sdk/lib-dynamodb": "3.650.0", - "@aws-sdk/lib-storage": "3.650.0", + "@aws-sdk/client-api-gateway": "3.654.0", + "@aws-sdk/client-apigatewaymanagementapi": "3.654.0", + "@aws-sdk/client-apigatewayv2": "3.654.0", + "@aws-sdk/client-cloudfront": "3.654.0", + "@aws-sdk/client-cloudwatch": "3.654.0", + "@aws-sdk/client-cloudwatch-logs": "3.654.0", + "@aws-sdk/client-cognito-identity-provider": "3.654.0", + "@aws-sdk/client-dynamodb": "3.656.0", + "@aws-sdk/client-dynamodb-streams": "3.654.0", + "@aws-sdk/client-glue": "3.655.0", + "@aws-sdk/client-lambda": "3.656.0", + "@aws-sdk/client-opensearch": "3.654.0", + "@aws-sdk/client-route-53": "3.654.0", + "@aws-sdk/client-s3": "3.654.0", + "@aws-sdk/client-ses": "3.654.0", + "@aws-sdk/client-sns": "3.654.0", + "@aws-sdk/client-sqs": "3.654.0", + "@aws-sdk/client-ssm": "3.654.0", + "@aws-sdk/credential-provider-node": "3.654.0", + "@aws-sdk/lib-dynamodb": "3.656.0", + "@aws-sdk/lib-storage": "3.654.0", "@aws-sdk/node-http-handler": "3.374.0", "@aws-sdk/protocol-http": "3.374.0", - "@aws-sdk/s3-presigned-post": "3.650.0", - "@aws-sdk/s3-request-presigner": "3.650.0", + "@aws-sdk/s3-presigned-post": "3.654.0", + "@aws-sdk/s3-request-presigner": "3.654.0", "@aws-sdk/signature-v4": "3.374.0", - "@aws-sdk/util-dynamodb": "3.650.0", + "@aws-sdk/util-dynamodb": "3.656.0", "@cerebral/react": "4.2.1", "@fortawesome/fontawesome-svg-core": "1.2.36", "@fortawesome/free-regular-svg-icons": "5.15.4", @@ -48,7 +48,7 @@ "@sparticuz/chromium": "127.0.0", "@uswds/uswds": "3.7.1", "aws-lambda": "1.0.7", - "aws-xray-sdk": "3.10.0", + "aws-xray-sdk": "3.10.1", "axios": "1.7.7", "broadcast-channel": "7.0.0", "canvas": "2.11.2", @@ -62,7 +62,7 @@ "diff-arrays-of-objects": "1.1.9", "english-ordinals": "3.3.0", "export-to-csv": "1.4.0", - "express": "4.20.0", + "express": "4.21.0", "fflate": "0.8.2", "form-data": "4.0.0", "image-blob-reduce": "4.1.0", @@ -86,7 +86,7 @@ "react-number-format": "5.4.2", "react-quill": "2.0.0", "react-responsive": "10.0.0", - "react-select": "5.8.0", + "react-select": "5.8.1", "riot-route": "3.1.4", "sanitize-filename": "1.6.3", "servor": "4.0.2", @@ -242,8 +242,8 @@ "ejs": "3.1.10" }, "devDependencies": { - "@aws-sdk/client-iam": "3.650.0", - "@aws-sdk/client-secrets-manager": "3.650.0", + "@aws-sdk/client-iam": "3.654.0", + "@aws-sdk/client-secrets-manager": "3.654.0", "@babel/cli": "7.25.6", "@babel/core": "7.25.2", "@babel/eslint-parser": "7.25.1", @@ -252,20 +252,20 @@ "@babel/preset-typescript": "7.24.7", "@babel/register": "7.24.6", "@cypress/puppeteer": "^0.1.5", - "@faker-js/faker": "9.0.0", + "@faker-js/faker": "9.0.1", "@miovision/eslint-plugin-disallow-date": "2.0.0", "@types/aws-lambda": "8.10.145", - "@types/jest": "29.5.12", + "@types/jest": "29.5.13", "@types/lodash": "4.17.7", "@types/luxon": "3.4.2", - "@types/node": "22.5.4", + "@types/node": "22.5.5", "@types/promise-retry": "1.1.6", - "@types/react": "18.3.5", + "@types/react": "18.3.8", "@types/react-dom": "18.3.0", "@types/uuid": "10.0.0", "@types/websocket": "1.0.10", - "@typescript-eslint/eslint-plugin": "8.5.0", - "@typescript-eslint/parser": "8.5.0", + "@typescript-eslint/eslint-plugin": "8.6.0", + "@typescript-eslint/parser": "8.6.0", "@vendia/serverless-express": "4.12.6", "artillery": "2.0.20", "artillery-plugin-metrics-by-endpoint": "1.14.0", @@ -283,7 +283,7 @@ "decimal.js": "10.4.3", "dynamodb-admin": "4.6.1", "dynamodb-streams-readable": "3.0.0", - "esbuild": "0.23.1", + "esbuild": "0.24.0", "esbuild-css-modules-plugin": "3.1.2", "esbuild-plugin-babel-cached": "0.2.3", "esbuild-plugin-clean": "1.0.1", @@ -301,34 +301,34 @@ "eslint-plugin-jsx-a11y": "6.10.0", "eslint-plugin-prettier": "5.2.1", "eslint-plugin-promise": "7.1.0", - "eslint-plugin-react": "7.35.2", + "eslint-plugin-react": "7.36.1", "eslint-plugin-security": "3.0.1", "eslint-plugin-sort-destructure-keys": "2.0.0", "eslint-plugin-sort-imports-es6-autofix": "0.6.0", "eslint-plugin-sort-keys-fix": "1.1.2", "eslint-plugin-sort-requires-fix": "2.1.2", "eslint-plugin-spellcheck": "0.0.20", - "husky": "9.1.5", + "husky": "9.1.6", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-environment-node": "29.7.0", - "jsdom": "25.0.0", + "jsdom": "25.0.1", "lint-staged": "15.2.10", "lint-staged-shellcheck": "0.1.2", "livereload": "0.9.3", - "nodemon": "3.1.4", + "nodemon": "3.1.7", "pdf2pic": "3.1.3", "pixelmatch": "6.0.0", "pngjs": "7.0.0", - "postcss": "8.4.45", - "postcss-preset-env": "10.0.3", + "postcss": "8.4.47", + "postcss-preset-env": "10.0.5", "prettier": "3.3.3", "puppeteer": "23.0.0", "puppeteer-core": "23.0.0", "readline": "1.3.0", "s3rver": "github:20minutes/s3rver", - "sass": "1.78.0", - "sass-loader": "16.0.1", + "sass": "1.79.3", + "sass-loader": "16.0.2", "shuffle-seed": "1.1.6", "stream-browserify": "3.0.0", "stylelint": "16.9.0", From ee7ca6f492d8133d4ad6f8cfec300043401eb682 Mon Sep 17 00:00:00 2001 From: Kaitlyn Swann Date: Mon, 23 Sep 2024 10:09:14 -0600 Subject: [PATCH 51/65] dep-updates-09-23-2024: audit fix --- package-lock.json | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3a8e56237db..e11e996bd17 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14513,9 +14513,9 @@ } }, "node_modules/@koa/router/node_modules/path-to-regexp": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", "dev": true }, "node_modules/@mapbox/node-pre-gyp": { @@ -18041,18 +18041,6 @@ "@types/json-schema": "*" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -31912,9 +31900,9 @@ } }, "node_modules/nise/node_modules/path-to-regexp": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", "dev": true }, "node_modules/node-fetch": { @@ -39619,14 +39607,13 @@ } }, "node_modules/webpack": { - "version": "5.93.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz", - "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dev": true, "optional": true, "peer": true, "dependencies": { - "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", @@ -39635,7 +39622,7 @@ "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", From e5ea0a79cabc0f1132f93f47b90724878320025a Mon Sep 17 00:00:00 2001 From: Kaitlyn Swann Date: Mon, 23 Sep 2024 10:11:30 -0600 Subject: [PATCH 52/65] dep-updates-09-23-2024: update sass version --- web-api/runtimes/puppeteer/package-lock.json | 196 ++----------------- web-api/runtimes/puppeteer/package.json | 2 +- 2 files changed, 19 insertions(+), 179 deletions(-) diff --git a/web-api/runtimes/puppeteer/package-lock.json b/web-api/runtimes/puppeteer/package-lock.json index 5c537e481f3..2521e57c058 100644 --- a/web-api/runtimes/puppeteer/package-lock.json +++ b/web-api/runtimes/puppeteer/package-lock.json @@ -12,7 +12,7 @@ "@sparticuz/chromium": "127.0.0", "pug": "3.0.3", "puppeteer-core": "23.0.0", - "sass": "1.77.8" + "sass": "1.79.3" }, "engines": { "node": ">=20.12.0 <21.0.0", @@ -164,19 +164,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -291,30 +278,6 @@ "node": ">=10.0.0" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -375,27 +338,17 @@ } }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" } }, "node_modules/chromium-bidi": { @@ -639,18 +592,6 @@ "pend": "~1.2.0" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/follow-redirects": { "version": "1.15.6", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", @@ -684,20 +625,6 @@ "node": ">=14.14" } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -762,18 +689,6 @@ "node": ">= 14" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -915,18 +830,6 @@ "node": ">= 12" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -949,15 +852,6 @@ "object-assign": "^4.1.1" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -966,27 +860,6 @@ "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/is-promise": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", @@ -1067,15 +940,6 @@ "node": ">= 0.4.0" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -1135,18 +999,6 @@ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -1343,15 +1195,15 @@ "license": "MIT" }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.1.tgz", + "integrity": "sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==", "engines": { - "node": ">=8.10.0" + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/require-directory": { @@ -1380,11 +1232,11 @@ } }, "node_modules/sass": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", - "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", + "version": "1.79.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.3.tgz", + "integrity": "sha512-m7dZxh0W9EZ3cw50Me5GOuYm/tVAJAn91SUnohLRo9cXBixGUOdvmryN+dXpwR831bhoY3Zv7rEFt85PUwTmzA==", "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", + "chokidar": "^4.0.0", "immutable": "^4.0.0", "source-map-js": ">=0.6.2 <2.0.0" }, @@ -1579,18 +1431,6 @@ "node": ">=4" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/token-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", diff --git a/web-api/runtimes/puppeteer/package.json b/web-api/runtimes/puppeteer/package.json index 4185b1d0e53..e5d849b771e 100644 --- a/web-api/runtimes/puppeteer/package.json +++ b/web-api/runtimes/puppeteer/package.json @@ -11,7 +11,7 @@ "@sparticuz/chromium": "127.0.0", "pug": "3.0.3", "puppeteer-core": "23.0.0", - "sass": "1.77.8" + "sass": "1.79.3" }, "scripts": {}, "main": "index.js", From 0e32d730273424f8833953c9b926435c7f218575 Mon Sep 17 00:00:00 2001 From: Kaitlyn Swann Date: Mon, 23 Sep 2024 10:17:21 -0600 Subject: [PATCH 53/65] dep-updates-09-23-2024: update dockerfile and aws provider --- Dockerfile | 6 +++--- shared/admin-tools/glue/glue_migrations/main.tf | 2 +- shared/admin-tools/glue/remote_role/main.tf | 2 +- .../applyables/account-specific/account-specific.tf | 2 +- web-api/terraform/applyables/allColors/allColors.tf | 2 +- web-api/terraform/applyables/blue/blue.tf | 2 +- .../terraform/applyables/glue-cron/glue-cron-applyable.tf | 2 +- web-api/terraform/applyables/green/green.tf | 2 +- .../applyables/migration-cron/migration-cron-applyable.tf | 2 +- .../terraform/applyables/migration/migration-applyable.tf | 2 +- .../applyables/reindex-cron/reindex-cron-applyable.tf | 2 +- .../switch-colors-cron/switch-colors-cron-applyable.tf | 2 +- .../wait-for-workflow/wait-for-workflow-cron-applyable.tf | 2 +- 13 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3dcdcf07914..b8a69a35597 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # Note: node-20.14.0-chrome-125.0.* is debian 12.5 (bookworm) -FROM cypress/browsers:node-20.17.0-chrome-128.0.6613.119-1-ff-130.0-edge-128.0.2739.63-1 +FROM cypress/browsers:node-20.17.0-chrome-128.0.6613.137-1-ff-130.0.1-edge-128.0.2739.67-1 WORKDIR /home/app @@ -37,12 +37,12 @@ RUN apt-get install -y build-essential RUN apt-get install -y libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 -RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.17.49.zip" -o "awscliv2.zip" && \ +RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.17.56.zip" -o "awscliv2.zip" && \ unzip awscliv2.zip && \ ./aws/install && \ rm -rf awscliv2.zip -RUN wget -q -O terraform.zip https://releases.hashicorp.com/terraform/1.9.5/terraform_1.9.5_linux_amd64.zip && \ +RUN wget -q -O terraform.zip https://releases.hashicorp.com/terraform/1.9.6/terraform_1.9.6_linux_amd64.zip && \ unzip -o terraform.zip terraform && \ rm terraform.zip && \ cp terraform /usr/local/bin/ diff --git a/shared/admin-tools/glue/glue_migrations/main.tf b/shared/admin-tools/glue/glue_migrations/main.tf index 4d66846c905..6a98e601e23 100644 --- a/shared/admin-tools/glue/glue_migrations/main.tf +++ b/shared/admin-tools/glue/glue_migrations/main.tf @@ -7,7 +7,7 @@ terraform { } required_providers { - aws = "5.67.0" + aws = "5.68.0" } } diff --git a/shared/admin-tools/glue/remote_role/main.tf b/shared/admin-tools/glue/remote_role/main.tf index 0e06710bb09..a307b151868 100644 --- a/shared/admin-tools/glue/remote_role/main.tf +++ b/shared/admin-tools/glue/remote_role/main.tf @@ -7,7 +7,7 @@ terraform { } required_providers { - aws = "5.67.0" + aws = "5.68.0" } } diff --git a/web-api/terraform/applyables/account-specific/account-specific.tf b/web-api/terraform/applyables/account-specific/account-specific.tf index 32f1cfe8b4d..b8057ec3d63 100644 --- a/web-api/terraform/applyables/account-specific/account-specific.tf +++ b/web-api/terraform/applyables/account-specific/account-specific.tf @@ -16,7 +16,7 @@ terraform { backend "s3" {} required_providers { - aws = "5.67.0" + aws = "5.68.0" opensearch = { source = "opensearch-project/opensearch" version = "2.2.0" diff --git a/web-api/terraform/applyables/allColors/allColors.tf b/web-api/terraform/applyables/allColors/allColors.tf index 45ba6815815..66fb9dcb733 100644 --- a/web-api/terraform/applyables/allColors/allColors.tf +++ b/web-api/terraform/applyables/allColors/allColors.tf @@ -17,7 +17,7 @@ terraform { } required_providers { - aws = "5.67.0" + aws = "5.68.0" } } diff --git a/web-api/terraform/applyables/blue/blue.tf b/web-api/terraform/applyables/blue/blue.tf index b712ed8da94..2287eaba16f 100644 --- a/web-api/terraform/applyables/blue/blue.tf +++ b/web-api/terraform/applyables/blue/blue.tf @@ -18,7 +18,7 @@ terraform { } required_providers { - aws = "5.67.0" + aws = "5.68.0" } } diff --git a/web-api/terraform/applyables/glue-cron/glue-cron-applyable.tf b/web-api/terraform/applyables/glue-cron/glue-cron-applyable.tf index 890c2fb03b6..57273eadc9d 100644 --- a/web-api/terraform/applyables/glue-cron/glue-cron-applyable.tf +++ b/web-api/terraform/applyables/glue-cron/glue-cron-applyable.tf @@ -7,7 +7,7 @@ terraform { } required_providers { - aws = "5.67.0" + aws = "5.68.0" } } diff --git a/web-api/terraform/applyables/green/green.tf b/web-api/terraform/applyables/green/green.tf index 956ed38399e..3a435097cd2 100644 --- a/web-api/terraform/applyables/green/green.tf +++ b/web-api/terraform/applyables/green/green.tf @@ -18,7 +18,7 @@ terraform { } required_providers { - aws = "5.67.0" + aws = "5.68.0" } } diff --git a/web-api/terraform/applyables/migration-cron/migration-cron-applyable.tf b/web-api/terraform/applyables/migration-cron/migration-cron-applyable.tf index 59beb477411..cad69392b93 100644 --- a/web-api/terraform/applyables/migration-cron/migration-cron-applyable.tf +++ b/web-api/terraform/applyables/migration-cron/migration-cron-applyable.tf @@ -7,7 +7,7 @@ terraform { } required_providers { - aws = "5.67.0" + aws = "5.68.0" } } diff --git a/web-api/terraform/applyables/migration/migration-applyable.tf b/web-api/terraform/applyables/migration/migration-applyable.tf index dabef7aa0c8..8fc83c9219f 100644 --- a/web-api/terraform/applyables/migration/migration-applyable.tf +++ b/web-api/terraform/applyables/migration/migration-applyable.tf @@ -7,7 +7,7 @@ terraform { } required_providers { - aws = "5.67.0" + aws = "5.68.0" } } diff --git a/web-api/terraform/applyables/reindex-cron/reindex-cron-applyable.tf b/web-api/terraform/applyables/reindex-cron/reindex-cron-applyable.tf index b96c8b7c0cf..0f1f0e98a49 100644 --- a/web-api/terraform/applyables/reindex-cron/reindex-cron-applyable.tf +++ b/web-api/terraform/applyables/reindex-cron/reindex-cron-applyable.tf @@ -7,7 +7,7 @@ terraform { } required_providers { - aws = "5.67.0" + aws = "5.68.0" } } diff --git a/web-api/terraform/applyables/switch-colors-cron/switch-colors-cron-applyable.tf b/web-api/terraform/applyables/switch-colors-cron/switch-colors-cron-applyable.tf index 624a36d3825..2c685efe18e 100644 --- a/web-api/terraform/applyables/switch-colors-cron/switch-colors-cron-applyable.tf +++ b/web-api/terraform/applyables/switch-colors-cron/switch-colors-cron-applyable.tf @@ -7,7 +7,7 @@ terraform { } required_providers { - aws = "5.67.0" + aws = "5.68.0" } } diff --git a/web-api/terraform/applyables/wait-for-workflow/wait-for-workflow-cron-applyable.tf b/web-api/terraform/applyables/wait-for-workflow/wait-for-workflow-cron-applyable.tf index bd47eead54b..a406fbe192f 100644 --- a/web-api/terraform/applyables/wait-for-workflow/wait-for-workflow-cron-applyable.tf +++ b/web-api/terraform/applyables/wait-for-workflow/wait-for-workflow-cron-applyable.tf @@ -7,7 +7,7 @@ terraform { } required_providers { - aws = "5.67.0" + aws = "5.68.0" } } From 1b0480817952dfcf90cff28044c8d9de929c226b Mon Sep 17 00:00:00 2001 From: Kaitlyn Swann Date: Mon, 23 Sep 2024 10:25:57 -0600 Subject: [PATCH 54/65] dep-updates-09-23-2024: add new ecr --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 75ea8200993..3e5907ed2a4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2.1 orbs: git-shallow-clone: guitarrapc/git-shallow-clone@2.8.0 -efcms-docker-image: &efcms-docker-image $AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/ef-cms-us-east-1:4.3.10 +efcms-docker-image: &efcms-docker-image $AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/ef-cms-us-east-1:4.3.11 parameters: run_build_and_deploy: From 7f61feaee1e62bce033c5ab9bd5e40456e50b3ed Mon Sep 17 00:00:00 2001 From: Kaitlyn Swann Date: Mon, 23 Sep 2024 10:39:44 -0600 Subject: [PATCH 55/65] update tf version --- scripts/verify-terraform-version.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/verify-terraform-version.sh b/scripts/verify-terraform-version.sh index 27bf9bd3a41..5262512f614 100755 --- a/scripts/verify-terraform-version.sh +++ b/scripts/verify-terraform-version.sh @@ -2,7 +2,7 @@ tf_version=$(terraform --version) -if [[ ${tf_version} != *"1.9.5"* ]]; then - echo "Please set your terraform version to 1.9.5 before deploying." +if [[ ${tf_version} != *"1.9.6"* ]]; then + echo "Please set your terraform version to 1.9.6 before deploying." exit 1 fi From e6a31a4b27ef060b2b2849076b6fb824ccff6275 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Mon, 23 Sep 2024 13:27:46 -0400 Subject: [PATCH 56/65] 10501-bug: sync branch with test --- .../local-only/support/pages/document-qc.ts | 17 +++-- .../messages/chambers-dropdown.cy.ts | 68 +++++++++++++++++++ ...openCompleteAndSendMessageModalSequence.ts | 2 + .../openForwardMessageModalSequence.ts | 2 + 4 files changed, 83 insertions(+), 6 deletions(-) create mode 100644 cypress/local-only/tests/integration/messages/chambers-dropdown.cy.ts diff --git a/cypress/local-only/support/pages/document-qc.ts b/cypress/local-only/support/pages/document-qc.ts index cb2aa0beae6..47f5a53e589 100644 --- a/cypress/local-only/support/pages/document-qc.ts +++ b/cypress/local-only/support/pages/document-qc.ts @@ -35,14 +35,22 @@ export const fillOutMessageField = () => { cy.get('#message').clear().type("I don't appreciate your lack of sarcasm."); }; -export const enterSubject = () => { - cy.get('#subject').clear().type('Demeanor'); +export const enterSubject = (subject?: string) => { + cy.get('#subject') + .clear() + .type(subject || 'Demeanor'); }; export const sendMessage = () => { cy.get('#confirm').click(); }; +export const forwardMessage = (messageSubject: string) => { + cy.get('#tab-case-messages').click(); + cy.contains('a', messageSubject).click(); + cy.get('#button-forward').click(); +}; + export const progressIndicatorDoesNotExist = () => { cy.get('.progress-indicator').should('not.exist'); }; @@ -52,10 +60,7 @@ export const uploadCourtIssuedDocumentAndEditViaDocumentQC = () => { const freeText = `court document ${Math.random()}`; cy.get('#upload-description').clear(); cy.get('#upload-description').type(freeText); - cy.get('input#primary-document-file').attachFile( - '../../helpers/file/sample.pdf', - ); - cy.get('[data-testid="upload-file-success"]'); + cy.attachFile('../../helpers/file/sample.pdf'); cy.get('#save-uploaded-pdf-button').click(); cy.get('#add-court-issued-docket-entry-button').click(); cy.get('#document-type .select-react-element__input-container input').clear(); diff --git a/cypress/local-only/tests/integration/messages/chambers-dropdown.cy.ts b/cypress/local-only/tests/integration/messages/chambers-dropdown.cy.ts new file mode 100644 index 00000000000..dbff0f8d3a9 --- /dev/null +++ b/cypress/local-only/tests/integration/messages/chambers-dropdown.cy.ts @@ -0,0 +1,68 @@ +import { + createMessage, + enterSubject, + fillOutMessageField, + forwardMessage, + goToDocumentNeedingQC, + openCompleteAndSendMessageDialog, + selectChambers, + selectRecipient, + selectSection, + sendMessage, +} from '../../../support/pages/document-qc'; +import { goToCase } from '../../../../helpers/caseDetail/go-to-case'; +import { loginAsDocketClerk } from '../../../../helpers/authentication/login-as-helpers'; +import { v4 } from 'uuid'; + +describe('BUG: chambers dropdown should be populated in message modals', () => { + const chambersSection = 'buchsChambers'; + const recipient = 'Judge Buch'; + const caseNumber = '103-20'; + const messageToForwardSubject = v4(); + + before(() => { + // Send a message that we will forward later. + // We do this here rather than in the message forward test itself because + // judgesChambers are cached, so the message forward test could + // "pass" when it shouldn't if we create a message (and populate cache) first. + loginAsDocketClerk(); + goToCase(caseNumber); + createMessage(); + selectSection('Docket'); + selectRecipient('Test Docketclerk'); + enterSubject(messageToForwardSubject); + fillOutMessageField(); + sendMessage(); + }); + + it('should have nonempty chambers section in create new message modal', () => { + loginAsDocketClerk(); + goToCase(caseNumber); + createMessage(); + + selectSection('Chambers'); + selectChambers(chambersSection); + selectRecipient(recipient); + }); + + it('should have nonempty chambers sections in forward message modal', () => { + loginAsDocketClerk(); + goToCase(caseNumber); + forwardMessage(messageToForwardSubject); + + selectSection('Chambers'); + selectChambers(chambersSection); + selectRecipient(recipient); + }); + + it('should have nonempty chambers sections in docket QC complete and send message modal', () => { + cy.login('docketclerk', '/document-qc/section/inbox'); + cy.get('.big-blue-header').should('exist'); + goToDocumentNeedingQC(); + openCompleteAndSendMessageDialog(); + + selectSection('Chambers'); + selectChambers(chambersSection); + selectRecipient(recipient); + }); +}); diff --git a/web-client/src/presenter/sequences/openCompleteAndSendMessageModalSequence.ts b/web-client/src/presenter/sequences/openCompleteAndSendMessageModalSequence.ts index 72b6b6da4af..b94eaa911f4 100644 --- a/web-client/src/presenter/sequences/openCompleteAndSendMessageModalSequence.ts +++ b/web-client/src/presenter/sequences/openCompleteAndSendMessageModalSequence.ts @@ -1,6 +1,7 @@ import { clearModalStateAction } from '../actions/clearModalStateAction'; import { generateTitleAction } from '../actions/FileDocument/generateTitleAction'; import { getCaseAction } from '../actions/getCaseAction'; +import { getJudgesChambersSequence } from '@web-client/presenter/sequences/getJudgesChambersSequence'; import { isWorkItemAlreadyCompletedAction } from '../actions/isWorkItemAlreadyCompletedAction'; import { refreshExternalDocumentTitleFromEventCodeAction } from '../actions/FileDocument/refreshExternalDocumentTitleFromEventCodeAction'; import { setAlertErrorAction } from '../actions/setAlertErrorAction'; @@ -29,6 +30,7 @@ export const openCompleteAndSendMessageModalSequence = [ ], success: [ clearModalStateAction, + getJudgesChambersSequence, refreshExternalDocumentTitleFromEventCodeAction, setPreviousDocumentDocketEntryAction, generateTitleAction, diff --git a/web-client/src/presenter/sequences/openForwardMessageModalSequence.ts b/web-client/src/presenter/sequences/openForwardMessageModalSequence.ts index 01cfc5e15d8..73ec32cead0 100644 --- a/web-client/src/presenter/sequences/openForwardMessageModalSequence.ts +++ b/web-client/src/presenter/sequences/openForwardMessageModalSequence.ts @@ -1,4 +1,5 @@ import { clearModalStateAction } from '../actions/clearModalStateAction'; +import { getJudgesChambersSequence } from '@web-client/presenter/sequences/getJudgesChambersSequence'; import { getMostRecentMessageInThreadAction } from '../actions/getMostRecentMessageInThreadAction'; import { setForwardMessageModalDialogModalStateAction } from '../actions/WorkItem/setForwardMessageModalDialogModalStateAction'; import { setShowModalFactoryAction } from '../actions/setShowModalFactoryAction'; @@ -6,6 +7,7 @@ import { setShowModalFactoryAction } from '../actions/setShowModalFactoryAction' export const openForwardMessageModalSequence = [ clearModalStateAction, getMostRecentMessageInThreadAction, + getJudgesChambersSequence, setForwardMessageModalDialogModalStateAction, setShowModalFactoryAction('ForwardMessageModal'), ]; From 152726dd0e33d6739a46ddc15c14a865f9446e7b Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Mon, 23 Sep 2024 13:32:38 -0400 Subject: [PATCH 57/65] 10501-bug: undo unnecessary change to document-qc.ts --- cypress/local-only/support/pages/document-qc.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cypress/local-only/support/pages/document-qc.ts b/cypress/local-only/support/pages/document-qc.ts index 47f5a53e589..2332404757b 100644 --- a/cypress/local-only/support/pages/document-qc.ts +++ b/cypress/local-only/support/pages/document-qc.ts @@ -60,7 +60,10 @@ export const uploadCourtIssuedDocumentAndEditViaDocumentQC = () => { const freeText = `court document ${Math.random()}`; cy.get('#upload-description').clear(); cy.get('#upload-description').type(freeText); - cy.attachFile('../../helpers/file/sample.pdf'); + cy.get('input#primary-document-file').attachFile( + '../../helpers/file/sample.pdf', + ); + cy.get('[data-testid="upload-file-success"]'); cy.get('#save-uploaded-pdf-button').click(); cy.get('#add-court-issued-docket-entry-button').click(); cy.get('#document-type .select-react-element__input-container input').clear(); From 6133555e64046bfb410e115e24fc8acfc1da3123 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 20 Sep 2024 11:46:21 -0400 Subject: [PATCH 58/65] 10001-design-debt: disallow any pdfs that block user edits --- cypress/helpers/file/Lubbock_secured.pdf | Bin 0 -> 151676 bytes .../upload-court-issued-pdf-validation.cy.ts | 15 +++++++++ .../FileHandlingHelpers/pdfValidation.test.ts | 30 +++++++++++++++++- .../FileHandlingHelpers/pdfValidation.ts | 28 ++++++++++------ .../pdfValidationHelpers.ts | 15 +++++++++ 5 files changed, 77 insertions(+), 11 deletions(-) create mode 100644 cypress/helpers/file/Lubbock_secured.pdf create mode 100644 web-client/src/views/FileHandlingHelpers/pdfValidationHelpers.ts diff --git a/cypress/helpers/file/Lubbock_secured.pdf b/cypress/helpers/file/Lubbock_secured.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5d7e18683ebdf6b814889b8597eeae984049ff76 GIT binary patch literal 151676 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


wyRv8ZU@_h|mV{)wm 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 { ); }); + it('should display error modal when a readonly pdf is selected', () => { + cy.intercept('POST', '/logError').as('logErrorRequest'); + + attachFile({ + filePath: '../../helpers/file/readonly-pdf.pdf', + selector: '[data-testid="primary-document-file"]', + }); + cy.wait('@logErrorRequest'); + + cy.get('@logErrorRequest.all').should('have.length', 1); + cy.get('[data-testid="file-upload-error-modal"]').contains( + 'The file is encrypted or password protected. Remove encryption or password protection and try again.', + ); + }); + it('should display error modal when a file larger than the limit is selected', () => { cy.intercept('POST', '/logError').as('logErrorRequest'); const largeFile = new Blob( diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts index 6177d1a25e7..9f78080286f 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.test.ts @@ -1,11 +1,12 @@ +import * as pdfValidationHelpers from './pdfValidationHelpers'; import { ErrorTypes } from '@web-client/views/FileHandlingHelpers/fileValidation'; import { PDF_CORRUPTED_ERROR_MESSAGE, PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, validatePdf, - validatePdfHeader, } from './pdfValidation'; import { applicationContext } from '@web-client/applicationContext'; +import { validatePdfHeader } from '@web-client/views/FileHandlingHelpers/pdfValidationHelpers'; const VALID_PDF_HEADER_BYTES = [0x25, 0x50, 0x44, 0x46, 0x2d]; // %PDF- const INVALID_PDF_HEADER_BYTES = [0x50, 0x44, 0x46, 0x25, 0x2d]; // PFD%- @@ -41,6 +42,10 @@ describe('validatePdf', () => { result: VALID_PDF_HEADER_BYTES, }; + jest + .spyOn(pdfValidationHelpers, 'validatePermissions') + .mockResolvedValue(true); + (global as any).FileReader = jest.fn(() => mockFileReader); mockFile = new File([new ArrayBuffer(8)], 'test.pdf', { @@ -79,6 +84,29 @@ describe('validatePdf', () => { expect(result).toEqual({ errorInformation: { errorMessageToDisplay: PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, + errorMessageToLog: `${PDF_PASSWORD_PROTECTED_ERROR_MESSAGE} (PasswordException)`, + errorType: ErrorTypes.ENCRYPTED_FILE, + }, + isValid: false, + }); + }); + + it('should return error message for readonly PDF', async () => { + mockPdfJs.getDocument.mockReturnValue({ + promise: Promise.resolve(), + }); + jest + .spyOn(pdfValidationHelpers, 'validatePermissions') + .mockResolvedValue(false); + + const resultPromise = validatePdf({ file: mockFile }); + mockFileReader.onload(); + const result = await resultPromise; + + expect(result).toEqual({ + errorInformation: { + errorMessageToDisplay: PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, + errorMessageToLog: `${PDF_PASSWORD_PROTECTED_ERROR_MESSAGE} (ReadOnlyException)`, errorType: ErrorTypes.ENCRYPTED_FILE, }, isValid: false, diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts index 36ac220b72f..3b27ead3327 100644 --- a/web-client/src/views/FileHandlingHelpers/pdfValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/pdfValidation.ts @@ -3,6 +3,10 @@ import { FileValidationResponse, } from '@web-client/views/FileHandlingHelpers/fileValidation'; import { applicationContext } from '@web-client/applicationContext'; +import { + validatePdfHeader, + validatePermissions, +} from '@web-client/views/FileHandlingHelpers/pdfValidationHelpers'; export const PDF_PASSWORD_PROTECTED_ERROR_MESSAGE = 'The file is encrypted or password protected. Remove encryption or password protection and try again.'; @@ -12,13 +16,6 @@ export const PDF_CORRUPTED_ERROR_MESSAGE = const GENERIC_FILE_ERROR_MESSAGE = 'There is a problem uploading the file. Try again later.'; -export const validatePdfHeader = (pdfData: Uint8Array): boolean => { - const stringDecoder = new TextDecoder('utf8'); - const pdfHeaderBytes = pdfData.slice(0, 5); - const pdfHeaderString = stringDecoder.decode(pdfHeaderBytes); - return pdfHeaderString === '%PDF-'; -}; - export const validatePdf = ({ file, }: { @@ -47,26 +44,37 @@ export const validatePdf = ({ // We will try to load the PDF. If we get any errors, we will return an errorInformation object accordingly. try { + // Ensure PDF has a valid header if (!validatePdfHeader(fileAsArrayBuffer)) { const corruptPdfError = new Error('PDF header is invalid'); corruptPdfError.name = 'CorruptPDFHeaderException'; throw corruptPdfError; } - // Attempt to load the PDF + // Attempt to load the PDF to check for any errors const pdfjs = await applicationContext.getPdfJs(); - await pdfjs.getDocument({ + const document = await pdfjs.getDocument({ data: fileAsArrayBuffer, isEvalSupported: false, }).promise; + // Check that the PDF doesn't have password protection on edits + if (!(await validatePermissions(document))) { + const readOnlyError = new Error( + 'PDF has password protection on edits', + ); + readOnlyError.name = 'ReadOnlyException'; + throw readOnlyError; + } + resolve({ isValid: true }); } catch (err) { if (err instanceof Error) { - if (err.name === 'PasswordException') { + if (['PasswordException', 'ReadOnlyException'].includes(err.name)) { resolve({ errorInformation: { errorMessageToDisplay: PDF_PASSWORD_PROTECTED_ERROR_MESSAGE, + errorMessageToLog: `${PDF_PASSWORD_PROTECTED_ERROR_MESSAGE} (${err.name})`, errorType: ErrorTypes.ENCRYPTED_FILE, }, isValid: false, diff --git a/web-client/src/views/FileHandlingHelpers/pdfValidationHelpers.ts b/web-client/src/views/FileHandlingHelpers/pdfValidationHelpers.ts new file mode 100644 index 00000000000..fcfbb9ab41e --- /dev/null +++ b/web-client/src/views/FileHandlingHelpers/pdfValidationHelpers.ts @@ -0,0 +1,15 @@ +import { PDFDocumentProxy } from 'pdfjs-dist/types/src/display/api'; + +export const validatePdfHeader = (pdfData: Uint8Array): boolean => { + const stringDecoder = new TextDecoder('utf8'); + const pdfHeaderBytes = pdfData.slice(0, 5); + const pdfHeaderString = stringDecoder.decode(pdfHeaderBytes); + return pdfHeaderString === '%PDF-'; +}; + +export const validatePermissions = async ( + pdfDocument: PDFDocumentProxy, +): Promise => { + const permissions = await pdfDocument.getPermissions(); + return !permissions; +}; From 464d9b8115dab2782897a491c453a9ee5e72f5f4 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 20 Sep 2024 11:58:37 -0400 Subject: [PATCH 59/65] 10001-design-debt: rename file --- .../file/{Lubbock_secured.pdf => readonly-pdf.pdf} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename cypress/helpers/file/{Lubbock_secured.pdf => readonly-pdf.pdf} (100%) diff --git a/cypress/helpers/file/Lubbock_secured.pdf b/cypress/helpers/file/readonly-pdf.pdf similarity index 100% rename from cypress/helpers/file/Lubbock_secured.pdf rename to cypress/helpers/file/readonly-pdf.pdf From 8276d0a15c541ebc82b7df75568b44a3f33a9d0e Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 20 Sep 2024 12:30:51 -0400 Subject: [PATCH 60/65] 10001-design-debt: fix default attachFile behavior --- cypress/helpers/file/upload-file.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cypress/helpers/file/upload-file.ts b/cypress/helpers/file/upload-file.ts index 79349ae6bc1..e572c241ba3 100644 --- a/cypress/helpers/file/upload-file.ts +++ b/cypress/helpers/file/upload-file.ts @@ -15,7 +15,7 @@ export function attachSamplePdfFile(testId: string) { } export function attachFile({ - encoding, + encoding = 'binary', // Default to binary, which better mimics PDF data handling on the browser filePath, selector, selectorToAwaitOnSuccess, @@ -23,7 +23,7 @@ export function attachFile({ selector: string; filePath: string; selectorToAwaitOnSuccess?: string; - encoding?: 'binary'; // Use binary for non-text files because it better mimics, e.g., readAsArrayBuffer + encoding?: 'binary' | 'utf8'; // Expand as needed }) { cy.get(selector).attachFile({ encoding, filePath }); if (selectorToAwaitOnSuccess) { From d9b3f556952cc4d062aa7b143030d652ff217d54 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 20 Sep 2024 12:57:57 -0400 Subject: [PATCH 61/65] 10001-design-debt: only use binary encoding as needed --- cypress/helpers/file/upload-file.ts | 4 ++-- .../fileUpload/upload-court-issued-pdf-validation.cy.ts | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cypress/helpers/file/upload-file.ts b/cypress/helpers/file/upload-file.ts index e572c241ba3..8402dbfa67e 100644 --- a/cypress/helpers/file/upload-file.ts +++ b/cypress/helpers/file/upload-file.ts @@ -15,7 +15,7 @@ export function attachSamplePdfFile(testId: string) { } export function attachFile({ - encoding = 'binary', // Default to binary, which better mimics PDF data handling on the browser + encoding, filePath, selector, selectorToAwaitOnSuccess, @@ -23,7 +23,7 @@ export function attachFile({ selector: string; filePath: string; selectorToAwaitOnSuccess?: string; - encoding?: 'binary' | 'utf8'; // Expand as needed + encoding?: 'binary' | 'utf8' | 'latin1'; // Expand as needed }) { cy.get(selector).attachFile({ encoding, filePath }); if (selectorToAwaitOnSuccess) { diff --git a/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts b/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts index b1475a0ce0a..e93c430a045 100644 --- a/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts +++ b/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts @@ -65,6 +65,7 @@ describe('upload court issued document validations', () => { cy.intercept('POST', '/logError').as('logErrorRequest'); attachFile({ + encoding: 'binary', filePath: '../../helpers/file/readonly-pdf.pdf', selector: '[data-testid="primary-document-file"]', }); From de7dc9faae7a285b26b048af0fb7f6acea6ce016 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 20 Sep 2024 13:09:58 -0400 Subject: [PATCH 62/65] 10001-design-debt: set file encoding to binary in upload-court-issued-pdf-validation --- .../fileUpload/upload-court-issued-pdf-validation.cy.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts b/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts index e93c430a045..cd2564482c2 100644 --- a/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts +++ b/cypress/local-only/tests/integration/fileUpload/upload-court-issued-pdf-validation.cy.ts @@ -6,6 +6,7 @@ import { loginAsDocketClerk1 } from '../../../../helpers/authentication/login-as describe('upload court issued document validations', () => { const docketNumber = '102-67'; // Any existing docket number works + const encoding = 'binary'; // Some Cypress tests were not mimicking real app behavior without manually setting the encoding to binary beforeEach(() => { loginAsDocketClerk1(); @@ -18,6 +19,7 @@ describe('upload court issued document validations', () => { cy.intercept('POST', '/logError').as('logErrorRequest'); attachFile({ + encoding, filePath: '../../helpers/file/non-pdf.txt', selector: '[data-testid="primary-document-file"]', }); @@ -35,6 +37,7 @@ describe('upload court issued document validations', () => { cy.intercept('POST', '/logError').as('logErrorRequest'); attachFile({ + encoding, filePath: '../../helpers/file/corrupt-pdf.pdf', selector: '[data-testid="primary-document-file"]', }); @@ -50,6 +53,7 @@ describe('upload court issued document validations', () => { cy.intercept('POST', '/logError').as('logErrorRequest'); attachFile({ + encoding, filePath: '../../helpers/file/password-protected-pdf.pdf', selector: '[data-testid="primary-document-file"]', }); @@ -65,7 +69,7 @@ describe('upload court issued document validations', () => { cy.intercept('POST', '/logError').as('logErrorRequest'); attachFile({ - encoding: 'binary', + encoding, filePath: '../../helpers/file/readonly-pdf.pdf', selector: '[data-testid="primary-document-file"]', }); @@ -105,6 +109,7 @@ describe('upload court issued document validations', () => { it('should see success on valid pdf upload', () => { attachFile({ + encoding, filePath: '../../helpers/file/sample.pdf', selector: '[data-testid="primary-document-file"]', }); From b72b999f9e9bdc4b3828b954349145d431700e7a Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 20 Sep 2024 17:46:42 -0400 Subject: [PATCH 63/65] 10001-design-debt: add skipFileTypeValidation :/ --- .../FileDocument/StateDrivenFileInput.tsx | 3 ++ .../fileValidation.test.ts | 52 +++++++++++++++++++ .../FileHandlingHelpers/fileValidation.ts | 29 +++++++---- 3 files changed, 74 insertions(+), 10 deletions(-) diff --git a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx index c133c8e2c12..beb8f96fa10 100644 --- a/web-client/src/views/FileDocument/StateDrivenFileInput.tsx +++ b/web-client/src/views/FileDocument/StateDrivenFileInput.tsx @@ -20,6 +20,7 @@ type StateDriveFileInputProps = { name: string; accept?: string; ignoreSizeKey?: boolean; + skipFileTypeValidation?: boolean; }; const deps = { @@ -49,6 +50,7 @@ export const StateDrivenFileInput = connect< setIsLoadingSequence, setIsNotLoadingSequence, showFileUploadErrorModalSequence, + skipFileTypeValidation = false, // skipFileTypeValidation is only here to support PractitionerAddEditDocument "accepting" certain file types but not enforcing that acceptance updateFormValueSequence, validationSequence, ...remainingProps @@ -100,6 +102,7 @@ export const StateDrivenFileInput = connect< /* no-op */ }); }, + skipFileTypeValidation, }); setIsNotLoadingSequence(); }; diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts index 9444928b057..74abf6403cf 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.test.ts @@ -123,6 +123,37 @@ describe('validateFileOnSelect', () => { ); expect(event.target.value).toBe('test.txt'); }); + + it('should call onSuccess with a file of incorrect type when skipFileTypeValidation is true', async () => { + const mockFile = new File(['dummy content'], 'test.txt', { + type: 'text/plain', + }); + const onError = jest.fn(); + const onSuccess = jest.fn(); + const event = { + target: { + files: [mockFile], + value: 'test.txt', + }, + } as unknown as React.ChangeEvent; + + await validateFileOnSelect({ + allowedFileExtensions: ['.pdf'], + e: event, + megabyteLimit: 5, + onError, + onSuccess, + skipFileTypeValidation: true, + }); + + expect(onError).not.toHaveBeenCalled(); + expect(onSuccess).toHaveBeenCalledWith( + expect.objectContaining({ + selectedFile: mockFile, + }), + ); + expect(event.target.value).toBe('test.txt'); + }); }); describe('fileValidation', () => { @@ -149,6 +180,7 @@ describe('fileValidation', () => { 'The file is not a PDF. Select a PDF file or resave the file as a PDF.', ); }); + it('should return invalid with error message for improper file multiple allowed extensions', async () => { const file = new File([], 'test.csv'); const allowedFileExtensions = ['.pdf', '.doc', '.docx']; @@ -164,6 +196,7 @@ describe('fileValidation', () => { 'The file is not in a supported format (.pdf, .doc, .docx). Select a different file or resave it in a supported format.', ); }); + it('should return invalid with error message for file too big', async () => { const file = new File([], 'test.csv'); const allowedFileExtensions = ['.pdf', '.doc', '.docx']; @@ -180,6 +213,7 @@ describe('fileValidation', () => { `The file size is too big. The maximum file size is ${megabyteLimit}MB. Reduce the file size and try again.`, ); }); + it('should call pdf validation for a pdf', async () => { const file = new File([], 'test.pdf', { type: 'application/pdf' }); const allowedFileExtensions = ['.pdf']; @@ -193,6 +227,23 @@ describe('fileValidation', () => { expect(validatePdf).toHaveBeenCalled(); }); + + it('should not validate file type if skipFileTypeValidation is passed', async () => { + const file = new File([], 'test.pdf', { type: 'application/pdf' }); + const allowedFileExtensions = ['.csv']; + const megabyteLimit = 250; + (validatePdf as jest.Mock).mockReturnValue({ isValid: true }); + + const validationResult = await validateFile({ + allowedFileExtensions, + file, + megabyteLimit, + skipFileTypeValidation: true, + }); + + expect(validationResult).toMatchObject({ isValid: true }); + }); + it('should return valid for valid PDF', async () => { const file = new File([], 'test.pdf', { type: 'application/pdf' }); const allowedFileExtensions = ['.pdf']; @@ -230,6 +281,7 @@ describe('fileValidation', () => { }); }); }); + it('should call error modal sequence with correct arguments for wrong file type error', () => { const mockFunc = jest.fn(); fileValidation.genericOnValidationErrorHandler({ diff --git a/web-client/src/views/FileHandlingHelpers/fileValidation.ts b/web-client/src/views/FileHandlingHelpers/fileValidation.ts index 9dd336549c2..08fc003281d 100644 --- a/web-client/src/views/FileHandlingHelpers/fileValidation.ts +++ b/web-client/src/views/FileHandlingHelpers/fileValidation.ts @@ -96,6 +96,7 @@ export const validateFileOnSelect = async ({ megabyteLimit, onError, onSuccess, + skipFileTypeValidation = false, }: { allowedFileExtensions: string[]; e: React.ChangeEvent; @@ -110,6 +111,7 @@ export const validateFileOnSelect = async ({ errorType?: ErrorTypes; messageToLog?: string; }) => void; + skipFileTypeValidation?: boolean; }) => { const target = e.target as HTMLInputElement; @@ -125,6 +127,7 @@ export const validateFileOnSelect = async ({ allowedFileExtensions, file: selectedFile, megabyteLimit, + skipFileTypeValidation, }); if (!isValid) { onError({ @@ -132,7 +135,7 @@ export const validateFileOnSelect = async ({ messageToDisplay: errorInformation?.errorMessageToDisplay!, messageToLog: errorInformation?.errorMessageToLog, }); - target.value = ''; + target.value = ''; // Deselect the file return; } onSuccess({ selectedFile }); @@ -142,25 +145,31 @@ export const validateFile = async ({ allowedFileExtensions, file, megabyteLimit, + skipFileTypeValidation = false, }: { file: File; megabyteLimit: number; allowedFileExtensions: string[]; + skipFileTypeValidation?: boolean; }): Promise => { const fileSizeValidation = validateFileSize({ file, megabyteLimit }); if (!fileSizeValidation.isValid) { return fileSizeValidation; } - const correctFileValidation = validateCorrectFileType({ - allowedFileExtensions, - file, - }); - if (!correctFileValidation.isValid) { - return correctFileValidation; - } - if (file.type === 'application/pdf') { - return await validatePdf({ file }); + + if (!skipFileTypeValidation) { + const correctFileValidation = validateCorrectFileType({ + allowedFileExtensions, + file, + }); + if (!correctFileValidation.isValid) { + return correctFileValidation; + } + if (file.type === 'application/pdf') { + return await validatePdf({ file }); + } } + return { isValid: true }; }; From d58ab7e0bc25913f26978835b5ab034671ec6e1e Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Fri, 20 Sep 2024 17:49:33 -0400 Subject: [PATCH 64/65] 10001-design-debt: actually use skipFileTypeValidation --- .../src/views/Practitioners/PractitionerAddEditDocument.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/web-client/src/views/Practitioners/PractitionerAddEditDocument.tsx b/web-client/src/views/Practitioners/PractitionerAddEditDocument.tsx index d4c5db72010..1f2926ff318 100644 --- a/web-client/src/views/Practitioners/PractitionerAddEditDocument.tsx +++ b/web-client/src/views/Practitioners/PractitionerAddEditDocument.tsx @@ -93,6 +93,7 @@ export const PractitionerAddEditDocument = connect( aria-describedby="practitioner-document-file-label" id="practitioner-document-file" name="practitionerDocumentFile" + skipFileTypeValidation={true} updateFormValueSequence="updateFormValueSequence" validationSequence="validateAddPractitionerDocumentSequence" /> From 6c8b9733ae07edc043c1b16b3b70d5247782cbe5 Mon Sep 17 00:00:00 2001 From: Christopher Bisom Date: Wed, 25 Sep 2024 13:23:29 -0400 Subject: [PATCH 65/65] 10001-design-debt: remove what looks like a spurious autocorrect change --- .../file-a-petition-step-6-irs-notice.cy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-irs-notice.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-irs-notice.cy.ts index b24da0deef2..089ff4f64a9 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-irs-notice.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-irs-notice.cy.ts @@ -87,7 +87,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { cy.contains('2023').should('exist'); cy.contains('05/02/23').should('exist'); cy.contains('New York, NY').should('exist'); - cy.get('[data-testid="atp-preview-button"]').and( + cy.get('[data-testid="atp-preview-button"]').should( 'have.text', 'sample.pdf', );