diff --git a/.circleci/config.yml b/.circleci/config.yml index a0998e04e45..26997e82ff1 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.5 +efcms-docker-image: &efcms-docker-image $AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/ef-cms-us-east-1:4.3.6 parameters: run_build_and_deploy: @@ -371,7 +371,7 @@ jobs: - run: name: Kill Build if Smoketests Failed command: | - if [ "${READONLY_SMOKETESTS_RESULT}" -ne 0 ]; then + if [ "${READONLY_SMOKETESTS_RESULT}" -ne 0 ]; then exit 1 fi - run: diff --git a/.eslintrc.js b/.eslintrc.js index de3c2307884..e234e033cd2 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -58,7 +58,10 @@ module.exports = { { files: ['**/*.ts', '**/*.tsx'], rules: { - '@typescript-eslint/no-unused-vars': 'error', + '@typescript-eslint/no-unused-vars': [ + 'error', + { caughtErrors: 'none' }, + ], 'no-undef': 'off', 'no-underscore-dangle': 'off', 'no-unused-vars': 'off', diff --git a/.github/workflows/typescript-untouched-files-check.yml b/.github/workflows/typescript-all-files-check.yml similarity index 83% rename from .github/workflows/typescript-untouched-files-check.yml rename to .github/workflows/typescript-all-files-check.yml index 17c080c2f21..41c2dbb2d69 100644 --- a/.github/workflows/typescript-untouched-files-check.yml +++ b/.github/workflows/typescript-all-files-check.yml @@ -1,10 +1,10 @@ -name: Typescript Untouched File Check +name: Typescript File Check on: pull_request: jobs: - CheckUntouchedFiles: + CheckAllFilesForTypeErrorCount: runs-on: ubuntu-latest steps: @@ -39,5 +39,5 @@ jobs: working-directory: ./targetBranch run: npm ci - - name: Check untouched files - run: npx ts-node scripts/checkUntouchedFiles.ts + - name: Check files for increased error count + run: npx ts-node scripts/checkAllFilesForTypeErrorCount.ts diff --git a/Dockerfile b/Dockerfile index cd19552f950..d2ddd27dae5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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.22.zip" -o "awscliv2.zip" && \ +RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.17.24.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.3/terraform_1.9.3_linux_amd64.zip && \ +RUN wget -q -O terraform.zip https://releases.hashicorp.com/terraform/1.9.4/terraform_1.9.4_linux_amd64.zip && \ unzip -o terraform.zip terraform && \ rm terraform.zip && \ cp terraform /usr/local/bin/ diff --git a/cypress/helpers/advancedSearch/external-user-searches-docket-number.ts b/cypress/helpers/advancedSearch/external-user-searches-docket-number.ts index c33630df1e0..45802f5470c 100644 --- a/cypress/helpers/advancedSearch/external-user-searches-docket-number.ts +++ b/cypress/helpers/advancedSearch/external-user-searches-docket-number.ts @@ -1,4 +1,5 @@ export function externalUserSearchesDocketNumber(docketNumber: string) { + cy.get('[data-testid="docket-search-field"]').should('exist'); cy.get('[data-testid="docket-search-field"]').type(docketNumber); cy.get('[data-testid="search-by-docket-number"]').click(); } diff --git a/cypress/helpers/authentication/login-as-helpers.ts b/cypress/helpers/authentication/login-as-helpers.ts index f16143b64af..e0175319390 100644 --- a/cypress/helpers/authentication/login-as-helpers.ts +++ b/cypress/helpers/authentication/login-as-helpers.ts @@ -59,7 +59,7 @@ export function loginAsIrsPractitioner1() { } export function loginAsPetitioner( - petitionerUser: 'petitioner' | 'petitioner1' = 'petitioner1', + petitionerUser: 'petitioner' | 'petitioner1' | 'petitioner7' = 'petitioner1', ) { cy.login(petitionerUser); cy.get('[data-testid="file-a-petition"]').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 903e18e7e55..5530ccbf537 100644 --- a/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts +++ b/cypress/helpers/fileAPetition/petitioner-creates-electronic-case-updated.ts @@ -12,7 +12,7 @@ export function petitionerCreatesElectronicCaseUpdated( 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="contactPrimary.placeOfLegalResidence"]').select('AL'); + cy.get('[data-testid="contactPrimary-placeOfLegalResidence"]').select('AL'); cy.get('[data-testid="contact-primary-phone"]').type('1111111111'); cy.get('[data-testid="step-1-next-button"]').click(); @@ -105,7 +105,7 @@ export function petitionerAttemptsToUploadCorruptPdfUpdated() { 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="contactPrimary.placeOfLegalResidence"]').select('AL'); + cy.get('[data-testid="contactPrimary-placeOfLegalResidence"]').select('AL'); cy.get('[data-testid="contact-primary-phone"]').type('1111111111'); cy.get('[data-testid="step-1-next-button"]').click(); diff --git a/cypress/local-only/support/statusReportOrder.ts b/cypress/local-only/support/statusReportOrder.ts new file mode 100644 index 00000000000..2cbf6902146 --- /dev/null +++ b/cypress/local-only/support/statusReportOrder.ts @@ -0,0 +1,46 @@ +import { + FORMATS, + formatNow, +} from '../../../shared/src/business/utilities/DateHandler'; + +export const docketNumber = '107-19'; +export const leadCaseDocketNumber = '102-67'; +export const statusReportDocketEntryId = '178af2d2-fab1-445a-a729-d3da63517a0a'; +export const messages = { + statusReport: { + messageId: '73d4365b-8b3a-4b01-9ca3-7087f7a6d4b5', + name: 'Status Report', + }, + testStatusReportOrderSigned: { + messageId: '32484c7f-4606-49fc-89f1-27ba1d5596be', + name: 'Test Status Report Order (Signed)', + }, + testStatusReportOrderUnsigned: { + messageId: '34483b5b-29de-4ad4-8caa-59f71ad6d906', + name: 'Test Status Report Order (Unsigned)', + }, +}; +export const expectedPdfLines = [ + 'On June 28, 2024, a status report was filed (Index no. 5). For cause, it is', + `ORDERED that the parties shall file a further status report by ${formatNow(FORMATS.MONTH_DAY_YEAR)}. It is further`, + 'ORDERED that this case is stricken from the trial session. It is further', + 'ORDERED that jurisdiction is retained by the undersigned. It is further', + 'ORDERED that Here is my additional order text.', +]; +export const selectAllOptionsInForm = () => { + cy.get('#order-type-status-report').check({ force: true }); + cy.get('#status-report-due-date-picker').type(formatNow(FORMATS.MMDDYYYY)); + cy.get('#stricken-from-trial-sessions').check({ force: true }); + cy.get('#jurisdiction-retained').check({ force: true }); + cy.get('#additional-order-text').type('Here is my additional order text.'); +}; + +export const getLastDraftOrderElementFromDrafts = () => { + return cy.get('button:contains(Order)').last(); +}; + +export const getLastDraftOrderElementIndexFromDrafts = () => { + return getLastDraftOrderElementFromDrafts().then(lastOrderButton => { + return lastOrderButton.index(); + }); +}; diff --git a/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-before-filing-a-case.cy.ts b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-before-filing-a-case.cy.ts new file mode 100644 index 00000000000..f774cca06ac --- /dev/null +++ b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-before-filing-a-case.cy.ts @@ -0,0 +1,15 @@ +import { checkA11y } from '../../../support/generalCommands/checkA11y'; +import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; + +describe('Petition generation - intro pages', () => { + it('welcome to dawson: should be free of a11y issues', () => { + loginAsPetitioner('petitioner7'); + checkA11y(); + }); + + it('before filing a case: should be free of a11y issues', () => { + loginAsPetitioner(); + cy.visit('/before-filing-a-petition'); + checkA11y(); + }); +}); diff --git a/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-1.cy.ts b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-1.cy.ts new file mode 100644 index 00000000000..f1f854b2670 --- /dev/null +++ b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-1.cy.ts @@ -0,0 +1,146 @@ +import { checkA11y } from '../../../support/generalCommands/checkA11y'; +import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; + +describe('Petition generation - step 1', () => { + beforeEach(() => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + }); + + describe('Myself', () => { + it('Myself - domestic: should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-0"').click(); + checkA11y(); + }); + + it('Myself - international: should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-0"').click(); + cy.get('[data-testid="international-country-btn"]').click(); + checkA11y(); + }); + }); + describe('Myself and my spouse', () => { + it('Myself and my spouse - deceased: should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-1"').click(); + cy.get('[data-testid="is-spouse-deceased-0"]').click(); + checkA11y(); + }); + + it('Myself and my spouse - not deceased: should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-1"').click(); + cy.get('[data-testid="is-spouse-deceased-1"]').click(); + cy.get('[data-testid="have-spouse-consent-label"').click(); + checkA11y(); + }); + }); + describe('Business', () => { + it('Corporation: should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-2"').click(); + cy.get('.business-type-radio-option').eq(0).click(); + checkA11y(); + }); + + it('Partnership (as the Tax Matters Partner): should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-2"').click(); + cy.get('.business-type-radio-option').eq(1).click(); + checkA11y(); + }); + + it('Partnership (as a partner other than Tax Matters Partner): should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-2"').click(); + cy.get('.business-type-radio-option').eq(2).click(); + checkA11y(); + }); + + it('Partnership (as a partnership representative under BBA): should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-2"').click(); + cy.get('.business-type-radio-option').eq(3).click(); + checkA11y(); + }); + }); + describe('Other', () => { + describe('An estate or trust', () => { + it('Estate with an executor/personal representative/fiduciary/etc.: should be free of a11y issues: should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-3"').click(); + cy.get('[data-testid="other-type-radio-option-0"]').click(); + cy.get('[data-testid="estate-type-radio-option-0"]').click(); + checkA11y(); + }); + + it('Estate without an executor/personal representative/fiduciary/etc.: should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-3"').click(); + cy.get('[data-testid="other-type-radio-option-0"]').click(); + cy.get('[data-testid="estate-type-radio-option-1"]').click(); + checkA11y(); + }); + + it('Trust: should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-3"').click(); + cy.get('[data-testid="other-type-radio-option-0"]').click(); + cy.get('[data-testid="estate-type-radio-option-2"]').click(); + checkA11y(); + }); + }); + + describe('A minor or legally incompetent person', () => { + it('Conservator: should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-3"').click(); + cy.get('[data-testid="other-type-radio-option-1"]').click(); + cy.get('[data-testid="minor-incompetent-type-radio-option-0"]').click(); + checkA11y(); + }); + + it('Guardian: should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-3"').click(); + cy.get('[data-testid="other-type-radio-option-1"]').click(); + cy.get('[data-testid="minor-incompetent-type-radio-option-1"]').click(); + checkA11y(); + }); + + it('Custodian: should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-3"').click(); + cy.get('[data-testid="other-type-radio-option-1"]').click(); + cy.get('[data-testid="minor-incompetent-type-radio-option-2"]').click(); + checkA11y(); + }); + + it('Next friend for a minor (without a guardian, conservator, or other like fiduciary): should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-3"').click(); + cy.get('[data-testid="other-type-radio-option-1"]').click(); + cy.get('[data-testid="minor-incompetent-type-radio-option-3"]').click(); + checkA11y(); + }); + + it('Next friend for a legally incompetent person (without a guardian, conservator, or other like fiduciary): should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-3"').click(); + cy.get('[data-testid="other-type-radio-option-1"]').click(); + cy.get('[data-testid="minor-incompetent-type-radio-option-4"]').click(); + checkA11y(); + }); + }); + + describe('Donor', () => { + it('Donor: should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-3"').click(); + cy.get('[data-testid="other-type-radio-option-2"]').click(); + checkA11y(); + }); + }); + + describe('Transferee', () => { + it('Transferee: should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-3"').click(); + cy.get('[data-testid="other-type-radio-option-3"]').click(); + checkA11y(); + }); + }); + + describe('Deceased Spouse', () => { + it('Deceased Spouse: should be free of a11y issues', () => { + cy.get('[data-testid="filing-type-3"').click(); + cy.get('[data-testid="other-type-radio-option-4"]').click(); + checkA11y(); + }); + }); + }); +}); diff --git a/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-2.cy.ts b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-2.cy.ts new file mode 100644 index 00000000000..2c449ba8af3 --- /dev/null +++ b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-2.cy.ts @@ -0,0 +1,22 @@ +import { checkA11y } from '../../../support/generalCommands/checkA11y'; +import { fillPetitionerInformation } from '../../integration/fileAPetitionUpdated/petition-helper'; +import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; + +describe('Petition generation - step 2', () => { + beforeEach(() => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + fillPetitionerInformation(); + }); + + it('Auto generate Petition: should be free of a11y issues', () => { + cy.get('[data-testid="add-another-reason-link-button"').click(); + cy.get('[data-testid="add-another-fact-link-button"').click(); + checkA11y(); + }); + + it('Upload PDF Petition: should be free of a11y issues', () => { + cy.get('[data-testid="upload-a-petition-label"').click(); + checkA11y(); + }); +}); diff --git a/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-3.cy.ts b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-3.cy.ts new file mode 100644 index 00000000000..06f9870b518 --- /dev/null +++ b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-3.cy.ts @@ -0,0 +1,27 @@ +import { checkA11y } from '../../../support/generalCommands/checkA11y'; +import { + fillPetitionFileInformation, + fillPetitionerInformation, +} from '../../integration/fileAPetitionUpdated/petition-helper'; +import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; + +describe('Petition generation - step 3', () => { + const VALID_FILE = '../../helpers/file/sample.pdf'; + + beforeEach(() => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + fillPetitionerInformation(); + fillPetitionFileInformation(VALID_FILE); + }); + + it('IRS Notice Provided: should be free of a11y issues', () => { + cy.get('[data-testid="irs-notice-Yes"]').click(); + checkA11y(); + }); + + it('IRS Notice not Provided: should be free of a11y issues', () => { + cy.get('[data-testid="irs-notice-No"]').click(); + checkA11y(); + }); +}); diff --git a/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-4.cy.ts b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-4.cy.ts new file mode 100644 index 00000000000..7c26dd96834 --- /dev/null +++ b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-4.cy.ts @@ -0,0 +1,28 @@ +import { checkA11y } from '../../../support/generalCommands/checkA11y'; +import { + fillIrsNoticeInformation, + fillPetitionFileInformation, + fillPetitionerInformation, +} from '../../integration/fileAPetitionUpdated/petition-helper'; +import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; + +describe('Petition generation - step 4', () => { + const VALID_FILE = '../../helpers/file/sample.pdf'; + + beforeEach(() => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + fillPetitionerInformation(); + fillPetitionFileInformation(VALID_FILE); + fillIrsNoticeInformation(VALID_FILE); + }); + + it('Regular Case: should be free of a11y issues', () => { + checkA11y(); + }); + + it('Small Case: should be free of a11y issues', () => { + cy.get('[data-testid="procedure-type-1"]').click(); + checkA11y(); + }); +}); diff --git a/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-5.cy.ts b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-5.cy.ts new file mode 100644 index 00000000000..b928abbb017 --- /dev/null +++ b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-5.cy.ts @@ -0,0 +1,25 @@ +import { checkA11y } from '../../../support/generalCommands/checkA11y'; +import { + fillCaseProcedureInformation, + fillIrsNoticeInformation, + fillPetitionFileInformation, + fillPetitionerInformation, +} from '../../integration/fileAPetitionUpdated/petition-helper'; +import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; + +describe('Petition generation - step 5', () => { + const VALID_FILE = '../../helpers/file/sample.pdf'; + + beforeEach(() => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + fillPetitionerInformation(); + fillPetitionFileInformation(VALID_FILE); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + }); + + it('Upload STIN: should be free of a11y issues', () => { + checkA11y(); + }); +}); diff --git a/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-6.cy.ts b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-6.cy.ts new file mode 100644 index 00000000000..d98ccb92de9 --- /dev/null +++ b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-6.cy.ts @@ -0,0 +1,27 @@ +import { checkA11y } from '../../../support/generalCommands/checkA11y'; +import { + fillCaseProcedureInformation, + fillIrsNoticeInformation, + fillPetitionFileInformation, + fillPetitionerInformation, + fillStinInformation, +} from '../../integration/fileAPetitionUpdated/petition-helper'; +import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; + +describe('Petition generation - step 6', () => { + const VALID_FILE = '../../helpers/file/sample.pdf'; + + beforeEach(() => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + fillPetitionerInformation(); + fillPetitionFileInformation(VALID_FILE); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + }); + + it('Review Page: should be free of a11y issues', () => { + checkA11y(); + }); +}); diff --git a/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-7.cy.ts b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-7.cy.ts new file mode 100644 index 00000000000..fc723e17c32 --- /dev/null +++ b/cypress/local-only/tests/accessibility/petitionGeneration/petition-generation-step-7.cy.ts @@ -0,0 +1,31 @@ +import { checkA11y } from '../../../support/generalCommands/checkA11y'; +import { + fillCaseProcedureInformation, + fillIrsNoticeInformation, + fillPetitionFileInformation, + fillPetitionerInformation, + fillStinInformation, +} from '../../integration/fileAPetitionUpdated/petition-helper'; +import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; + +describe('Petition generation - step 7', () => { + const VALID_FILE = '../../helpers/file/sample.pdf'; + + beforeEach(() => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + fillPetitionerInformation(); + fillPetitionFileInformation(VALID_FILE); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + cy.get('[data-testid="step-6-next-button"]').click(); + }); + + it('Pay filing fee: should be free of a11y issues', () => { + cy.intercept('POST', '**/cases').as('postCase'); + cy.wait('@postCase').then(() => { + checkA11y(); + }); + }); +}); diff --git a/cypress/local-only/tests/accessibility/statusReportOrder/judge.cy.ts b/cypress/local-only/tests/accessibility/statusReportOrder/judge.cy.ts new file mode 100644 index 00000000000..2f0ad6daa92 --- /dev/null +++ b/cypress/local-only/tests/accessibility/statusReportOrder/judge.cy.ts @@ -0,0 +1,18 @@ +import { checkA11y } from '../../../support/generalCommands/checkA11y'; +import { loginAsColvin } from '../../../../helpers/authentication/login-as-helpers'; + +describe('Status Report Order - Judge Accessibility', () => { + beforeEach(() => { + Cypress.session.clearCurrentSessionData(); + }); + + it('should be free of a11y issues', () => { + loginAsColvin(); + cy.visit( + '/case-detail/102-67/documents/7be2dea1-4428-4917-a66d-0d474e57ee02/status-report-order-create?statusReportFilingDate=2024-06-28&statusReportIndex=1', + ); + cy.get('[data-testid="save-draft-button"]').should('exist'); + + checkA11y(); + }); +}); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-all-steps.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-all-steps.cy.ts new file mode 100644 index 00000000000..7fdc9333588 --- /dev/null +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-all-steps.cy.ts @@ -0,0 +1,55 @@ +import { + fillCaseProcedureInformation, + fillGeneratePetitionFileInformation, + fillIrsNoticeInformation, + fillPetitionerInformation, + fillStinInformation, +} from './petition-helper'; +import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; + +describe('File a petition', () => { + const VALID_FILE = '../../helpers/file/sample.pdf'; + + describe('File a petition', () => { + const caseTypes = [ + 'Deficiency', + 'CDP (Lien/Levy)', + 'Other', + 'Partnership (Section 6228)', + 'Disclosure2', + 'Passport', + 'Innocent Spouse', + 'Worker Classification', + 'Whistleblower', + 'Interest Abatement', + 'Disclosure1', + 'Partnership (BBA Section 1101)', + 'Partnership (Section 6226)', + ]; + + caseTypes.forEach(caseType => { + it(`should file a petition for case type: ${caseType}`, () => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + fillPetitionerInformation(); + fillGeneratePetitionFileInformation(); + fillIrsNoticeInformation(VALID_FILE, caseType); + 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 resposne'); + expect(response.body).to.have.property('docketNumber'); + const createdDocketNumber = response.body.docketNumber; + cy.get('.usa-alert__heading').should( + 'contain.text', + `Your case has been assigned docket number ${createdDocketNumber}`, + ); + }); + }); + }); + }); +}); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-myself.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-myself.cy.ts index ec749ca4048..eef6ec182b7 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-myself.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-myself.cy.ts @@ -39,7 +39,7 @@ describe('File a petition', () => { }); it('should display an input for "place of legal residence"', () => { - cy.get('[data-testid="contactPrimary.placeOfLegalResidence"]').should( + cy.get('[data-testid="contactPrimary-placeOfLegalResidence"]').should( 'exist', ); }); 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 489f633d3ee..ca21fa7cda3 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 @@ -91,6 +91,31 @@ describe('File a petition', () => { cy.get('[data-testid="step-indicator-current-step-3-icon"]'); }); }); + + describe('add facts and reasons', () => { + it('should display empty textbox when text is removed', () => { + cy.get('[data-testid="petition-reason--1"]').focus(); + cy.get('[data-testid="petition-reason--1"]').type('REASON 1'); + cy.get('[data-testid="petition-reason--1"]').blur(); + cy.get('[data-testid="petition-reason--1"]').focus(); + cy.get('[data-testid="petition-reason--1"]').type( + '{selectall}{backspace}', + ); + cy.get('[data-testid="petition-reason--1"]').should('be.visible'); + + cy.get('[data-testid="petition-fact--1"]').focus(); + cy.get('[data-testid="petition-fact--1"]').type('FACT 1'); + cy.get('[data-testid="add-another-fact-link-button"]').click(); + cy.get('[data-testid="petition-fact-0"]').focus(); + cy.get('[data-testid="petition-fact-0"]').type('FACT 2'); + cy.get('[data-testid="petition-fact-0"]').blur(); + cy.get('[data-testid="petition-fact-0"]').focus(); + cy.get('[data-testid="petition-fact-0"]').type( + '{selectall}{backspace}', + ); + cy.get('[data-testid="petition-fact-0"]').should('be.visible'); + }); + }); }); describe('Upload PDF', () => { 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 e333cfa826c..1b67b32c9cf 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 @@ -24,7 +24,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { fillBusinessandOtherContact({ fillInCareOf: true, }); - cy.get('[data-testid="contactPrimary.placeOfLegalResidence"]').select( + cy.get('[data-testid="contactPrimary-placeOfLegalResidence"]').select( contactInfo.placeOfLegalResidence, ); cy.get('[data-testid="contact-primary-phone"]').type(contactInfo.phone); @@ -64,7 +64,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { fillBusinessandOtherContact({ fillSecondaryName: true, }); - cy.get('[data-testid="contactPrimary.placeOfLegalResidence"]').select( + cy.get('[data-testid="contactPrimary-placeOfLegalResidence"]').select( contactInfo.placeOfLegalResidence, ); cy.get('[data-testid="contact-primary-phone"]').type(contactInfo.phone); @@ -118,7 +118,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { fillBusinessandOtherContact({ fillSecondaryName: true, }); - cy.get('[data-testid="contactPrimary.placeOfLegalResidence"]').select( + cy.get('[data-testid="contactPrimary-placeOfLegalResidence"]').select( contactInfo.placeOfLegalResidence, ); cy.get('[data-testid="contact-primary-phone"]').type(contactInfo.phone); @@ -172,7 +172,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { fillBusinessandOtherContact({ fillSecondaryName: true, }); - cy.get('[data-testid="contactPrimary.placeOfLegalResidence"]').select( + cy.get('[data-testid="contactPrimary-placeOfLegalResidence"]').select( contactInfo.placeOfLegalResidence, ); cy.get('[data-testid="contact-primary-phone"]').type(contactInfo.phone); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-other.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-other.cy.ts index 1f9fb54521a..ac4b0bb9869 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-other.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-other.cy.ts @@ -28,7 +28,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { fillSecondaryName: true, fillTitle: true, }); - cy.get('[data-testid="contactPrimary.placeOfLegalResidence"]').select( + cy.get('[data-testid="contactPrimary-placeOfLegalResidence"]').select( 'AK', ); cy.get('[data-testid="contact-primary-phone"]').type('3232323232'); @@ -70,7 +70,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { fillBusinessandOtherContact({ fillInCareOf: true, }); - cy.get('[data-testid="contactPrimary.placeOfLegalResidence"]').select( + cy.get('[data-testid="contactPrimary-placeOfLegalResidence"]').select( 'AK', ); cy.get('[data-testid="contact-primary-phone"]').type('3232323232'); @@ -112,7 +112,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { fillBusinessandOtherContact({ fillSecondaryName: true, }); - cy.get('[data-testid="contactPrimary.placeOfLegalResidence"]').select( + cy.get('[data-testid="contactPrimary-placeOfLegalResidence"]').select( 'AK', ); cy.get('[data-testid="contact-primary-phone"]').type('3232323232'); @@ -174,7 +174,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { fillSecondaryName: true, }); cy.get( - '[data-testid="contactPrimary.placeOfLegalResidence"]', + '[data-testid="contactPrimary-placeOfLegalResidence"]', ).select(contactInfo.placeOfLegalResidence); cy.get('[data-testid="contact-primary-phone"]').type( contactInfo.phone, @@ -269,7 +269,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { cy.get('[data-testid="filing-type-3"]').click(); cy.get('[data-testid="other-type-radio-option-4"]').click(); fillBusinessandOtherContact({ fillSecondaryName: true }); - cy.get('[data-testid="contactPrimary.placeOfLegalResidence"]').select( + cy.get('[data-testid="contactPrimary-placeOfLegalResidence"]').select( contactInfo.placeOfLegalResidence, ); cy.get('[data-testid="contact-primary-phone"]').type(contactInfo.phone); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts index 769a03f5f07..1c087953b8b 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/petition-helper.ts @@ -83,7 +83,7 @@ export function fillPetitionerAndSpouseInformation(addPhone: boolean = false) { cy.get('[data-testid="contactPrimary.city"]').type('Orlando'); cy.get('[data-testid="contactPrimary.state"]').select('AL'); cy.get('[data-testid="contactPrimary.postalCode"]').type('33233'); - cy.get('[data-testid="contactPrimary.placeOfLegalResidence"]').select('AL'); + cy.get('[data-testid="contactPrimary-placeOfLegalResidence"]').select('AL'); cy.get('[data-testid="contact-primary-phone"]').type('3232323232'); cy.get('[data-testid="is-spouse-deceased-0"]').click(); cy.get('[data-testid="contact-secondary-name"]').type('John Spouse'); @@ -91,7 +91,7 @@ export function fillPetitionerAndSpouseInformation(addPhone: boolean = false) { if (addPhone) { cy.get('[data-testid="contact-secondary-phone"]').type('1232323232'); } - cy.get('[data-testid="contactSecondary.placeOfLegalResidence"]').select('AK'); + cy.get('[data-testid="contactSecondary-placeOfLegalResidence"]').select('AK'); cy.get('[data-testid="step-1-next-button"]').click(); } @@ -145,10 +145,13 @@ export function fillPetitionerInformation() { cy.get('[data-testid="step-1-next-button"]').click(); } -export function fillIrsNoticeInformation(filePath: string) { +export function fillIrsNoticeInformation( + filePath: string, + caseType: string = 'Deficiency', +) { cy.get('[data-testid="irs-notice-Yes"]').click(); cy.get('[data-testid="irs-notice-upload-0"]').attachFile(filePath); - cy.get('[data-testid="case-type-select"]').select('Deficiency'); + 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(); } @@ -255,7 +258,7 @@ export function fillPrimaryContact() { cy.get('[data-testid="contactPrimary.postalCode"]').type( contactInfo.postalCode, ); - cy.get('[data-testid="contactPrimary.placeOfLegalResidence"]').select( + cy.get('[data-testid="contactPrimary-placeOfLegalResidence"]').select( contactInfo.placeOfLegalResidence, ); cy.get('[data-testid="contact-primary-phone"]').type(contactInfo.phone); @@ -314,7 +317,7 @@ export function fillSecondaryContact(useSameAddress = true) { secondaryContactInfo.postalCode, ); } - cy.get('[data-testid="contactSecondary.placeOfLegalResidence"]').select( + cy.get('[data-testid="contactSecondary-placeOfLegalResidence"]').select( secondaryContactInfo.placeOfLegalResidence, ); diff --git a/cypress/local-only/tests/integration/statusReportOrder/check-permissions-status-report-order.cy.ts b/cypress/local-only/tests/integration/statusReportOrder/check-permissions-status-report-order.cy.ts new file mode 100644 index 00000000000..be09953beb6 --- /dev/null +++ b/cypress/local-only/tests/integration/statusReportOrder/check-permissions-status-report-order.cy.ts @@ -0,0 +1,40 @@ +import { + docketNumber, + messages, + statusReportDocketEntryId, +} from '../../../support/statusReportOrder'; +import { loginAsDocketClerk } from '../../../../helpers/authentication/login-as-helpers'; + +describe('check permissions for status report order', () => { + beforeEach(() => { + loginAsDocketClerk(); + }); + + it('docket clerk should not be able to create status report order', () => { + cy.visit(`/case-detail/${docketNumber}`); + cy.get('#tab-document-view').click(); + cy.get(`[data-entry-id="${statusReportDocketEntryId}"]`).click(); + + cy.get('[data-testid="order-button"]').should('not.exist'); + }); + + it('docket clerk should not be able to edit a status report order in the status report order form', () => { + cy.visit(`/case-detail/${docketNumber}`); + cy.get('#tab-drafts').click(); + cy.contains('button', messages.testStatusReportOrderUnsigned.name).click(); + + cy.get('#draft-edit-button-not-signed').should('not.exist'); + }); + + it('docket clerk should not be able to view status report order route', () => { + [ + `/case-detail/${docketNumber}/documents/${statusReportDocketEntryId}/status-report-order-create?statusReportFilingDate=2024-06-28&statusReportIndex=5`, + `/case-detail/${docketNumber}/documents/${statusReportDocketEntryId}/status-report-order-edit`, + `/messages/${docketNumber}/message-detail/${messages.statusReport.messageId}/${statusReportDocketEntryId}/status-report-order-create?statusReportFilingDate=2024-06-28&statusReportIndex=5`, + `/messages/${docketNumber}/message-detail/${messages.statusReport.messageId}/${statusReportDocketEntryId}/status-report-order-create`, + ].forEach((route: string) => { + cy.visit(route); + cy.contains('Error 404').should('exist'); + }); + }); +}); diff --git a/cypress/local-only/tests/integration/statusReportOrder/edit-status-report-order.cy.ts b/cypress/local-only/tests/integration/statusReportOrder/edit-status-report-order.cy.ts new file mode 100644 index 00000000000..b34251b6bd4 --- /dev/null +++ b/cypress/local-only/tests/integration/statusReportOrder/edit-status-report-order.cy.ts @@ -0,0 +1,207 @@ +import { + FORMATS, + formatNow, +} from '../../../../../shared/src/business/utilities/DateHandler'; +import { + docketNumber, + expectedPdfLines, + getLastDraftOrderElementFromDrafts, + getLastDraftOrderElementIndexFromDrafts, + messages, + selectAllOptionsInForm, + statusReportDocketEntryId, +} from '../../../support/statusReportOrder'; +import { loginAsColvin } from '../../../../helpers/authentication/login-as-helpers'; + +describe('edit status report order', () => { + beforeEach(() => { + loginAsColvin(); + cy.visit(`/case-detail/${docketNumber}`); + }); + + describe('editing a status report order from drafts document view', () => { + it('should load existing unsigned order', () => { + cy.visit(`/case-detail/${docketNumber}`); + cy.get('#tab-drafts').click(); + cy.contains( + 'button', + messages.testStatusReportOrderUnsigned.name, + ).click(); + cy.get('[data-testid="draft-edit-button-not-signed"]').click(); + + cy.get('[data-testid="status-report-order-pdf-preview"]').should( + 'not.be.empty', + ); + + cy.get('#order-type-status-report').should('be.checked'); + // expect either the seeded data's date or else the updated date we set in these tests + cy.get('#status-report-due-date-picker').should($el => { + expect($el.val()).to.satisfy( + (t: string | string[]) => + t.includes('07/11/2024') || + t.includes(`${formatNow(FORMATS.MMDDYYYY)}`), + ); + }); + cy.get('#stricken-from-trial-sessions').should('be.checked'); + cy.get('#jurisdiction-retained').should('be.checked'); + cy.get('#additional-order-text').should('contain', 'Test'); + }); + + it('should load existing signed order', () => { + cy.get('#tab-drafts').click(); + cy.contains('button', messages.testStatusReportOrderSigned.name).click(); + cy.get('[data-testid="edit-order-button"]').click(); + cy.get('[data-testid="modal-button-confirm"]').click(); + + cy.get('[data-testid="status-report-order-pdf-preview"]').should( + 'not.be.empty', + ); + + cy.get('#order-type-status-report').should('be.checked'); + cy.get('#status-report-due-date-picker').invoke('val').should('exist'); + cy.get('#stricken-from-trial-sessions').should('be.checked'); + cy.get('#jurisdiction-retained').should('be.checked'); + cy.get('#additional-order-text').should('contain', 'Test'); + + cy.get('#status-report-due-date-picker').clear(); + cy.get('#status-report-due-date-picker').type( + formatNow(FORMATS.MMDDYYYY), + ); + cy.get('[data-testid="save-draft-button"]').click(); + cy.get('[data-testid="sign-pdf-canvas"]').click(); + cy.get('[data-testid="save-signature-button"]').click(); + }); + + it('should be able to save edited status report order without duplicates', () => { + cy.get('#tab-document-view').click(); + cy.get(`[data-entry-id="${statusReportDocketEntryId}"]`).click(); + cy.get('[data-testid="status-report-order-button"]').click(); + selectAllOptionsInForm(); + cy.get('[data-testid="save-draft-button"]').click(); + cy.contains('Apply Signature').should('exist'); + cy.get('[data-testid="skip-signature-button"]').click(); + + cy.get('#tab-drafts').click(); + + getLastDraftOrderElementFromDrafts().click(); + // We'll get the order index and check it later to ensure that we have edited our existing order rather than created a new order + const lastOrderIndex = getLastDraftOrderElementIndexFromDrafts(); + + cy.get('[data-testid="draft-edit-button-not-signed"]').click(); + cy.get('#stricken-from-trial-sessions').uncheck({ force: true }); + + cy.intercept('POST', '**/api/court-issued-order').as('courtIssuedOrder'); + cy.get('[data-testid="save-draft-button"]').click(); + + cy.wait('@courtIssuedOrder').then(({ request: req }) => { + expectedPdfLines.forEach((pdfLine, i) => { + if (i === 2 || i === 3) { + expect(req.body.contentHtml).to.not.include(pdfLine); + } else { + expect(req.body.contentHtml).to.include(pdfLine); + } + }); + }); + cy.contains('Apply Signature').should('exist'); + + cy.get('[data-testid="skip-signature-button"]').click(); + cy.get('#tab-drafts').click(); + + expect(lastOrderIndex == getLastDraftOrderElementIndexFromDrafts()); + }); + }); + + describe('editing a status report order from message view', () => { + it('should load existing unsigned order', () => { + cy.get('#tab-case-messages').click(); + cy.contains('a', messages.testStatusReportOrderUnsigned.name).click(); + cy.get('[data-testid="edit-unsigned-document-button"]').click(); + + cy.get('[data-testid="status-report-order-pdf-preview"]').should( + 'not.be.empty', + ); + + cy.get('#order-type-status-report').should('be.checked'); + // expect either the seeded data's date or else the updated date we set in these tests + cy.get('#status-report-due-date-picker').should($el => { + expect($el.val()).to.satisfy( + (t: string | string[]) => + t.includes('07/11/2024') || + t.includes(`${formatNow(FORMATS.MMDDYYYY)}`), + ); + }); + cy.get('#stricken-from-trial-sessions').should('be.checked'); + cy.get('#jurisdiction-retained').should('be.checked'); + cy.get('#additional-order-text').should('contain', 'Test'); + }); + + it('should load existing signed order', () => { + cy.get('#tab-case-messages').click(); + cy.contains('a', messages.testStatusReportOrderSigned.name).click(); + cy.get('[data-testid="edit-signed-document-button"]').click(); + cy.get('[data-testid="modal-button-confirm"]').click(); + + cy.get('[data-testid="status-report-order-pdf-preview"]').should( + 'not.be.empty', + ); + + cy.get('#order-type-status-report').should('be.checked'); + cy.get('#status-report-due-date-picker').invoke('val').should('exist'); + cy.get('#stricken-from-trial-sessions').should('be.checked'); + cy.get('#jurisdiction-retained').should('be.checked'); + cy.get('#additional-order-text').should('contain', 'Test'); + + cy.get('#status-report-due-date-picker').clear(); + cy.get('#status-report-due-date-picker').type( + formatNow(FORMATS.MMDDYYYY), + ); + cy.get('[data-testid="save-draft-button"]').click(); + cy.get('[data-testid="sign-pdf-canvas"]').click(); + cy.get('[data-testid="save-signature-button"]').click(); + }); + + it('should redirect to messages tab upon saving signed status report order', () => { + cy.get('#tab-case-messages').click(); + cy.contains('a', messages.testStatusReportOrderSigned.name).click(); + cy.get('[data-testid="edit-signed-document-button"]').click(); + cy.get('[data-testid="modal-button-confirm"]').click(); + cy.get('#status-report-due-date-picker').clear(); + cy.get('#status-report-due-date-picker').type( + formatNow(FORMATS.MMDDYYYY), + ); + + cy.get('[data-testid="save-draft-button"]').click(); + + cy.contains('Apply Signature').should('exist'); + + cy.get('[data-testid="sign-pdf-canvas"]').click(); + cy.get('[data-testid="save-signature-button"]').click(); + + cy.url().should('contain', `messages/${docketNumber}/message-detail`); + cy.contains( + '.attachment-viewer-button', + messages.testStatusReportOrderSigned.name, + ).should('exist'); + }); + + it('should redirect to messages tab upon saving unsigned status report order', () => { + cy.get('#tab-case-messages').click(); + cy.contains('a', messages.testStatusReportOrderUnsigned.name).click(); + cy.get('[data-testid="edit-unsigned-document-button"]').click(); + + // Update date to pass validation on save + cy.get('#status-report-due-date-picker').clear(); + cy.get('#status-report-due-date-picker').type( + formatNow(FORMATS.MMDDYYYY), + ); + + cy.get('[data-testid="save-draft-button"]').click(); + + cy.contains('Apply Signature').should('exist'); + + cy.get('[data-testid="skip-signature-button"]').click(); + + cy.url().should('contain', `messages/${docketNumber}/message-detail`); + }); + }); +}); diff --git a/cypress/local-only/tests/integration/statusReportOrder/file-status-report-order.cy.ts b/cypress/local-only/tests/integration/statusReportOrder/file-status-report-order.cy.ts new file mode 100644 index 00000000000..3da13c93f06 --- /dev/null +++ b/cypress/local-only/tests/integration/statusReportOrder/file-status-report-order.cy.ts @@ -0,0 +1,281 @@ +import { + FORMATS, + formatNow, +} from '../../../../../shared/src/business/utilities/DateHandler'; +import { + docketNumber, + expectedPdfLines, + getLastDraftOrderElementIndexFromDrafts, + leadCaseDocketNumber, + selectAllOptionsInForm, +} from '../../../support/statusReportOrder'; +import { + loginAsAdc, + loginAsColvin, + loginAsColvinChambers, +} from '../../../../helpers/authentication/login-as-helpers'; +import { retry } from '../../../../helpers/retry'; + +describe('file status report order', () => { + const today = formatNow(FORMATS.MMDDYYYY); + const formattedToday = formatNow(FORMATS.MONTH_DAY_YEAR); + const firstPdfLineJustThisCase = + 'On June 28, 2024, a status report was filed (Index no.'; + const firstPdfLineForAllCasesInGroup = + 'On June 28, 2024, a status report was filed (Lead case index no.'; + + describe('judge', () => { + beforeEach(() => { + loginAsColvin(); + }); + + describe('pdf preview', () => { + it('should show a pdf preview when clicking preview pdf', () => { + cy.visit(`/case-detail/${docketNumber}`); + cy.get('#tab-document-view').click(); + cy.contains('Status Report').click(); + cy.get('[data-testid="status-report-order-button"]').click(); + + cy.get('[data-testid="preview-pdf-button"]').click(); + + // Expect pdf wrapper to contain preview content + retry(() => { + return cy.get('body').then(body => { + /** Assert */ + return ( + body.find('#status-report-order-pdf-preview').children.length > 1 + ); + }); + }); + }); + }); + + describe('filing a status report order from document view', () => { + it('should save unsigned draft when no options are selected', () => { + cy.visit(`/case-detail/${docketNumber}`); + cy.get('#tab-document-view').click(); + const lastOrderIndex = getLastDraftOrderElementIndexFromDrafts(); + cy.contains('Status Report').click(); + cy.get('[data-testid="status-report-order-button"]').click(); + + cy.get('#jurisdiction-retained').should('be.disabled'); + cy.get('#jurisdiction-restored-to-general-docket').should( + 'be.disabled', + ); + + // We check that no options are selected when the user + // selects a jurisdiction but then unchecks case stricken + cy.get('#stricken-from-trial-sessions').check({ force: true }); + cy.get('#jurisdiction-retained').check({ force: true }); + cy.get('#stricken-from-trial-sessions').uncheck({ force: true }); + + cy.get('#jurisdiction-retained').should('be.disabled'); + cy.get('#jurisdiction-restored-to-general-docket').should( + 'be.disabled', + ); + + cy.intercept('POST', '**/api/court-issued-order').as( + 'courtIssuedOrder', + ); + cy.get('[data-testid="save-draft-button"]').click(); + + cy.wait('@courtIssuedOrder').then(({ request: req }) => { + expect(req.body.contentHtml).to.include(expectedPdfLines[0]); + expectedPdfLines.forEach((pdfLine, i) => { + if (i > 0) { + expect(req.body.contentHtml).to.not.include(pdfLine); + } + }); + }); + cy.contains('Apply Signature').should('exist'); + + cy.get('[data-testid="sign-pdf-canvas"]').click(); + cy.get('[data-testid="save-signature-button"]').click(); + cy.get('#tab-drafts').click(); + + // Check that we made a new order draft + expect(lastOrderIndex).to.not.equal( + getLastDraftOrderElementIndexFromDrafts(), + ); + }); + + it('should save signed draft when all options are selected', () => { + cy.visit(`/case-detail/${docketNumber}`); + cy.get('#tab-document-view').click(); + const lastOrderIndex = getLastDraftOrderElementIndexFromDrafts(); + cy.contains('Status Report').click(); + cy.get('[data-testid="status-report-order-button"]').click(); + selectAllOptionsInForm(); + + cy.intercept('POST', '**/api/court-issued-order').as( + 'courtIssuedOrder', + ); + cy.get('[data-testid="save-draft-button"]').click(); + + cy.wait('@courtIssuedOrder').then(({ request: req }) => { + expectedPdfLines.forEach(pdfLine => { + expect(req.body.contentHtml).to.include(pdfLine); + }); + }); + + cy.contains('Apply Signature').should('exist'); + + cy.get('[data-testid="skip-signature-button"]').click(); + cy.get('#tab-drafts').click(); + + // Check that we made a new order draft + expect(lastOrderIndex).to.not.equal( + getLastDraftOrderElementIndexFromDrafts(), + ); + }); + + it('should save draft when order type is "Status Report or Stipulated Decision"', () => { + const secondPdfLine = `ORDERED that the parties shall file a status report or proposed stipulated decision by ${formattedToday}`; + + cy.visit(`/case-detail/${docketNumber}`); + cy.get('#tab-document-view').click(); + cy.contains('Status Report').click(); + cy.get('[data-testid="status-report-order-button"]').click(); + cy.get('#order-type-or-stipulated-decision').check({ force: true }); + cy.get('#status-report-due-date-picker').type(today); + + cy.intercept('POST', '**/api/court-issued-order').as( + 'courtIssuedOrder', + ); + cy.get('[data-testid="save-draft-button"]').click(); + + cy.wait('@courtIssuedOrder').then(({ request: req }) => { + expect(req.body.contentHtml).to.include(expectedPdfLines[0]); + expect(req.body.contentHtml).to.include(secondPdfLine); + expect(req.body.contentHtml).to.not.include(expectedPdfLines[1]); + }); + cy.contains('Apply Signature').should('exist'); + }); + + it('should save draft when jurisdiction is "Restored to the general docket"', () => { + const secondPdfLine = + 'ORDERED that this case is restored to the general docket.'; + + cy.visit(`/case-detail/${docketNumber}`); + cy.get('#tab-document-view').click(); + cy.contains('Status Report').click(); + cy.get('[data-testid="status-report-order-button"]').click(); + cy.get('#jurisdiction-restored-to-general-docket').check({ + force: true, + }); + + cy.intercept('POST', '**/api/court-issued-order').as( + 'courtIssuedOrder', + ); + cy.get('[data-testid="save-draft-button"]').click(); + + cy.wait('@courtIssuedOrder').then(({ request: req }) => { + expect(req.body.contentHtml).to.include(expectedPdfLines[0]); + expect(req.body.contentHtml).to.include(secondPdfLine); + expect(req.body.contentHtml).to.not.include(expectedPdfLines[3]); + }); + cy.contains('Apply Signature').should('exist'); + }); + + it('should save draft with all case docket numbers on PDF when issue order is "All cases in this group"', () => { + cy.visit(`/case-detail/${leadCaseDocketNumber}`); + cy.get('#tab-document-view').click(); + cy.contains('Status Report').click(); + cy.get('[data-testid="status-report-order-button"]').click(); + + cy.intercept('POST', '**/api/court-issued-order').as( + 'courtIssuedOrder', + ); + cy.get('[data-testid="save-draft-button"]').click(); + + cy.wait('@courtIssuedOrder').then(({ request: req }) => { + expect(req.body.addedDocketNumbers).to.include.members([ + '102-67', + '103-67', + '104-67', + '105-67', + ]); + expect(req.body.contentHtml).to.include( + firstPdfLineForAllCasesInGroup, + ); + expect(req.body.contentHtml).not.to.include(firstPdfLineJustThisCase); + }); + cy.contains('Apply Signature').should('exist'); + }); + + it('should save draft with just lead case docket number on PDF when issue order is "Just this case"', () => { + cy.visit(`/case-detail/${leadCaseDocketNumber}`); + cy.get('#tab-document-view').click(); + cy.contains('Status Report').click(); + cy.get('[data-testid="status-report-order-button"]').click(); + cy.get('#just-this-case').click({ force: true }); + + cy.intercept('POST', '**/api/court-issued-order').as( + 'courtIssuedOrder', + ); + cy.get('[data-testid="save-draft-button"]').click(); + + cy.wait('@courtIssuedOrder').then(({ request: req }) => { + expect(req.body.addedDocketNumbers).to.be.empty; + expect(req.body.contentHtml).to.include(firstPdfLineJustThisCase); + expect(req.body.contentHtml).not.to.include( + firstPdfLineForAllCasesInGroup, + ); + }); + cy.contains('Apply Signature').should('exist'); + }); + }); + + describe('filing a status report order from message view', () => { + it('should be able to create signed order from messages and redirects to messages tab', () => { + cy.visit(`/case-detail/${docketNumber}`); + + cy.get('#tab-case-messages').click(); + cy.contains('a', 'Status Report').click(); + cy.get('[data-testid="status-report-order-button"]').click(); + cy.get('[data-testid="save-draft-button"]').click(); + cy.contains('Apply Signature').should('exist'); + cy.get('[data-testid="sign-pdf-canvas"]').click(); + cy.get('[data-testid="save-signature-button"]').click(); + + cy.contains('Order updated.').should('exist'); + cy.url().should('include', `messages/${docketNumber}/message-detail/`); + cy.contains('.attachment-viewer-button', 'Order').should('exist'); + }); + }); + }); + + describe('chambers', () => { + describe('filing a status report order from document view', () => { + it('should save draft when all options are selected', () => { + loginAsColvinChambers(); + cy.visit(`/case-detail/${docketNumber}`); + cy.get('#tab-document-view').click(); + cy.contains('Status Report').click(); + cy.get('[data-testid="status-report-order-button"]').click(); + selectAllOptionsInForm(); + + cy.get('[data-testid="save-draft-button"]').click(); + + cy.contains('Apply Signature').should('exist'); + }); + }); + }); + + describe('adc', () => { + describe('filing a status report order from document view', () => { + it('should save draft when all options are selected', () => { + loginAsAdc(); + cy.visit(`/case-detail/${docketNumber}`); + cy.get('#tab-document-view').click(); + cy.contains('Status Report').click(); + cy.get('[data-testid="status-report-order-button"]').click(); + selectAllOptionsInForm(); + + cy.get('[data-testid="save-draft-button"]').click(); + + cy.contains('Apply Signature').should('exist'); + }); + }); + }); +}); diff --git a/cypress/local-only/tests/integration/statusReportOrder/serve-status-report-order.cy.ts b/cypress/local-only/tests/integration/statusReportOrder/serve-status-report-order.cy.ts new file mode 100644 index 00000000000..6d93c9a8b4e --- /dev/null +++ b/cypress/local-only/tests/integration/statusReportOrder/serve-status-report-order.cy.ts @@ -0,0 +1,36 @@ +import { + docketNumber, + getLastDraftOrderElementFromDrafts, +} from '../../../support/statusReportOrder'; +import { + loginAsColvin, + loginAsDocketClerk, +} from '../../../../helpers/authentication/login-as-helpers'; +import { logout } from '../../../../helpers/authentication/logout'; + +describe('serve status report order', () => { + it('should serve status report order', () => { + // Create a Status Report Order as a judge + loginAsColvin(); + cy.visit(`/case-detail/${docketNumber}`); + cy.get('#tab-document-view').click(); + cy.contains('Status Report').click(); + cy.get('[data-testid="status-report-order-button"]').click(); + cy.get('[data-testid="save-draft-button"]').click(); + cy.get('[data-testid="sign-pdf-canvas"]').click(); + cy.get('[data-testid="save-signature-button"]').click(); + logout(); + + // Go to the Status Report Order and serve it as a docket clerk + loginAsDocketClerk(); + cy.visit(`/case-detail/${docketNumber}`); + cy.get('#tab-drafts').click(); + getLastDraftOrderElementFromDrafts().click(); + cy.get('[data-testid="add-court-issued-docket-entry-button"]').click(); + cy.get('[data-testid="service-stamp-Served"]').click({ force: true }); + cy.get('[data-testid="serve-to-parties-btn"]').click(); + cy.get('[data-testid="modal-button-confirm"]').click(); + cy.contains('Document served.').should('exist'); + getLastDraftOrderElementFromDrafts().should('exist'); + }); +}); diff --git a/cypress/local-only/tests/integration/statusReportOrder/validate-status-report-order.cy.ts b/cypress/local-only/tests/integration/statusReportOrder/validate-status-report-order.cy.ts new file mode 100644 index 00000000000..e662340a995 --- /dev/null +++ b/cypress/local-only/tests/integration/statusReportOrder/validate-status-report-order.cy.ts @@ -0,0 +1,64 @@ +import { docketNumber } from '../../../support/statusReportOrder'; +import { loginAsColvin } from '../../../../helpers/authentication/login-as-helpers'; + +describe('validate status report order', () => { + beforeEach(() => { + loginAsColvin(); + cy.visit(`/case-detail/${docketNumber}`); + }); + + describe('form validation', () => { + it('should have a valid due date', () => { + cy.get('#tab-document-view').click(); + cy.contains('Status Report').click(); + cy.get('[data-testid="status-report-order-button"]').click(); + cy.get('#order-type-status-report').check({ force: true }); + cy.get('#status-report-due-date-picker').type('bb-bb-bbbb'); + cy.get('[data-testid="save-draft-button"]').click(); + + cy.get('[data-testid="error-alert"]').should( + 'contain.text', + 'Enter a valid date', + ); + cy.get('#status-report-due-date-form-group').should( + 'contain.text', + 'Enter a valid date', + ); + }); + + it('should have a due date prior to today', () => { + cy.get('#tab-document-view').click(); + cy.contains('Status Report').click(); + cy.get('[data-testid="status-report-order-button"]').click(); + cy.get('#order-type-status-report').check({ force: true }); + cy.get('#status-report-due-date-picker').type('07/04/2023'); + cy.get('[data-testid="save-draft-button"]').click(); + + cy.get('[data-testid="error-alert"]').should( + 'contain.text', + 'Due date cannot be prior to today. Enter a valid date.', + ); + cy.get('#status-report-due-date-form-group').should( + 'contain.text', + 'Due date cannot be prior to today. Enter a valid date.', + ); + }); + + it('should have a jurisdiction when case is stricken from trial session', () => { + cy.get('#tab-document-view').click(); + cy.contains('Status Report').click(); + cy.get('[data-testid="status-report-order-button"]').click(); + cy.get('#stricken-from-trial-sessions').check({ force: true }); + cy.get('[data-testid="save-draft-button"]').click(); + + cy.get('[data-testid="error-alert"]').should( + 'contain.text', + 'Jurisdiction is required since case is stricken from the trial session', + ); + cy.get('#jurisdiction-form-group').should( + 'contain.text', + 'Select jurisdiction', + ); + }); + }); +}); diff --git a/docs/dependency-updates.md b/docs/dependency-updates.md index d70cb770cd1..2b0015e98bd 100644 --- a/docs/dependency-updates.md +++ b/docs/dependency-updates.md @@ -6,7 +6,7 @@ At the moment, the only task we rotate is updating dependencies. As an open-sour > After changes are made to any dependencies, deploy to an experimental environment to verify that all tests pass! -## Library Update Steps +## Library Update Steps ### Do the following for all package.json files @@ -31,9 +31,9 @@ note: we have 2 package.json files, be sure to update both To publish a new ECR docker image: - - Increment the docker image version being used in `.circleci/config.yml` in the docker variable: + - Increment the docker image version being used in `.circleci/config.yml` in the docker variable: `efcms-docker-image: &efcms-docker-image`. e.g. `ef-cms-us-east-1:3.1.6` -> `ef-cms-us-east-1:3.1.7` - - Publish a docker image tagged with the incremented version number to ECR with the command: `export DESTINATION_TAG=[INSERT NEW DOCKER IMAGE VERSION] && npm run deploy:ci-image`. Do this for both the USTC account AND the Flexion account (using environment switcher). + - Publish a docker image tagged with the incremented version number to ECR with the command: `export DESTINATION_TAG=[INSERT NEW DOCKER IMAGE VERSION] && npm run deploy:ci-image`. Do this for both the USTC account AND the Flexion account (using environment switcher). - example: `export DESTINATION_TAG=3.1.6 && npm run deploy:ci-image` - you can verify the image deployed on AWS ECR repository "ef-cms-us-east-1" - if you run into any errors similar to 'At least one invalid signature was encountered', try running `docker builder prune` or `docker system prune` on your local machine. https://stackoverflow.com/questions/62473932/at-least-one-invalid-signature-was-encountered @@ -77,7 +77,7 @@ Below is a list of dependencies that are locked down due to known issues with se - When updating puppeteer or puppeteer core in the project, make sure to also match versions in `web-api/runtimes/puppeteer/package.json` as this is our lambda layer which we use to generate pdfs. Puppeteer and chromium versions should always match between package.json and web-api/runtimes/puppeteer/package.json. Remember to run `npm install --prefix web-api/runtimes/puppeteer` to install and update the package-lock file. - Puppeteer also has recommended versions of Chromium, so we should make sure to use the recommended version of chromium for the version of puppeteer that we are on. -- As of 07/12/2024, we cannot update puppeteer beyond 22.6.5 because @sparticuz/chromium only supports version 123 of chromium. +- As of 8/7/2024, we cannot update puppeteer or puppeteer-core beyond 22.13.1 because the latest release of @sparticuz/chromium only supports version 126 of chromium. - There is a high-severity security issue with ws (ws affected by a DoS when handling a request with many HTTP headers - https://github.com/advisories/GHSA-3h5v-q93c-6h6q); however, we only use ws on the client side, so this should not be an issue. (We tried to upgrade puppeteer anyway, but unsurprisingly the PDF tests failed because there is no newer version of Chromium that supports puppeteer.) ### pdfjs-dist diff --git a/esbuildHelper.mjs b/esbuildHelper.mjs index c2801a5d02b..ef12402b670 100644 --- a/esbuildHelper.mjs +++ b/esbuildHelper.mjs @@ -136,7 +136,7 @@ export default async function ({ copy({ assets: [ { - from: ['web-client/src/favicons'], + from: ['web-client/src/favicons/**/*'], keepStructure: true, to: ['.'], }, diff --git a/package-lock.json b/package-lock.json index 9384e9915a6..445ae6d4c25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,34 +12,34 @@ "dependencies": { "@18f/us-federal-holidays": "4.0.0", "@aws-crypto/sha256-browser": "5.2.0", - "@aws-sdk/client-api-gateway": "3.623.0", - "@aws-sdk/client-apigatewaymanagementapi": "3.623.0", - "@aws-sdk/client-apigatewayv2": "3.623.0", - "@aws-sdk/client-cloudfront": "3.623.0", - "@aws-sdk/client-cloudwatch": "3.623.0", - "@aws-sdk/client-cloudwatch-logs": "3.616.0", - "@aws-sdk/client-cognito-identity-provider": "3.616.0", - "@aws-sdk/client-dynamodb": "3.619.0", - "@aws-sdk/client-dynamodb-streams": "3.616.0", - "@aws-sdk/client-glue": "3.623.0", - "@aws-sdk/client-lambda": "3.623.0", - "@aws-sdk/client-opensearch": "3.623.0", - "@aws-sdk/client-route-53": "3.623.0", - "@aws-sdk/client-s3": "3.623.0", - "@aws-sdk/client-ses": "3.623.0", - "@aws-sdk/client-sns": "3.623.0", - "@aws-sdk/client-sqs": "3.623.0", - "@aws-sdk/client-ssm": "3.623.0", + "@aws-sdk/client-api-gateway": "3.624.0", + "@aws-sdk/client-apigatewaymanagementapi": "3.624.0", + "@aws-sdk/client-apigatewayv2": "3.624.0", + "@aws-sdk/client-cloudfront": "3.624.0", + "@aws-sdk/client-cloudwatch": "3.624.0", + "@aws-sdk/client-cloudwatch-logs": "3.624.0", + "@aws-sdk/client-cognito-identity-provider": "3.628.0", + "@aws-sdk/client-dynamodb": "3.624.0", + "@aws-sdk/client-dynamodb-streams": "3.624.0", + "@aws-sdk/client-glue": "3.627.0", + "@aws-sdk/client-lambda": "3.624.0", + "@aws-sdk/client-opensearch": "3.624.0", + "@aws-sdk/client-route-53": "3.624.0", + "@aws-sdk/client-s3": "3.627.0", + "@aws-sdk/client-ses": "3.624.0", + "@aws-sdk/client-sns": "3.624.0", + "@aws-sdk/client-sqs": "3.624.0", + "@aws-sdk/client-ssm": "3.624.0", "@aws-sdk/cloudfront-signer": "3.621.0", - "@aws-sdk/credential-provider-node": "3.623.0", - "@aws-sdk/lib-dynamodb": "3.619.0", - "@aws-sdk/lib-storage": "3.623.0", + "@aws-sdk/credential-provider-node": "3.624.0", + "@aws-sdk/lib-dynamodb": "3.624.0", + "@aws-sdk/lib-storage": "3.627.0", "@aws-sdk/node-http-handler": "3.374.0", "@aws-sdk/protocol-http": "3.374.0", - "@aws-sdk/s3-presigned-post": "3.623.0", - "@aws-sdk/s3-request-presigner": "3.623.0", + "@aws-sdk/s3-presigned-post": "3.627.0", + "@aws-sdk/s3-request-presigner": "3.627.0", "@aws-sdk/signature-v4": "3.374.0", - "@aws-sdk/util-dynamodb": "3.619.0", + "@aws-sdk/util-dynamodb": "3.624.0", "@cerebral/react": "4.2.1", "@fortawesome/fontawesome-svg-core": "1.2.36", "@fortawesome/free-regular-svg-icons": "5.15.4", @@ -70,10 +70,9 @@ "image-blob-reduce": "4.1.0", "joi": "17.13.3", "jsonwebtoken": "9.0.2", - "jwk-to-pem": "2.0.5", "lodash": "4.17.21", "logform": "2.6.1", - "luxon": "3.4.4", + "luxon": "3.5.0", "moize": "6.1.6", "parse-full-name": "1.2.6", "pdf-lib": "1.17.1", @@ -81,7 +80,7 @@ "process": "0.11.10", "promise-retry": "2.0.1", "pug": "3.0.3", - "qs": "6.12.3", + "qs": "6.13.0", "quill-delta-to-html": "0.12.1", "react": "18.3.1", "react-dom": "18.3.1", @@ -100,11 +99,11 @@ "uuid": "10.0.0", "websocket": "1.0.35", "wicg-inert": "3.1.2", - "winston": "3.13.1" + "winston": "3.14.1" }, "devDependencies": { - "@aws-sdk/client-iam": "3.623.0", - "@aws-sdk/client-secrets-manager": "3.623.0", + "@aws-sdk/client-iam": "3.624.0", + "@aws-sdk/client-secrets-manager": "3.624.0", "@babel/cli": "7.24.8", "@babel/core": "7.25.2", "@babel/eslint-parser": "7.25.1", @@ -115,7 +114,7 @@ "@cypress/puppeteer": "^0.1.5", "@faker-js/faker": "8.4.1", "@miovision/eslint-plugin-disallow-date": "2.0.0", - "@types/aws-lambda": "8.10.142", + "@types/aws-lambda": "8.10.143", "@types/jest": "29.5.12", "@types/lodash": "4.17.7", "@types/luxon": "3.4.2", @@ -126,15 +125,15 @@ "@types/react-paginate": "7.1.4", "@types/uuid": "10.0.0", "@types/websocket": "1.0.10", - "@typescript-eslint/eslint-plugin": "7.17.0", - "@typescript-eslint/parser": "7.17.0", + "@typescript-eslint/eslint-plugin": "8.0.1", + "@typescript-eslint/parser": "8.0.1", "@vendia/serverless-express": "4.12.6", "ajv": "8.17.1", - "artillery": "2.0.18", - "artillery-plugin-metrics-by-endpoint": "1.12.0", - "autoprefixer": "10.4.19", + "artillery": "2.0.19", + "artillery-plugin-metrics-by-endpoint": "1.13.0", + "autoprefixer": "10.4.20", "aws-sdk-client-mock": "4.0.1", - "axe-core": "4.9.1", + "axe-core": "4.10.0", "axios-retry": "4.5.0", "babel-jest": "29.7.0", "babel-loader": "9.1.3", @@ -165,10 +164,10 @@ "eslint-config-prettier": "9.1.0", "eslint-plugin-cypress": "3.4.0", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jest": "28.6.0", + "eslint-plugin-jest": "28.8.0", "eslint-plugin-jsx-a11y": "6.9.0", "eslint-plugin-prettier": "5.2.1", - "eslint-plugin-promise": "7.0.0", + "eslint-plugin-promise": "7.1.0", "eslint-plugin-react": "7.35.0", "eslint-plugin-security": "3.0.1", "eslint-plugin-sort-destructure-keys": "2.0.0", @@ -178,13 +177,13 @@ "eslint-plugin-spellcheck": "0.0.20", "esm": "3.2.25", "file-loader": "6.2.0", - "husky": "9.1.2", + "husky": "9.1.4", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-environment-node": "29.7.0", "jsdom": "24.1.1", "json2yaml": "1.1.0", - "lint-staged": "15.2.7", + "lint-staged": "15.2.8", "lint-staged-shellcheck": "0.1.2", "livereload": "0.9.3", "node-cache": "5.1.2", @@ -193,9 +192,9 @@ "pdf2pic": "3.1.1", "pixelmatch": "6.0.0", "pngjs": "7.0.0", - "postcss": "8.4.40", + "postcss": "8.4.41", "postcss-loader": "8.1.1", - "postcss-preset-env": "9.6.0", + "postcss-preset-env": "10.0.0", "prettier": "3.3.3", "prop-types": "15.8.1", "puppeteer": "22.6.5", @@ -204,18 +203,18 @@ "readline": "1.3.0", "s3rver": "github:20minutes/s3rver", "sass": "1.77.8", - "sass-loader": "15.0.0", + "sass-loader": "16.0.0", "shuffle-seed": "1.1.6", "stream-browserify": "3.0.0", "style-loader": "4.0.0", - "stylelint": "16.7.0", + "stylelint": "16.8.1", "stylelint-config-idiomatic-order": "10.0.0", "stylelint-config-standard": "36.0.1", "stylelint-config-standard-scss": "13.1.0", "swagger-cli": "4.0.4", "tiff2pdf": "1.0.2", "totp-generator": "1.0.0", - "ts-jest": "29.2.3", + "ts-jest": "29.2.4", "ts-loader": "9.5.1", "ts-node": "10.9.2", "tsconfig-paths": "4.2.0", @@ -446,9 +445,9 @@ } }, "node_modules/@artilleryio/int-commons": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@artilleryio/int-commons/-/int-commons-2.9.0.tgz", - "integrity": "sha512-ubudPoVW9qmaKiEeFgxwXK2AhMOksy+33CcQQJW/vqfRkrmdszaKxPcqBEzTTz7+7ZrgRHU+JfBpRXG6bUfkUw==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@artilleryio/int-commons/-/int-commons-2.10.0.tgz", + "integrity": "sha512-CukRix3yxcsbjPTPhIyXN7qZ6f/3W+LQtF96RxuZ7L3P0F7y7t4NswPSll2+zDkAMvvBgFojgPL+bFf2EDIiOA==", "dev": true, "dependencies": { "async": "^2.6.4", @@ -462,12 +461,12 @@ } }, "node_modules/@artilleryio/int-core": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@artilleryio/int-core/-/int-core-2.13.0.tgz", - "integrity": "sha512-MR2IphsQc97y8Lmtoid0FD4ph+4ym4G05/9K/GAQg1vfHXcLwNguhDdo9V4YrBpDZllcGpEHsRjdkb2s6Ap6lg==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/@artilleryio/int-core/-/int-core-2.14.0.tgz", + "integrity": "sha512-u0q5p5aWE7DRNRnfmj8JzXqNFitoBKQ4/N/Uur4PXcZCPzB7yQWppRPRJqFUh14zmC/UybDMui1EnbDhBqGGIg==", "dev": true, "dependencies": { - "@artilleryio/int-commons": "2.9.0", + "@artilleryio/int-commons": "2.10.0", "@artilleryio/sketches-js": "^2.1.1", "agentkeepalive": "^4.1.0", "arrivals": "^2.1.2", @@ -808,16 +807,16 @@ } }, "node_modules/@aws-sdk/client-api-gateway": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-api-gateway/-/client-api-gateway-3.623.0.tgz", - "integrity": "sha512-8apZL1KZSOtzCSe428I2TJmFewsy50j2LGjMIzAJjbYRLunyvf/QLM+SzVn+jep63zhZa+iaIYdj/1eIuwuD2A==", + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-api-gateway/-/client-api-gateway-3.624.0.tgz", + "integrity": "sha512-9DeJihU48KVVYlymg9/pfgiLNQ4Kiss5Ei2Ph9SUxZwGBw7uKZwHnE8dfBoGGq1KwDo+hEtQSd+/i/K6p/GwYQ==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.620.0", @@ -873,16 +872,16 @@ } }, "node_modules/@aws-sdk/client-apigatewaymanagementapi": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-apigatewaymanagementapi/-/client-apigatewaymanagementapi-3.623.0.tgz", - "integrity": "sha512-6E1VNsCkKU4E02x1S+422H+AXz5kV77XOfS+sJSMzyBGzXUyP1bp+/JmieVtHz09Xqhp46duWWcuK2BMPPxFhg==", + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-apigatewaymanagementapi/-/client-apigatewaymanagementapi-3.624.0.tgz", + "integrity": "sha512-9rBrw7tkTexRPMgD11muW0HEswLp1X4LJEJYeqjsiBog8JwSDAvnT/kG63z3Hm1hu4tdwSIoWAFl7tF1TujfXw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.620.0", @@ -936,16 +935,16 @@ } }, "node_modules/@aws-sdk/client-apigatewayv2": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-apigatewayv2/-/client-apigatewayv2-3.623.0.tgz", - "integrity": "sha512-YgrKG6YOlgq2c6qfydo71weN/ixO0KpMzzvQLFw/Hyku5bU986sTd+s4z6TAnRFIgamoPrDO3nBc3BtTh+OcRg==", + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-apigatewayv2/-/client-apigatewayv2-3.624.0.tgz", + "integrity": "sha512-wg0hSzaITj6b46+68PRAtbr/ieHo/vgM37usHgefMPBbDOtTp06Qq8g91ZyH2YAFdrkt7rklAyWmWaRrZ65JBA==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.620.0", @@ -1000,16 +999,16 @@ } }, "node_modules/@aws-sdk/client-cloudfront": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.623.0.tgz", - "integrity": "sha512-GHgbPGatostx+yffLN1xOgPl+hvB0mQFUv48/Iv0qnifWBdXvzp1Kv+eXQ6EdK7FtoIsW39yEQONP8EFrNYQmQ==", + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.624.0.tgz", + "integrity": "sha512-QORmDtRjnhnZhKAQO8V2wVt/BN7CVli24CKfBd1SwTPS9evdjorzWlx+nFkzjpsgLAPpQbGnTC6AKDqTh8CRuw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.620.0", @@ -1066,16 +1065,16 @@ } }, "node_modules/@aws-sdk/client-cloudwatch": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.623.0.tgz", - "integrity": "sha512-PI8BJo59ZdrwTaP9soNDPiBGm+G/Z2pjOiiSr60M2N5ofaEEpcUY53bExzEztuaPfaQ4y/ABgD2e1oirHw40Tg==", + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.624.0.tgz", + "integrity": "sha512-xgJ96WnQpha5ScLckmoBZsTBkr8jHhoJSfuTHhNMXzUtA65ixRVjv54UaINrOrnmSq0sBh8tOXQgvGVIRfSXuA==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.620.0", @@ -1119,49 +1118,49 @@ } }, "node_modules/@aws-sdk/client-cloudwatch-logs": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.616.0.tgz", - "integrity": "sha512-jj+4B2vs8Ph5d1iQ5pBiXgpb0y5Hlh/73JWWiC9QjnjDpXy9qdHCNOf5bb3+suKjouzUORTZ/vxe6xuD5Z8kzQ==", + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.624.0.tgz", + "integrity": "sha512-mxC8q3HIIt61ZTSGkdctnr43p0fXxuOato0AkyvzGkCxmP2LjExWGFvNn7t8u/eaNmmgSjczQhn2DTcNnKLMlw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.616.0", - "@aws-sdk/client-sts": "3.616.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/credential-provider-node": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", + "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", "@aws-sdk/util-user-agent-node": "3.614.0", "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/eventstream-serde-browser": "^3.0.4", + "@smithy/core": "^2.3.2", + "@smithy/eventstream-serde-browser": "^3.0.5", "@smithy/eventstream-serde-config-resolver": "^3.0.3", "@smithy/eventstream-serde-node": "^3.0.4", - "@smithy/fetch-http-handler": "^3.2.2", + "@smithy/fetch-http-handler": "^3.2.4", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", @@ -1173,344 +1172,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/client-sso": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.616.0.tgz", - "integrity": "sha512-hwW0u1f8U4dSloAe61/eupUiGd5Q13B72BuzGxvRk0cIpYX/2m0KBG8DDl7jW1b2QQ+CflTLpG2XUf2+vRJxGA==", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.616.0.tgz", - "integrity": "sha512-YY1hpYS/G1uRGjQf88dL8VLHkP/IjGxKeXdhy+JnzMdCkAWl3V9j0fEALw40NZe0x79gr6R2KUOUH/IKYQfUmg==", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/credential-provider-node": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.616.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/client-sts": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.616.0.tgz", - "integrity": "sha512-FP7i7hS5FpReqnysQP1ukQF1OUWy8lkomaOnbu15H415YUrfCp947SIx6+BItjmx+esKxPkEjh/fbCVzw2D6hQ==", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.616.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/credential-provider-node": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/core": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.616.0.tgz", - "integrity": "sha512-O/urkh2kECs/IqZIVZxyeyHZ7OR2ZWhLNK7btsVQBQvJKrEspLrk/Fp20Qfg5JDerQfBN83ZbyRXLJOOucdZpw==", - "dependencies": { - "@smithy/core": "^2.2.7", - "@smithy/protocol-http": "^4.0.4", - "@smithy/signature-v4": "^4.0.0", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "fast-xml-parser": "4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.609.0.tgz", - "integrity": "sha512-v69ZCWcec2iuV9vLVJMa6fAb5xwkzN4jYIT8yjo2c4Ia/j976Q+TPf35Pnz5My48Xr94EFcaBazrWedF+kwfuQ==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.616.0.tgz", - "integrity": "sha512-1rgCkr7XvEMBl7qWCo5BKu3yAxJs71dRaZ55Xnjte/0ZHH6Oc93ZrHzyYy6UH6t0nZrH+FAuw7Yko2YtDDwDeg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/fetch-http-handler": "^3.2.2", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/property-provider": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "@smithy/util-stream": "^3.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.616.0.tgz", - "integrity": "sha512-5gQdMr9cca3xV7FF2SxpxWGH2t6+t4o+XBGiwsHm8muEjf4nUmw7Ij863x25Tjt2viPYV0UStczSb5Sihp7bkA==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.609.0", - "@aws-sdk/credential-provider-http": "3.616.0", - "@aws-sdk/credential-provider-process": "3.614.0", - "@aws-sdk/credential-provider-sso": "3.616.0", - "@aws-sdk/credential-provider-web-identity": "3.609.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.616.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.616.0.tgz", - "integrity": "sha512-Se+u6DAxjDPjKE3vX1X2uxjkWgGq69BTo0uTB0vDUiWwBVgh16s9BsBhSAlKEH1CCbbJHvOg4YdTrzjwzqyClg==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.609.0", - "@aws-sdk/credential-provider-http": "3.616.0", - "@aws-sdk/credential-provider-ini": "3.616.0", - "@aws-sdk/credential-provider-process": "3.614.0", - "@aws-sdk/credential-provider-sso": "3.616.0", - "@aws-sdk/credential-provider-web-identity": "3.609.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.614.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.614.0.tgz", - "integrity": "sha512-Q0SI0sTRwi8iNODLs5+bbv8vgz8Qy2QdxbCHnPk/6Cx6LMf7i3dqmWquFbspqFRd8QiqxStrblwxrUYZi09tkA==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.616.0.tgz", - "integrity": "sha512-3rsWs9GBi8Z8Gps5ROwqguxtw+J6OIg1vawZMLRNMqqZoBvbOToe9wEnpid8ylU+27+oG8uibJNlNuRyXApUjw==", - "dependencies": { - "@aws-sdk/client-sso": "3.616.0", - "@aws-sdk/token-providers": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.609.0.tgz", - "integrity": "sha512-U+PG8NhlYYF45zbr1km3ROtBMYqyyj/oK8NRp++UHHeuavgrP+4wJ4wQnlEaKvJBjevfo3+dlIBcaeQ7NYejWg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.609.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.616.0.tgz", - "integrity": "sha512-mhNfHuGhCDZwYCABebaOvTgOM44UCZZRq2cBpgPZLVKP0ydAv5aFHXv01goexxXHqgHoEGx0uXWxlw0s2EpFDg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.0.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.616.0.tgz", - "integrity": "sha512-LQKAcrZRrR9EGez4fdCIVjdn0Ot2HMN12ChnoMGEU6oIxnQ2aSC7iASFFCV39IYfeMh7iSCPj7Wopqw8rAouzg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.0.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.616.0.tgz", - "integrity": "sha512-iMcAb4E+Z3vuEcrDsG6T2OBNiqWAquwahP9qepHqfmnmJqHr1mSHtXDYTGBNid31+621sUQmneUQ+fagpGAe4w==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@smithy/protocol-http": "^4.0.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", @@ -1523,27 +1184,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/fast-xml-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", - "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", - "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -1621,46 +1261,46 @@ } }, "node_modules/@aws-sdk/client-cognito-identity-provider": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity-provider/-/client-cognito-identity-provider-3.616.0.tgz", - "integrity": "sha512-jkNXOvbKzk3linrTHo6wZqw6eL21leFOIDOmdJGyEX8srxEPey2mbFm9mo17PVIFtbjkrN52W4WP6USheg3EGg==", + "version": "3.628.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity-provider/-/client-cognito-identity-provider-3.628.0.tgz", + "integrity": "sha512-l3zty5vvE38zswQf/WQBA4D6F8lYW9v7eGCeAkhjjxW21SqpcylKWzh8ar5Ybgn1OoH81EAnI9NVGnvrRitoIw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.616.0", - "@aws-sdk/client-sts": "3.616.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/credential-provider-node": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", + "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", "@aws-sdk/util-user-agent-node": "3.614.0", "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", @@ -1671,146 +1311,126 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/client-sso": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.616.0.tgz", - "integrity": "sha512-hwW0u1f8U4dSloAe61/eupUiGd5Q13B72BuzGxvRk0cIpYX/2m0KBG8DDl7jW1b2QQ+CflTLpG2XUf2+vRJxGA==", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "dev": true, + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.616.0.tgz", - "integrity": "sha512-YY1hpYS/G1uRGjQf88dL8VLHkP/IjGxKeXdhy+JnzMdCkAWl3V9j0fEALw40NZe0x79gr6R2KUOUH/IKYQfUmg==", + "node_modules/@aws-sdk/client-dynamodb": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.624.0.tgz", + "integrity": "sha512-/xssTNmwL+au3JIRQLHwz6O1kF8R9lfmL1PocQ+9sxcL4titU9TGslUotvZjdbklp3LzfusQh9Svx5g8EaONSw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/credential-provider-node": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", + "@aws-sdk/middleware-endpoint-discovery": "3.620.0", + "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", "@aws-sdk/util-user-agent-node": "3.614.0", "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" + "@smithy/util-waiter": "^3.1.2", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.616.0" } }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/client-sts": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.616.0.tgz", - "integrity": "sha512-FP7i7hS5FpReqnysQP1ukQF1OUWy8lkomaOnbu15H415YUrfCp947SIx6+BItjmx+esKxPkEjh/fbCVzw2D6hQ==", + "node_modules/@aws-sdk/client-dynamodb-streams": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb-streams/-/client-dynamodb-streams-3.624.0.tgz", + "integrity": "sha512-yqceUva8gS/6MFWjCNHo6gXQxwpTx8gs/5ZfWtkcXc0guA0enUA3JCGPd3fz7++PCGy5SxfeaxprjDBV5vbHoQ==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.616.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/credential-provider-node": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", + "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", "@aws-sdk/util-user-agent-node": "3.614.0", "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", @@ -1821,195 +1441,19 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/core": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.616.0.tgz", - "integrity": "sha512-O/urkh2kECs/IqZIVZxyeyHZ7OR2ZWhLNK7btsVQBQvJKrEspLrk/Fp20Qfg5JDerQfBN83ZbyRXLJOOucdZpw==", - "dependencies": { - "@smithy/core": "^2.2.7", - "@smithy/protocol-http": "^4.0.4", - "@smithy/signature-v4": "^4.0.0", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "fast-xml-parser": "4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.609.0.tgz", - "integrity": "sha512-v69ZCWcec2iuV9vLVJMa6fAb5xwkzN4jYIT8yjo2c4Ia/j976Q+TPf35Pnz5My48Xr94EFcaBazrWedF+kwfuQ==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.616.0.tgz", - "integrity": "sha512-1rgCkr7XvEMBl7qWCo5BKu3yAxJs71dRaZ55Xnjte/0ZHH6Oc93ZrHzyYy6UH6t0nZrH+FAuw7Yko2YtDDwDeg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/fetch-http-handler": "^3.2.2", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/property-provider": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "@smithy/util-stream": "^3.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.616.0.tgz", - "integrity": "sha512-5gQdMr9cca3xV7FF2SxpxWGH2t6+t4o+XBGiwsHm8muEjf4nUmw7Ij863x25Tjt2viPYV0UStczSb5Sihp7bkA==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.609.0", - "@aws-sdk/credential-provider-http": "3.616.0", - "@aws-sdk/credential-provider-process": "3.614.0", - "@aws-sdk/credential-provider-sso": "3.616.0", - "@aws-sdk/credential-provider-web-identity": "3.609.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.616.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.616.0.tgz", - "integrity": "sha512-Se+u6DAxjDPjKE3vX1X2uxjkWgGq69BTo0uTB0vDUiWwBVgh16s9BsBhSAlKEH1CCbbJHvOg4YdTrzjwzqyClg==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.609.0", - "@aws-sdk/credential-provider-http": "3.616.0", - "@aws-sdk/credential-provider-ini": "3.616.0", - "@aws-sdk/credential-provider-process": "3.614.0", - "@aws-sdk/credential-provider-sso": "3.616.0", - "@aws-sdk/credential-provider-web-identity": "3.609.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.614.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.614.0.tgz", - "integrity": "sha512-Q0SI0sTRwi8iNODLs5+bbv8vgz8Qy2QdxbCHnPk/6Cx6LMf7i3dqmWquFbspqFRd8QiqxStrblwxrUYZi09tkA==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.616.0.tgz", - "integrity": "sha512-3rsWs9GBi8Z8Gps5ROwqguxtw+J6OIg1vawZMLRNMqqZoBvbOToe9wEnpid8ylU+27+oG8uibJNlNuRyXApUjw==", - "dependencies": { - "@aws-sdk/client-sso": "3.616.0", - "@aws-sdk/token-providers": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.609.0.tgz", - "integrity": "sha512-U+PG8NhlYYF45zbr1km3ROtBMYqyyj/oK8NRp++UHHeuavgrP+4wJ4wQnlEaKvJBjevfo3+dlIBcaeQ7NYejWg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.609.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.616.0.tgz", - "integrity": "sha512-mhNfHuGhCDZwYCABebaOvTgOM44UCZZRq2cBpgPZLVKP0ydAv5aFHXv01goexxXHqgHoEGx0uXWxlw0s2EpFDg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.0.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.616.0.tgz", - "integrity": "sha512-LQKAcrZRrR9EGez4fdCIVjdn0Ot2HMN12ChnoMGEU6oIxnQ2aSC7iASFFCV39IYfeMh7iSCPj7Wopqw8rAouzg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.0.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.616.0.tgz", - "integrity": "sha512-iMcAb4E+Z3vuEcrDsG6T2OBNiqWAquwahP9qepHqfmnmJqHr1mSHtXDYTGBNid31+621sUQmneUQ+fagpGAe4w==", + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@smithy/protocol-http": "^4.0.4", - "@smithy/types": "^3.3.0", + "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-utf8": { + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", @@ -2021,36 +1465,29 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/fast-xml-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", - "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" ], - "dependencies": { - "strnum": "^1.0.5" - }, "bin": { - "fxparser": "src/cli/cli.js" + "uuid": "dist/bin/uuid" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/client-sso": { - "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.624.0.tgz", - "integrity": "sha512-EX6EF+rJzMPC5dcdsu40xSi2To7GSvdGQNIpe97pD9WvZwM9tRNQnNM4T6HA4gjV1L6Jwk8rBlG/CnveXtLEMw==", - "dev": true, + "node_modules/@aws-sdk/client-glue": { + "version": "3.627.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-glue/-/client-glue-3.627.0.tgz", + "integrity": "sha512-KYfbS8Qz3rAW6eKvh5E/YHCCJi6A6unw1jNe8rQOFJso4dDwpx3MLv8djwjHC5EKSFDwJ6Vf4joMg1CqgQQetg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.620.0", @@ -2091,14 +1528,28 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/client-sso-oidc": { + "node_modules/@aws-sdk/client-glue/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-iam": { "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.624.0.tgz", - "integrity": "sha512-Ki2uKYJKKtfHxxZsiMTOvJoVRP6b2pZ1u3rcUb2m/nVgBPUfLdl8ZkGpqE29I+t5/QaS/sEdbn6cgMUZwl+3Dg==", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-iam/-/client-iam-3.624.0.tgz", + "integrity": "sha512-a3Qy7AIht2nHiZPJ/HiMdyiOLiDN+iKp1R916SEbgFi9MiOyRHFeLCCPQHMf1O8YXfb0hbHr5IFnfZLfUcJaWQ==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", "@aws-sdk/core": "3.624.0", "@aws-sdk/credential-provider-node": "3.624.0", "@aws-sdk/middleware-host-header": "3.620.0", @@ -2135,24 +1586,35 @@ "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.1.2", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "dev": true, + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.624.0" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/client-sts": { + "node_modules/@aws-sdk/client-lambda": { "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.624.0.tgz", - "integrity": "sha512-k36fLZCb2nfoV/DKK3jbRgO/Yf7/R80pgYfMiotkGjnZwDmRvNN08z4l06L9C+CieazzkgRxNUzyppsYcYsQaw==", - "dev": true, + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.624.0.tgz", + "integrity": "sha512-bfhFeg6LoC6AFM68+Gyogq9UpyW83Jwkwobo9CtxSTfaNIOYdKgTOdYtn4pM/bRYrWon4CstJQymIsPbY7ra5Q==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", "@aws-sdk/core": "3.624.0", "@aws-sdk/credential-provider-node": "3.624.0", "@aws-sdk/middleware-host-header": "3.620.0", @@ -2166,6 +1628,9 @@ "@aws-sdk/util-user-agent-node": "3.614.0", "@smithy/config-resolver": "^3.0.5", "@smithy/core": "^2.3.2", + "@smithy/eventstream-serde-browser": "^3.0.5", + "@smithy/eventstream-serde-config-resolver": "^3.0.3", + "@smithy/eventstream-serde-node": "^3.0.4", "@smithy/fetch-http-handler": "^3.2.4", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", @@ -2188,104 +1653,19 @@ "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", + "@smithy/util-stream": "^3.1.3", "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.1.2", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/core": { - "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.624.0.tgz", - "integrity": "sha512-WyFmPbhRIvtWi7hBp8uSFy+iPpj8ccNV/eX86hwF4irMjfc/FtsGVIAeBXxXM/vGCjkdfEzOnl+tJ2XACD4OXg==", - "dev": true, - "dependencies": { - "@smithy/core": "^2.3.2", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/signature-v4": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", - "@smithy/types": "^3.3.0", - "@smithy/util-middleware": "^3.0.3", - "fast-xml-parser": "4.4.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.624.0.tgz", - "integrity": "sha512-mMoNIy7MO2WTBbdqMyLpbt6SZpthE6e0GkRYpsd0yozPt0RZopcBhEh+HG1U9Y1PVODo+jcMk353vAi61CfnhQ==", - "dev": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.620.1", - "@aws-sdk/credential-provider-http": "3.622.0", - "@aws-sdk/credential-provider-process": "3.620.1", - "@aws-sdk/credential-provider-sso": "3.624.0", - "@aws-sdk/credential-provider-web-identity": "3.621.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.624.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.624.0.tgz", - "integrity": "sha512-vYyGK7oNpd81BdbH5IlmQ6zfaQqU+rPwsKTDDBeLRjshtrGXOEpfoahVpG9PX0ibu32IOWp4ZyXBNyVrnvcMOw==", - "dev": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.620.1", - "@aws-sdk/credential-provider-http": "3.622.0", - "@aws-sdk/credential-provider-ini": "3.624.0", - "@aws-sdk/credential-provider-process": "3.620.1", - "@aws-sdk/credential-provider-sso": "3.624.0", - "@aws-sdk/credential-provider-web-identity": "3.621.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.624.0.tgz", - "integrity": "sha512-A02bayIjU9APEPKr3HudrFHEx0WfghoSPsPopckDkW7VBqO4wizzcxr75Q9A3vNX+cwg0wCN6UitTNe6pVlRaQ==", - "dev": true, - "dependencies": { - "@aws-sdk/client-sso": "3.624.0", - "@aws-sdk/token-providers": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-utf8": { + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "dev": true, "dependencies": { "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" @@ -2294,453 +1674,273 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.619.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.619.0.tgz", - "integrity": "sha512-N7ZyICDuNfdOfWFIeG4pos5QOIXebLLnPcM/sDVG1RYoPImnDqc3BOKWOQmpbgsPbZ9n7uaVSA83oMlaBYJBmQ==", + "node_modules/@aws-sdk/client-opensearch": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-opensearch/-/client-opensearch-3.624.0.tgz", + "integrity": "sha512-CUfkCbX81+9YTdEz+aD3KMllZPRrBa3q1HQCy1FBbsEBULdMOZSXLNahGuS4Obv4dSyb1zkYS+2Z499oeH7wEw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.616.0", - "@aws-sdk/client-sts": "3.616.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/credential-provider-node": "3.616.0", - "@aws-sdk/middleware-endpoint-discovery": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", + "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", "@aws-sdk/util-user-agent-node": "3.614.0", "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.2", - "tslib": "^2.6.2", - "uuid": "^9.0.1" + "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb-streams/-/client-dynamodb-streams-3.616.0.tgz", - "integrity": "sha512-yErKtGFlY/n7OcOtzj/e6MtCX1brm4o5SaXj+xNhDI7XTZZ6kGPU5RxhLRiLpXWbUBRyayV8MN+vxmoN2vEuIw==", + "node_modules/@aws-sdk/client-opensearch/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-route-53": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-route-53/-/client-route-53-3.624.0.tgz", + "integrity": "sha512-DhYOaR1QcCKnqx5pz4h0VWqfVJfElInscCWkEz7PqLR0Wld8SFuDD6x9e3OYJpHa8gijrhLv4YMQ20HR1L4RTA==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.616.0", - "@aws-sdk/client-sts": "3.616.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/credential-provider-node": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", + "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-sdk-route53": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.620.0", "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", "@aws-sdk/util-user-agent-node": "3.614.0", + "@aws-sdk/xml-builder": "3.609.0", "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-route-53/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.616.0.tgz", - "integrity": "sha512-hwW0u1f8U4dSloAe61/eupUiGd5Q13B72BuzGxvRk0cIpYX/2m0KBG8DDl7jW1b2QQ+CflTLpG2XUf2+vRJxGA==", + "node_modules/@aws-sdk/client-s3": { + "version": "3.627.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.627.0.tgz", + "integrity": "sha512-XTbtRLPVfq2lHo0SUP6HJb6HgBsKsJR54bhhVTwj5SZ4G26KOmx2iFOz9SgHie5apU7vWIhijb48LIhbLArgGg==", "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", + "@aws-sdk/middleware-bucket-endpoint": "3.620.0", + "@aws-sdk/middleware-expect-continue": "3.620.0", + "@aws-sdk/middleware-flexible-checksums": "3.620.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-location-constraint": "3.609.0", "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-sdk-s3": "3.626.0", + "@aws-sdk/middleware-ssec": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.620.0", "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/signature-v4-multi-region": "3.626.0", "@aws-sdk/types": "3.609.0", "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", "@aws-sdk/util-user-agent-node": "3.614.0", + "@aws-sdk/xml-builder": "3.609.0", "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", + "@smithy/core": "^2.3.2", + "@smithy/eventstream-serde-browser": "^3.0.5", + "@smithy/eventstream-serde-config-resolver": "^3.0.3", + "@smithy/eventstream-serde-node": "^3.0.4", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-blob-browser": "^3.1.2", "@smithy/hash-node": "^3.0.3", + "@smithy/hash-stream-node": "^3.1.2", "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", + "@smithy/md5-js": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", + "@smithy/util-stream": "^3.1.3", "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.616.0.tgz", - "integrity": "sha512-YY1hpYS/G1uRGjQf88dL8VLHkP/IjGxKeXdhy+JnzMdCkAWl3V9j0fEALw40NZe0x79gr6R2KUOUH/IKYQfUmg==", + "node_modules/@aws-sdk/client-secrets-manager": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.624.0.tgz", + "integrity": "sha512-sW4eT+OVhfMTTB9Ke5tAz8/1gZmJ4G40z9Pvm4fJYRopIMIkHSeSQKTo5urX0APYZ3fdKs2Hxo22MKIZAO4kmw==", + "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/credential-provider-node": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", + "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", "@aws-sdk/util-user-agent-node": "3.614.0", "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.616.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sts": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.616.0.tgz", - "integrity": "sha512-FP7i7hS5FpReqnysQP1ukQF1OUWy8lkomaOnbu15H415YUrfCp947SIx6+BItjmx+esKxPkEjh/fbCVzw2D6hQ==", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.616.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/credential-provider-node": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/core": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.616.0.tgz", - "integrity": "sha512-O/urkh2kECs/IqZIVZxyeyHZ7OR2ZWhLNK7btsVQBQvJKrEspLrk/Fp20Qfg5JDerQfBN83ZbyRXLJOOucdZpw==", - "dependencies": { - "@smithy/core": "^2.2.7", - "@smithy/protocol-http": "^4.0.4", - "@smithy/signature-v4": "^4.0.0", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "fast-xml-parser": "4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.609.0.tgz", - "integrity": "sha512-v69ZCWcec2iuV9vLVJMa6fAb5xwkzN4jYIT8yjo2c4Ia/j976Q+TPf35Pnz5My48Xr94EFcaBazrWedF+kwfuQ==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.616.0.tgz", - "integrity": "sha512-1rgCkr7XvEMBl7qWCo5BKu3yAxJs71dRaZ55Xnjte/0ZHH6Oc93ZrHzyYy6UH6t0nZrH+FAuw7Yko2YtDDwDeg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/fetch-http-handler": "^3.2.2", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/property-provider": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "@smithy/util-stream": "^3.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.616.0.tgz", - "integrity": "sha512-5gQdMr9cca3xV7FF2SxpxWGH2t6+t4o+XBGiwsHm8muEjf4nUmw7Ij863x25Tjt2viPYV0UStczSb5Sihp7bkA==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.609.0", - "@aws-sdk/credential-provider-http": "3.616.0", - "@aws-sdk/credential-provider-process": "3.614.0", - "@aws-sdk/credential-provider-sso": "3.616.0", - "@aws-sdk/credential-provider-web-identity": "3.609.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.616.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.616.0.tgz", - "integrity": "sha512-Se+u6DAxjDPjKE3vX1X2uxjkWgGq69BTo0uTB0vDUiWwBVgh16s9BsBhSAlKEH1CCbbJHvOg4YdTrzjwzqyClg==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.609.0", - "@aws-sdk/credential-provider-http": "3.616.0", - "@aws-sdk/credential-provider-ini": "3.616.0", - "@aws-sdk/credential-provider-process": "3.614.0", - "@aws-sdk/credential-provider-sso": "3.616.0", - "@aws-sdk/credential-provider-web-identity": "3.609.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.614.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.614.0.tgz", - "integrity": "sha512-Q0SI0sTRwi8iNODLs5+bbv8vgz8Qy2QdxbCHnPk/6Cx6LMf7i3dqmWquFbspqFRd8QiqxStrblwxrUYZi09tkA==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.616.0.tgz", - "integrity": "sha512-3rsWs9GBi8Z8Gps5ROwqguxtw+J6OIg1vawZMLRNMqqZoBvbOToe9wEnpid8ylU+27+oG8uibJNlNuRyXApUjw==", - "dependencies": { - "@aws-sdk/client-sso": "3.616.0", - "@aws-sdk/token-providers": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.609.0.tgz", - "integrity": "sha512-U+PG8NhlYYF45zbr1km3ROtBMYqyyj/oK8NRp++UHHeuavgrP+4wJ4wQnlEaKvJBjevfo3+dlIBcaeQ7NYejWg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.609.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.616.0.tgz", - "integrity": "sha512-mhNfHuGhCDZwYCABebaOvTgOM44UCZZRq2cBpgPZLVKP0ydAv5aFHXv01goexxXHqgHoEGx0uXWxlw0s2EpFDg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.0.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.616.0.tgz", - "integrity": "sha512-LQKAcrZRrR9EGez4fdCIVjdn0Ot2HMN12ChnoMGEU6oIxnQ2aSC7iASFFCV39IYfeMh7iSCPj7Wopqw8rAouzg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.0.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.616.0.tgz", - "integrity": "sha512-iMcAb4E+Z3vuEcrDsG6T2OBNiqWAquwahP9qepHqfmnmJqHr1mSHtXDYTGBNid31+621sUQmneUQ+fagpGAe4w==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@smithy/protocol-http": "^4.0.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-utf8": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "dev": true, "dependencies": { "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" @@ -2749,167 +1949,124 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/fast-xml-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", - "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" ], - "dependencies": { - "strnum": "^1.0.5" - }, "bin": { - "fxparser": "src/cli/cli.js" + "uuid": "dist/bin/uuid" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/client-sso": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.616.0.tgz", - "integrity": "sha512-hwW0u1f8U4dSloAe61/eupUiGd5Q13B72BuzGxvRk0cIpYX/2m0KBG8DDl7jW1b2QQ+CflTLpG2XUf2+vRJxGA==", + "node_modules/@aws-sdk/client-ses": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ses/-/client-ses-3.624.0.tgz", + "integrity": "sha512-CIi5tbQQ3wI4MBYUNZDti0xkj5SonZ+l/Bc4eBxqJK61tQB45T68SSigdMBr9fICTQ067WMYvvOtTvq9PqV4jA==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", + "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", "@aws-sdk/util-user-agent-node": "3.614.0", "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.1.2", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.616.0.tgz", - "integrity": "sha512-YY1hpYS/G1uRGjQf88dL8VLHkP/IjGxKeXdhy+JnzMdCkAWl3V9j0fEALw40NZe0x79gr6R2KUOUH/IKYQfUmg==", + "node_modules/@aws-sdk/client-ses/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/credential-provider-node": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.616.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/client-sts": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.616.0.tgz", - "integrity": "sha512-FP7i7hS5FpReqnysQP1ukQF1OUWy8lkomaOnbu15H415YUrfCp947SIx6+BItjmx+esKxPkEjh/fbCVzw2D6hQ==", + "node_modules/@aws-sdk/client-sns": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sns/-/client-sns-3.624.0.tgz", + "integrity": "sha512-GjK1rTAQmSVd7Q2QYdWf0GT8hNoR2LjDaGlCyJUDzdvtpVMriV1Yvq5p8ACgc4qkArEIVNZ0iaPgzpn56OOEBA==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.616.0", - "@aws-sdk/core": "3.616.0", - "@aws-sdk/credential-provider-node": "3.616.0", - "@aws-sdk/middleware-host-header": "3.616.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", + "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.616.0", - "@aws-sdk/middleware-user-agent": "3.616.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", "@aws-sdk/util-user-agent-node": "3.614.0", "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.2.7", - "@smithy/fetch-http-handler": "^3.2.2", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.4", - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.10", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@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.10", - "@smithy/util-defaults-mode-node": "^3.0.10", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", @@ -2920,195 +2077,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/core": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.616.0.tgz", - "integrity": "sha512-O/urkh2kECs/IqZIVZxyeyHZ7OR2ZWhLNK7btsVQBQvJKrEspLrk/Fp20Qfg5JDerQfBN83ZbyRXLJOOucdZpw==", - "dependencies": { - "@smithy/core": "^2.2.7", - "@smithy/protocol-http": "^4.0.4", - "@smithy/signature-v4": "^4.0.0", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "fast-xml-parser": "4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.609.0.tgz", - "integrity": "sha512-v69ZCWcec2iuV9vLVJMa6fAb5xwkzN4jYIT8yjo2c4Ia/j976Q+TPf35Pnz5My48Xr94EFcaBazrWedF+kwfuQ==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.616.0.tgz", - "integrity": "sha512-1rgCkr7XvEMBl7qWCo5BKu3yAxJs71dRaZ55Xnjte/0ZHH6Oc93ZrHzyYy6UH6t0nZrH+FAuw7Yko2YtDDwDeg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/fetch-http-handler": "^3.2.2", - "@smithy/node-http-handler": "^3.1.3", - "@smithy/property-provider": "^3.1.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "@smithy/util-stream": "^3.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.616.0.tgz", - "integrity": "sha512-5gQdMr9cca3xV7FF2SxpxWGH2t6+t4o+XBGiwsHm8muEjf4nUmw7Ij863x25Tjt2viPYV0UStczSb5Sihp7bkA==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.609.0", - "@aws-sdk/credential-provider-http": "3.616.0", - "@aws-sdk/credential-provider-process": "3.614.0", - "@aws-sdk/credential-provider-sso": "3.616.0", - "@aws-sdk/credential-provider-web-identity": "3.609.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.616.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.616.0.tgz", - "integrity": "sha512-Se+u6DAxjDPjKE3vX1X2uxjkWgGq69BTo0uTB0vDUiWwBVgh16s9BsBhSAlKEH1CCbbJHvOg4YdTrzjwzqyClg==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.609.0", - "@aws-sdk/credential-provider-http": "3.616.0", - "@aws-sdk/credential-provider-ini": "3.616.0", - "@aws-sdk/credential-provider-process": "3.614.0", - "@aws-sdk/credential-provider-sso": "3.616.0", - "@aws-sdk/credential-provider-web-identity": "3.609.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.614.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.614.0.tgz", - "integrity": "sha512-Q0SI0sTRwi8iNODLs5+bbv8vgz8Qy2QdxbCHnPk/6Cx6LMf7i3dqmWquFbspqFRd8QiqxStrblwxrUYZi09tkA==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.616.0.tgz", - "integrity": "sha512-3rsWs9GBi8Z8Gps5ROwqguxtw+J6OIg1vawZMLRNMqqZoBvbOToe9wEnpid8ylU+27+oG8uibJNlNuRyXApUjw==", - "dependencies": { - "@aws-sdk/client-sso": "3.616.0", - "@aws-sdk/token-providers": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.609.0.tgz", - "integrity": "sha512-U+PG8NhlYYF45zbr1km3ROtBMYqyyj/oK8NRp++UHHeuavgrP+4wJ4wQnlEaKvJBjevfo3+dlIBcaeQ7NYejWg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.609.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.616.0.tgz", - "integrity": "sha512-mhNfHuGhCDZwYCABebaOvTgOM44UCZZRq2cBpgPZLVKP0ydAv5aFHXv01goexxXHqgHoEGx0uXWxlw0s2EpFDg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.0.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.616.0.tgz", - "integrity": "sha512-LQKAcrZRrR9EGez4fdCIVjdn0Ot2HMN12ChnoMGEU6oIxnQ2aSC7iASFFCV39IYfeMh7iSCPj7Wopqw8rAouzg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.0.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.616.0.tgz", - "integrity": "sha512-iMcAb4E+Z3vuEcrDsG6T2OBNiqWAquwahP9qepHqfmnmJqHr1mSHtXDYTGBNid31+621sUQmneUQ+fagpGAe4w==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@smithy/protocol-http": "^4.0.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-utf8": { + "node_modules/@aws-sdk/client-sns/node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", @@ -3120,53 +2089,21 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/fast-xml-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", - "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", - "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@aws-sdk/client-glue": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-glue/-/client-glue-3.623.0.tgz", - "integrity": "sha512-nwi4mu8uwLqm/FD1HsiKyZ6Ht99yTs4gZUoZ67oZouqT092iB4BCcqI8J87mGdzxDAy3OzcXPUuDu5Y+dMo55Q==", + "node_modules/@aws-sdk/client-sqs": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.624.0.tgz", + "integrity": "sha512-2LSbsvstex9rIQDXNHJRYDz4mUcbep4ompvTADX8+7JlovzjKIODYiV5p35nq9rX/68HxxeSsPt8oz0zb8ESjw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-sdk-sqs": "3.622.0", "@aws-sdk/middleware-user-agent": "3.620.0", "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", @@ -3178,6 +2115,7 @@ "@smithy/fetch-http-handler": "^3.2.4", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", + "@smithy/md5-js": "^3.0.3", "@smithy/middleware-content-length": "^3.0.5", "@smithy/middleware-endpoint": "^3.1.0", "@smithy/middleware-retry": "^3.0.14", @@ -3204,7 +2142,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-glue/node_modules/@smithy/util-utf8": { + "node_modules/@aws-sdk/client-sqs/node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", @@ -3216,18 +2154,17 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-iam": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-iam/-/client-iam-3.623.0.tgz", - "integrity": "sha512-86XknSzQHfZqJghOAYnMOyXFurkTz0RedN8KdB9fMoQHnbQrD6dZsMaYE31CNFHTuQ9BEXBv1+fklVTJLU3GQQ==", - "dev": true, + "node_modules/@aws-sdk/client-ssm": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.624.0.tgz", + "integrity": "sha512-k30vbnYN/REYT/bckVz1pry2wjEKOr4R1GqIub2e2YDacHBkQp4CkxPpFXvPomW4Uc62GT4OliKGg+s8E1VTSg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.620.0", @@ -3263,17 +2200,17 @@ "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", "@smithy/util-waiter": "^3.1.2", - "tslib": "^2.6.2" + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-utf8": { + "node_modules/@aws-sdk/client-ssm/node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "dev": true, "dependencies": { "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" @@ -3282,17 +2219,26 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-lambda": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.623.0.tgz", - "integrity": "sha512-hyPgz7quymu+sLQsJNUZa7YSDV0uSfk07XhnccDl0zwq7hf8BiqiEVB2z+y33m8zSFWn6ma3/8h2IsiIH5g0Vg==", + "node_modules/@aws-sdk/client-ssm/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.624.0.tgz", + "integrity": "sha512-EX6EF+rJzMPC5dcdsu40xSi2To7GSvdGQNIpe97pD9WvZwM9tRNQnNM4T6HA4gjV1L6Jwk8rBlG/CnveXtLEMw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", + "@aws-sdk/core": "3.624.0", "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.620.0", @@ -3304,9 +2250,6 @@ "@aws-sdk/util-user-agent-node": "3.614.0", "@smithy/config-resolver": "^3.0.5", "@smithy/core": "^2.3.2", - "@smithy/eventstream-serde-browser": "^3.0.5", - "@smithy/eventstream-serde-config-resolver": "^3.0.3", - "@smithy/eventstream-serde-node": "^3.0.4", "@smithy/fetch-http-handler": "^3.2.4", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", @@ -3329,38 +2272,22 @@ "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", - "@smithy/util-stream": "^3.1.3", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-opensearch": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-opensearch/-/client-opensearch-3.623.0.tgz", - "integrity": "sha512-uEAJH1+PD+JWJ6QqXstGSgWoQYj6dJsrm+vPtbLoCCPS3gu409fsfKnrSEVcehvqMhyH9/NEYhamRQGf1ZzWsg==", + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.624.0.tgz", + "integrity": "sha512-Ki2uKYJKKtfHxxZsiMTOvJoVRP6b2pZ1u3rcUb2m/nVgBPUfLdl8ZkGpqE29I+t5/QaS/sEdbn6cgMUZwl+3Dg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.620.0", @@ -3399,9 +2326,12 @@ }, "engines": { "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.624.0" } }, - "node_modules/@aws-sdk/client-opensearch/node_modules/@smithy/util-utf8": { + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", @@ -3413,28 +2343,37 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-route-53": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-route-53/-/client-route-53-3.623.0.tgz", - "integrity": "sha512-ZkUbPDZe3na29DwvKjrE2TSbPKrOz6g+1GmjkzJYLaeA5dXjUUZf27qA0EmeN2lVZ9rgamR51OsumTY5pUGe/w==", + "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.624.0.tgz", + "integrity": "sha512-k36fLZCb2nfoV/DKK3jbRgO/Yf7/R80pgYfMiotkGjnZwDmRvNN08z4l06L9C+CieazzkgRxNUzyppsYcYsQaw==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", + "@aws-sdk/client-sso-oidc": "3.624.0", + "@aws-sdk/core": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", "@aws-sdk/middleware-host-header": "3.620.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-sdk-route53": "3.609.0", "@aws-sdk/middleware-user-agent": "3.620.0", "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", "@aws-sdk/util-user-agent-node": "3.614.0", - "@aws-sdk/xml-builder": "3.609.0", "@smithy/config-resolver": "^3.0.5", "@smithy/core": "^2.3.2", "@smithy/fetch-http-handler": "^3.2.4", @@ -3460,14 +2399,13 @@ "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.2", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@smithy/util-utf8": { + "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", @@ -3479,547 +2417,323 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.623.0.tgz", - "integrity": "sha512-vEroSYEtbp5n289xsQnnAhKxg3R5NGkbhKXWpW1m7GGDsFihwVT9CVsDHpIW2Hvezz5ob65gB4ZAYMnJWZuUpA==", + "node_modules/@aws-sdk/cloudfront-signer": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/cloudfront-signer/-/cloudfront-signer-3.621.0.tgz", + "integrity": "sha512-fZitpBQXQrPTpTnheV98zkM/OZMWdTX+l9FvWZxkjcljavaTck7ck5O1sfHT4e3vlvq4i5V99rrlT+ofn+w1mw==", + "dependencies": { + "@smithy/url-parser": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.624.0.tgz", + "integrity": "sha512-WyFmPbhRIvtWi7hBp8uSFy+iPpj8ccNV/eX86hwF4irMjfc/FtsGVIAeBXxXM/vGCjkdfEzOnl+tJ2XACD4OXg==", "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.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", - "@aws-sdk/middleware-bucket-endpoint": "3.620.0", - "@aws-sdk/middleware-expect-continue": "3.620.0", - "@aws-sdk/middleware-flexible-checksums": "3.620.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-location-constraint": "3.609.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-sdk-s3": "3.622.0", - "@aws-sdk/middleware-signing": "3.620.0", - "@aws-sdk/middleware-ssec": "3.609.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/signature-v4-multi-region": "3.622.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@aws-sdk/xml-builder": "3.609.0", - "@smithy/config-resolver": "^3.0.5", "@smithy/core": "^2.3.2", - "@smithy/eventstream-serde-browser": "^3.0.5", - "@smithy/eventstream-serde-config-resolver": "^3.0.3", - "@smithy/eventstream-serde-node": "^3.0.4", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-blob-browser": "^3.1.2", - "@smithy/hash-node": "^3.0.3", - "@smithy/hash-stream-node": "^3.1.2", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/md5-js": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.14", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.14", - "@smithy/util-defaults-mode-node": "^3.0.14", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-stream": "^3.1.3", - "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.2", + "@smithy/util-middleware": "^3.0.3", + "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "node_modules/@aws-sdk/credential-provider-cognito-identity": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.624.0.tgz", + "integrity": "sha512-gbXaxZP29yzMmEUzsGqUrHpKBnfMBtemvrlufJbaz/MGJNIa5qtJQp7n1LMI5R49DBVUN9s/e9Rf5liyMvlHiw==", + "dev": true, "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", + "@aws-sdk/client-cognito-identity": "3.624.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.623.0.tgz", - "integrity": "sha512-F9fdT8XHZC6thaW7Cw1VFii+gv0Qzth357XjW11CRa1LJ3hCdyYbfNA7QXZlWAvs2ZIAoX8njXmqnR7FVp1IYw==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", + "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.622.0.tgz", + "integrity": "sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg==", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.2", "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.14", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", "@smithy/node-http-handler": "^3.1.4", + "@smithy/property-provider": "^3.1.3", "@smithy/protocol-http": "^4.1.0", "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.14", - "@smithy/util-defaults-mode-node": "^3.0.14", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2", - "uuid": "^9.0.1" + "@smithy/util-stream": "^3.1.3", + "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.624.0.tgz", + "integrity": "sha512-mMoNIy7MO2WTBbdqMyLpbt6SZpthE6e0GkRYpsd0yozPt0RZopcBhEh+HG1U9Y1PVODo+jcMk353vAi61CfnhQ==", "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.624.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.624.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@aws-sdk/client-ses": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ses/-/client-ses-3.623.0.tgz", - "integrity": "sha512-+f4mzWB+rVu6pK9M7SMUYx65IupRqwoSJ7PDJyIPFdjTROVzJpPBygWVDjNRREkn58ageoLgpXXgL7ALzO0fvg==", + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.624.0.tgz", + "integrity": "sha512-vYyGK7oNpd81BdbH5IlmQ6zfaQqU+rPwsKTDDBeLRjshtrGXOEpfoahVpG9PX0ibu32IOWp4ZyXBNyVrnvcMOw==", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-ini": "3.624.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.624.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.2", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.14", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.14", - "@smithy/util-defaults-mode-node": "^3.0.14", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.2", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-ses/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", + "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==", "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sns": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sns/-/client-sns-3.623.0.tgz", - "integrity": "sha512-JUyEcsvWmrUky7KA6d4mWK78fUuHFArxiEvTuwTvW85SQH2wlyEMVbvh+lohesI/Oz8qa1PKOUJmgfQXNApXGQ==", + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.624.0.tgz", + "integrity": "sha512-A02bayIjU9APEPKr3HudrFHEx0WfghoSPsPopckDkW7VBqO4wizzcxr75Q9A3vNX+cwg0wCN6UitTNe6pVlRaQ==", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/client-sso": "3.624.0", + "@aws-sdk/token-providers": "3.614.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.2", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.14", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.14", - "@smithy/util-defaults-mode-node": "^3.0.14", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sns/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", + "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==", "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.621.0" } }, - "node_modules/@aws-sdk/client-sqs": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.623.0.tgz", - "integrity": "sha512-4dP4GtESD6Cif7kvP7rTg0C7gU0JcIFixQgLkSLGcST99HeLZp+V0WBThb6GH6HO7413h4TVBd9iicjFm5Zq1A==", + "node_modules/@aws-sdk/credential-providers": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.624.0.tgz", + "integrity": "sha512-SX+F5x/w8laQkhXLd1oww2lTuBDJSxzXWyxuOi25a9s4bMDs0V/wOj885Vr6h8QEGi3F8jZ8aWLwpsm2yuk9BA==", + "dev": true, "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-sdk-sqs": "3.622.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/client-cognito-identity": "3.624.0", + "@aws-sdk/client-sso": "3.624.0", + "@aws-sdk/client-sts": "3.624.0", + "@aws-sdk/credential-provider-cognito-identity": "3.624.0", + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-ini": "3.624.0", + "@aws-sdk/credential-provider-node": "3.624.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.624.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.2", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/md5-js": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.14", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.14", - "@smithy/util-defaults-mode-node": "^3.0.14", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sqs/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "node_modules/@aws-sdk/endpoint-cache": { + "version": "3.572.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.572.0.tgz", + "integrity": "sha512-CzuRWMj/xtN9p9eP915nlPmlyniTzke732Ow/M60++gGgB3W+RtZyFftw3TEx+NzNhd1tH54dEcGiWdiNaBz3Q==", "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", + "mnemonist": "0.38.3", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-ssm": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.623.0.tgz", - "integrity": "sha512-f081CIfcmY5F0bcuPUMJTtuJSRJI7kGprYIXWY9ngvdJZcbvp7Xsc7ickM0vzR7M1oxyWFFFz8aXJ4TlzUAGMA==", + "node_modules/@aws-sdk/lib-dynamodb": { + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.624.0.tgz", + "integrity": "sha512-PdItV9kqgeCH0OPslFZkRsxSKZ7P+DT0unXC5u/QIObzpoRXIWMM4GXCrrKb3lndh1L4jnqepyCTwWao9UX+ng==", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/client-sts": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.2", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.14", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", + "@aws-sdk/util-dynamodb": "3.624.0", "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.14", - "@smithy/util-defaults-mode-node": "^3.0.14", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.2", - "tslib": "^2.6.2", - "uuid": "^9.0.1" + "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-dynamodb": "^3.624.0" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "node_modules/@aws-sdk/lib-storage": { + "version": "3.627.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.627.0.tgz", + "integrity": "sha512-yr9/4IQf7F61BuctF+TVo6MNbgWck77TdwjnsEJumUzEmbgDRkEGetNedIQ/UwsHq+9V+gOVH7T52ywpzlmpdg==", "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", + "@smithy/abort-controller": "^3.1.1", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/smithy-client": "^3.1.12", + "buffer": "5.6.0", + "events": "3.3.0", + "stream-browserify": "3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-s3": "^3.627.0" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.623.0.tgz", - "integrity": "sha512-oEACriysQMnHIVcNp7TD6D1nzgiHfYK0tmMBMbUxgoFuCBkW9g9QYvspHN+S9KgoePfMEXHuPUe9mtG9AH9XeA==", + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz", + "integrity": "sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg==", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.2", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.14", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", + "@aws-sdk/util-arn-parser": "3.568.0", "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.14", - "@smithy/util-defaults-mode-node": "^3.0.14", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", + "@smithy/util-config-provider": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.623.0.tgz", - "integrity": "sha512-lMFEXCa6ES/FGV7hpyrppT1PiAkqQb51AbG0zVU3TIgI2IO4XX02uzMUXImRSRqRpGymRCbJCaCs9LtKvS/37Q==", + "node_modules/@aws-sdk/middleware-endpoint-discovery": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.620.0.tgz", + "integrity": "sha512-T6kuydHBF4BPP5CVH53Fze7c2b9rqxWP88XrGtmNMXXdY4sXur1v/itGdS2l3gqRjxKo0LsmjmuQm9zL4vGneQ==", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/endpoint-cache": "3.572.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.2", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.14", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.14", - "@smithy/util-defaults-mode-node": "^3.0.14", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz", + "integrity": "sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.623.0" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz", + "integrity": "sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA==", "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-sdk/types": "3.609.0", + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/util-utf8": { + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", @@ -4031,108 +2745,67 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sts": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.623.0.tgz", - "integrity": "sha512-iJNdx76SOw0YjHAUv8aj3HXzSu3TKI7qSGuR+OGATwA/kpJZDd+4+WYBdGtr8YK+hPrGGqhfecuCkEg805O5iA==", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.623.0", - "@aws-sdk/core": "3.623.0", - "@aws-sdk/credential-provider-node": "3.623.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", + "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==", + "dependencies": { "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.2", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.14", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.14", - "@smithy/util-defaults-mode-node": "^3.0.14", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz", + "integrity": "sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A==", "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/cloudfront-signer": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/cloudfront-signer/-/cloudfront-signer-3.621.0.tgz", - "integrity": "sha512-fZitpBQXQrPTpTnheV98zkM/OZMWdTX+l9FvWZxkjcljavaTck7ck5O1sfHT4e3vlvq4i5V99rrlT+ofn+w1mw==", + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", + "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==", "dependencies": { - "@smithy/url-parser": "^3.0.3", + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/core": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.623.0.tgz", - "integrity": "sha512-8Toq3X6trX/67obSdh4K0MFQY4f132bEbr1i0YPDWk/O3KdBt12mLC/sW3aVRnlIs110XMuX9yrWWqJ8fDW10g==", + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", + "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==", "dependencies": { - "@smithy/core": "^2.3.2", - "@smithy/node-config-provider": "^3.1.4", + "@aws-sdk/types": "3.609.0", "@smithy/protocol-http": "^4.1.0", - "@smithy/signature-v4": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", - "@smithy/util-middleware": "^3.0.3", - "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.624.0.tgz", - "integrity": "sha512-gbXaxZP29yzMmEUzsGqUrHpKBnfMBtemvrlufJbaz/MGJNIa5qtJQp7n1LMI5R49DBVUN9s/e9Rf5liyMvlHiw==", - "dev": true, + "node_modules/@aws-sdk/middleware-sdk-api-gateway": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-api-gateway/-/middleware-sdk-api-gateway-3.620.0.tgz", + "integrity": "sha512-JH8JzZb5CTry5Xit51jwyES8cqihaUWJVS3pcr5L73g8qLDUnvfg2IJJJ7pXs0hVAaCNjDs4L97DW3ity76CUA==", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.624.0", "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -4140,13 +2813,12 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.620.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", - "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==", + "node_modules/@aws-sdk/middleware-sdk-route53": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-route53/-/middleware-sdk-route53-3.609.0.tgz", + "integrity": "sha512-lw0WdzAJS8puQeJNeyOeEfRtG2C91yFBj8IXWmwm7r+QqnZtDork0uiZYFt1Br24dOxZiFefxLCehjSoyr8fVQ==", "dependencies": { "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -4154,96 +2826,76 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.622.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.622.0.tgz", - "integrity": "sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg==", + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.626.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.626.0.tgz", + "integrity": "sha512-frFh6GQ1OEGueB0fL6Ft5rdHF+eu8JZUREjeBNEcg1qRqtMpPOlYkKzJ434d4zo+JHSK5xKFeb/Gu/kvB4LxEA==", "dependencies": { + "@aws-sdk/core": "3.624.0", "@aws-sdk/types": "3.609.0", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/property-provider": "^3.1.3", + "@aws-sdk/util-arn-parser": "3.568.0", + "@smithy/core": "^2.3.2", + "@smithy/node-config-provider": "^3.1.4", "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", "@smithy/util-stream": "^3.1.3", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.623.0.tgz", - "integrity": "sha512-kvXA1SwGneqGzFwRZNpESitnmaENHGFFuuTvgGwtMe7mzXWuA/LkXdbiHmdyAzOo0iByKTCD8uetuwh3CXy4Pw==", + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.620.1", - "@aws-sdk/credential-provider-http": "3.622.0", - "@aws-sdk/credential-provider-process": "3.620.1", - "@aws-sdk/credential-provider-sso": "3.623.0", - "@aws-sdk/credential-provider-web-identity": "3.621.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", + "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.623.0" } }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.623.0.tgz", - "integrity": "sha512-qDwCOkhbu5PfaQHyuQ+h57HEx3+eFhKdtIw7aISziWkGdFrMe07yIBd7TJqGe4nxXnRF1pfkg05xeOlMId997g==", + "node_modules/@aws-sdk/middleware-sdk-sqs": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.622.0.tgz", + "integrity": "sha512-kOPX94jlVcvH7Wutzag99L+BSjT6LjXxW7Ntc02/oywYX6Gft4YdbeUYdcGYYHWDy/IT6jJ2wMJfFUEEh8U/9A==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.620.1", - "@aws-sdk/credential-provider-http": "3.622.0", - "@aws-sdk/credential-provider-ini": "3.623.0", - "@aws-sdk/credential-provider-process": "3.620.1", - "@aws-sdk/credential-provider-sso": "3.623.0", - "@aws-sdk/credential-provider-web-identity": "3.621.0", "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/smithy-client": "^3.1.12", "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.620.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", - "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==", + "node_modules/@aws-sdk/middleware-sdk-sqs/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", + "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.623.0.tgz", - "integrity": "sha512-70LZhUb3l7cttEsg4A0S4Jq3qrCT/v5Jfyl8F7w1YZJt5zr3oPPcvDJxo/UYckFz4G4/5BhGa99jK8wMlNE9QA==", + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz", + "integrity": "sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg==", "dependencies": { - "@aws-sdk/client-sso": "3.623.0", - "@aws-sdk/token-providers": "3.614.0", "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -4251,294 +2903,183 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", - "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==", + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz", + "integrity": "sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A==", "dependencies": { "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", + "@aws-sdk/util-endpoints": "3.614.0", + "@smithy/protocol-http": "^4.1.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler": { + "version": "3.374.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.374.0.tgz", + "integrity": "sha512-v1Z6m0wwkf65/tKuhwrtPRqVoOtNkDTRn2MBMtxCwEw+8V8Q+YRFqVgGN+J1n53ktE0G5OYVBux/NHiAjJHReQ==", + "deprecated": "This package has moved to @smithy/node-http-handler", + "dependencies": { + "@smithy/node-http-handler": "^1.0.2", + "tslib": "^2.5.0" }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.621.0" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-providers": { - "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.624.0.tgz", - "integrity": "sha512-SX+F5x/w8laQkhXLd1oww2lTuBDJSxzXWyxuOi25a9s4bMDs0V/wOj885Vr6h8QEGi3F8jZ8aWLwpsm2yuk9BA==", - "dev": true, + "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/abort-controller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-5imgGUlZL4dW4YWdMYAKLmal9ny/tlenM81QZY7xYyb76z9Z/QOg7oM5Ak9HQl8QfFTlGVWwcMXl+54jroRgEQ==", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.624.0", - "@aws-sdk/client-sso": "3.624.0", - "@aws-sdk/client-sts": "3.624.0", - "@aws-sdk/credential-provider-cognito-identity": "3.624.0", - "@aws-sdk/credential-provider-env": "3.620.1", - "@aws-sdk/credential-provider-http": "3.622.0", - "@aws-sdk/credential-provider-ini": "3.624.0", - "@aws-sdk/credential-provider-node": "3.624.0", - "@aws-sdk/credential-provider-process": "3.620.1", - "@aws-sdk/credential-provider-sso": "3.624.0", - "@aws-sdk/credential-provider-web-identity": "3.621.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" + "@smithy/types": "^1.2.0", + "tslib": "^2.5.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/client-sso": { - "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.624.0.tgz", - "integrity": "sha512-EX6EF+rJzMPC5dcdsu40xSi2To7GSvdGQNIpe97pD9WvZwM9tRNQnNM4T6HA4gjV1L6Jwk8rBlG/CnveXtLEMw==", - "dev": true, + "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/node-http-handler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-1.1.0.tgz", + "integrity": "sha512-d3kRriEgaIiGXLziAM8bjnaLn1fthCJeTLZIwEIpzQqe6yPX0a+yQoLCTyjb2fvdLwkMoG4p7THIIB5cj5lkbg==", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.624.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.2", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.14", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.14", - "@smithy/util-defaults-mode-node": "^3.0.14", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" + "@smithy/abort-controller": "^1.1.0", + "@smithy/protocol-http": "^1.2.0", + "@smithy/querystring-builder": "^1.1.0", + "@smithy/types": "^1.2.0", + "tslib": "^2.5.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.624.0.tgz", - "integrity": "sha512-Ki2uKYJKKtfHxxZsiMTOvJoVRP6b2pZ1u3rcUb2m/nVgBPUfLdl8ZkGpqE29I+t5/QaS/sEdbn6cgMUZwl+3Dg==", - "dev": true, + "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/protocol-http": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-1.2.0.tgz", + "integrity": "sha512-GfGfruksi3nXdFok5RhgtOnWe5f6BndzYfmEXISD+5gAGdayFGpjWu5pIqIweTudMtse20bGbc+7MFZXT1Tb8Q==", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.624.0", - "@aws-sdk/credential-provider-node": "3.624.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.2", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.14", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.14", - "@smithy/util-defaults-mode-node": "^3.0.14", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" + "@smithy/types": "^1.2.0", + "tslib": "^2.5.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/querystring-builder": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-1.1.0.tgz", + "integrity": "sha512-gDEi4LxIGLbdfjrjiY45QNbuDmpkwh9DX4xzrR2AzjjXpxwGyfSpbJaYhXARw9p17VH0h9UewnNQXNwaQyYMDA==", + "dependencies": { + "@smithy/types": "^1.2.0", + "@smithy/util-uri-escape": "^1.1.0", + "tslib": "^2.5.0" }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.624.0" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/client-sts": { - "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.624.0.tgz", - "integrity": "sha512-k36fLZCb2nfoV/DKK3jbRgO/Yf7/R80pgYfMiotkGjnZwDmRvNN08z4l06L9C+CieazzkgRxNUzyppsYcYsQaw==", - "dev": true, + "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-1.2.0.tgz", + "integrity": "sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA==", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.624.0", - "@aws-sdk/core": "3.624.0", - "@aws-sdk/credential-provider-node": "3.624.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.2", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.14", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.14", - "@smithy/util-defaults-mode-node": "^3.0.14", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" + "tslib": "^2.5.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/core": { - "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.624.0.tgz", - "integrity": "sha512-WyFmPbhRIvtWi7hBp8uSFy+iPpj8ccNV/eX86hwF4irMjfc/FtsGVIAeBXxXM/vGCjkdfEzOnl+tJ2XACD4OXg==", - "dev": true, + "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/util-uri-escape": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-1.1.0.tgz", + "integrity": "sha512-/jL/V1xdVRt5XppwiaEU8Etp5WHZj609n0xMTuehmCqdoOFbId1M+aEeDWZsQ+8JbEB/BJ6ynY2SlYmOaKtt8w==", "dependencies": { - "@smithy/core": "^2.3.2", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/signature-v4": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", - "@smithy/types": "^3.3.0", - "@smithy/util-middleware": "^3.0.3", - "fast-xml-parser": "4.4.1", - "tslib": "^2.6.2" + "tslib": "^2.5.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.624.0.tgz", - "integrity": "sha512-mMoNIy7MO2WTBbdqMyLpbt6SZpthE6e0GkRYpsd0yozPt0RZopcBhEh+HG1U9Y1PVODo+jcMk353vAi61CfnhQ==", - "dev": true, + "node_modules/@aws-sdk/protocol-http": { + "version": "3.374.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.374.0.tgz", + "integrity": "sha512-9WpRUbINdGroV3HiZZIBoJvL2ndoWk39OfwxWs2otxByppJZNN14bg/lvCx5e8ggHUti7IBk5rb0nqQZ4m05pg==", + "deprecated": "This package has moved to @smithy/protocol-http", "dependencies": { - "@aws-sdk/credential-provider-env": "3.620.1", - "@aws-sdk/credential-provider-http": "3.622.0", - "@aws-sdk/credential-provider-process": "3.620.1", - "@aws-sdk/credential-provider-sso": "3.624.0", - "@aws-sdk/credential-provider-web-identity": "3.621.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" + "@smithy/protocol-http": "^1.1.0", + "tslib": "^2.5.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/protocol-http/node_modules/@smithy/protocol-http": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-1.2.0.tgz", + "integrity": "sha512-GfGfruksi3nXdFok5RhgtOnWe5f6BndzYfmEXISD+5gAGdayFGpjWu5pIqIweTudMtse20bGbc+7MFZXT1Tb8Q==", + "dependencies": { + "@smithy/types": "^1.2.0", + "tslib": "^2.5.0" }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.624.0" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.624.0.tgz", - "integrity": "sha512-vYyGK7oNpd81BdbH5IlmQ6zfaQqU+rPwsKTDDBeLRjshtrGXOEpfoahVpG9PX0ibu32IOWp4ZyXBNyVrnvcMOw==", - "dev": true, + "node_modules/@aws-sdk/protocol-http/node_modules/@smithy/types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-1.2.0.tgz", + "integrity": "sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz", + "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.620.1", - "@aws-sdk/credential-provider-http": "3.622.0", - "@aws-sdk/credential-provider-ini": "3.624.0", - "@aws-sdk/credential-provider-process": "3.620.1", - "@aws-sdk/credential-provider-sso": "3.624.0", - "@aws-sdk/credential-provider-web-identity": "3.621.0", "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/node-config-provider": "^3.1.4", "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.624.0.tgz", - "integrity": "sha512-A02bayIjU9APEPKr3HudrFHEx0WfghoSPsPopckDkW7VBqO4wizzcxr75Q9A3vNX+cwg0wCN6UitTNe6pVlRaQ==", - "dev": true, + "node_modules/@aws-sdk/s3-presigned-post": { + "version": "3.627.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-presigned-post/-/s3-presigned-post-3.627.0.tgz", + "integrity": "sha512-nLumx6maZ2+W8glQFNSssY0BjCfEyFs957N/EEjpKmw/7O3S02+kWaoyKjnNyMpE1IcUpz8mgFGWRTwUW/CEyQ==", "dependencies": { - "@aws-sdk/client-sso": "3.624.0", - "@aws-sdk/token-providers": "3.614.0", + "@aws-sdk/client-s3": "3.627.0", "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", + "@aws-sdk/util-format-url": "3.609.0", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/signature-v4": "^4.1.0", "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-utf8": { + "node_modules/@aws-sdk/s3-presigned-post/node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "dev": true, "dependencies": { "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" @@ -4547,526 +3088,43 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/endpoint-cache": { - "version": "3.572.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.572.0.tgz", - "integrity": "sha512-CzuRWMj/xtN9p9eP915nlPmlyniTzke732Ow/M60++gGgB3W+RtZyFftw3TEx+NzNhd1tH54dEcGiWdiNaBz3Q==", + "node_modules/@aws-sdk/s3-request-presigner": { + "version": "3.627.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.627.0.tgz", + "integrity": "sha512-UA4EWIQITlBVFFMNC4AP5YUWWJ2Bmdzg7238Pm6W8xqpKOgHDPdbEKjhiEsSt1SG6B4Ogk4PnP0oSANtn3hjPQ==", "dependencies": { - "mnemonist": "0.38.3", + "@aws-sdk/signature-v4-multi-region": "3.626.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-format-url": "3.609.0", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/lib-dynamodb": { - "version": "3.619.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.619.0.tgz", - "integrity": "sha512-fGgX9unWebXevqdloMOxTwPycxPBHL0xBFjJnAk0auuuCKHIRmDrG2oxVBMrSiyzoGgVh5WmoIjyNbPbUKXZ3Q==", + "node_modules/@aws-sdk/signature-v4": { + "version": "3.374.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.374.0.tgz", + "integrity": "sha512-2xLJvSdzcZZAg0lsDLUAuSQuihzK0dcxIK7WmfuJeF7DGKJFmp9czQmz5f3qiDz6IDQzvgK1M9vtJSVCslJbyQ==", + "deprecated": "This package has moved to @smithy/signature-v4", "dependencies": { - "@aws-sdk/util-dynamodb": "3.619.0", - "@smithy/smithy-client": "^3.1.8", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-dynamodb": "^3.619.0" - } - }, - "node_modules/@aws-sdk/lib-storage": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.623.0.tgz", - "integrity": "sha512-4xvc0wpSobl2gY4dnchRJ8OLFN2TJ5N4nCD91NbsibbkiA/frD/AwtRWml93vf9f/RJ91CJfrUjUh+597XND3g==", - "dependencies": { - "@smithy/abort-controller": "^3.1.1", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/smithy-client": "^3.1.12", - "buffer": "5.6.0", - "events": "3.3.0", - "stream-browserify": "3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-s3": "^3.623.0" - } - }, - "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz", - "integrity": "sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-arn-parser": "3.568.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "@smithy/util-config-provider": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-endpoint-discovery": { - "version": "3.616.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.616.0.tgz", - "integrity": "sha512-qv17Cq/kY034Go82w6phq9iyremY4VLe0ECkDA6w0rC/xOAq+AEZB9S7ezvBa/JBYSKx7Y2/mQajfzBSIveeUg==", - "dependencies": { - "@aws-sdk/endpoint-cache": "3.572.0", - "@aws-sdk/types": "3.609.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/protocol-http": "^4.0.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz", - "integrity": "sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz", - "integrity": "sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA==", - "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@aws-crypto/crc32c": "5.2.0", - "@aws-sdk/types": "3.609.0", - "@smithy/is-array-buffer": "^3.0.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", - "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz", - "integrity": "sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", - "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", - "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-api-gateway": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-api-gateway/-/middleware-sdk-api-gateway-3.620.0.tgz", - "integrity": "sha512-JH8JzZb5CTry5Xit51jwyES8cqihaUWJVS3pcr5L73g8qLDUnvfg2IJJJ7pXs0hVAaCNjDs4L97DW3ity76CUA==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-route53": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-route53/-/middleware-sdk-route53-3.609.0.tgz", - "integrity": "sha512-lw0WdzAJS8puQeJNeyOeEfRtG2C91yFBj8IXWmwm7r+QqnZtDork0uiZYFt1Br24dOxZiFefxLCehjSoyr8fVQ==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.622.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.622.0.tgz", - "integrity": "sha512-tX9wZ2ALx5Ez4bkY+SvSj6DpNZ6TmY4zlsVsdgV95LZFLjNwqnZkKkS+uKnsIyLBiBp6g92JVQwnUEIp7ov2Zw==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-arn-parser": "3.568.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/signature-v4": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", - "@smithy/types": "^3.3.0", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-stream": "^3.1.3", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-sqs": { - "version": "3.622.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.622.0.tgz", - "integrity": "sha512-kOPX94jlVcvH7Wutzag99L+BSjT6LjXxW7Ntc02/oywYX6Gft4YdbeUYdcGYYHWDy/IT6jJ2wMJfFUEEh8U/9A==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/smithy-client": "^3.1.12", - "@smithy/types": "^3.3.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-sqs/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-signing": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.620.0.tgz", - "integrity": "sha512-gxI7rubiaanUXaLfJ4NybERa9MGPNg2Ycl/OqANsozrBnR3Pw8vqy3EuVImQOyn2pJ2IFvl8ZPoSMHf4pX56FQ==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/protocol-http": "^4.1.0", - "@smithy/signature-v4": "^4.1.0", - "@smithy/types": "^3.3.0", - "@smithy/util-middleware": "^3.0.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz", - "integrity": "sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz", - "integrity": "sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/node-http-handler": { - "version": "3.374.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.374.0.tgz", - "integrity": "sha512-v1Z6m0wwkf65/tKuhwrtPRqVoOtNkDTRn2MBMtxCwEw+8V8Q+YRFqVgGN+J1n53ktE0G5OYVBux/NHiAjJHReQ==", - "deprecated": "This package has moved to @smithy/node-http-handler", - "dependencies": { - "@smithy/node-http-handler": "^1.0.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/abort-controller": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-1.1.0.tgz", - "integrity": "sha512-5imgGUlZL4dW4YWdMYAKLmal9ny/tlenM81QZY7xYyb76z9Z/QOg7oM5Ak9HQl8QfFTlGVWwcMXl+54jroRgEQ==", - "dependencies": { - "@smithy/types": "^1.2.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/node-http-handler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-1.1.0.tgz", - "integrity": "sha512-d3kRriEgaIiGXLziAM8bjnaLn1fthCJeTLZIwEIpzQqe6yPX0a+yQoLCTyjb2fvdLwkMoG4p7THIIB5cj5lkbg==", - "dependencies": { - "@smithy/abort-controller": "^1.1.0", - "@smithy/protocol-http": "^1.2.0", - "@smithy/querystring-builder": "^1.1.0", - "@smithy/types": "^1.2.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/protocol-http": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-1.2.0.tgz", - "integrity": "sha512-GfGfruksi3nXdFok5RhgtOnWe5f6BndzYfmEXISD+5gAGdayFGpjWu5pIqIweTudMtse20bGbc+7MFZXT1Tb8Q==", - "dependencies": { - "@smithy/types": "^1.2.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/querystring-builder": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-1.1.0.tgz", - "integrity": "sha512-gDEi4LxIGLbdfjrjiY45QNbuDmpkwh9DX4xzrR2AzjjXpxwGyfSpbJaYhXARw9p17VH0h9UewnNQXNwaQyYMDA==", - "dependencies": { - "@smithy/types": "^1.2.0", - "@smithy/util-uri-escape": "^1.1.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/types": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-1.2.0.tgz", - "integrity": "sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA==", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/util-uri-escape": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-1.1.0.tgz", - "integrity": "sha512-/jL/V1xdVRt5XppwiaEU8Etp5WHZj609n0xMTuehmCqdoOFbId1M+aEeDWZsQ+8JbEB/BJ6ynY2SlYmOaKtt8w==", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/protocol-http": { - "version": "3.374.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.374.0.tgz", - "integrity": "sha512-9WpRUbINdGroV3HiZZIBoJvL2ndoWk39OfwxWs2otxByppJZNN14bg/lvCx5e8ggHUti7IBk5rb0nqQZ4m05pg==", - "deprecated": "This package has moved to @smithy/protocol-http", - "dependencies": { - "@smithy/protocol-http": "^1.1.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/protocol-http/node_modules/@smithy/protocol-http": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-1.2.0.tgz", - "integrity": "sha512-GfGfruksi3nXdFok5RhgtOnWe5f6BndzYfmEXISD+5gAGdayFGpjWu5pIqIweTudMtse20bGbc+7MFZXT1Tb8Q==", - "dependencies": { - "@smithy/types": "^1.2.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/protocol-http/node_modules/@smithy/types": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-1.2.0.tgz", - "integrity": "sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA==", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.614.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz", - "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/types": "^3.3.0", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/s3-presigned-post": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/s3-presigned-post/-/s3-presigned-post-3.623.0.tgz", - "integrity": "sha512-/KqfzjNo1mVTRylT1A3vNpnWvfl73E2LhHnVRIe586J9ehxzrdTL+dcvIuzbVED9d64o4FFQT5OuuN2PB7zeGQ==", - "dependencies": { - "@aws-sdk/client-s3": "3.623.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-format-url": "3.609.0", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/signature-v4": "^4.1.0", - "@smithy/types": "^3.3.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/s3-presigned-post/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/s3-request-presigner": { - "version": "3.623.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.623.0.tgz", - "integrity": "sha512-xdY7x4GQ3jVhkge0I8P2V/18p2unP3AD0m1zvacgFmxZ8tptjVpEg2fwR39gKv3pfri0DdfiPDrVONsPC2KlLw==", - "dependencies": { - "@aws-sdk/signature-v4-multi-region": "3.622.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-format-url": "3.609.0", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/signature-v4": { - "version": "3.374.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.374.0.tgz", - "integrity": "sha512-2xLJvSdzcZZAg0lsDLUAuSQuihzK0dcxIK7WmfuJeF7DGKJFmp9czQmz5f3qiDz6IDQzvgK1M9vtJSVCslJbyQ==", - "deprecated": "This package has moved to @smithy/signature-v4", - "dependencies": { - "@smithy/signature-v4": "^1.0.1", - "tslib": "^2.5.0" + "@smithy/signature-v4": "^1.0.1", + "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.622.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.622.0.tgz", - "integrity": "sha512-K7ddofVNzwTFRjmLZLfs/v+hiE9m5LguajHk8WULxXQgkcDI3nPgOfmMMGuslYohaQhRwW+ic+dzYlateLUudQ==", + "version": "3.626.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.626.0.tgz", + "integrity": "sha512-n3yN668b2XLY6155y2KRCCDfA67Acxf/wUS60wGPNrJKk9O5AZzGQzZF8tLfMSng5YBS/CCHN40ooMhRwSLWUg==", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.622.0", + "@aws-sdk/middleware-sdk-s3": "3.626.0", "@aws-sdk/types": "3.609.0", "@smithy/protocol-http": "^4.1.0", "@smithy/signature-v4": "^4.1.0", @@ -5257,9 +3315,9 @@ } }, "node_modules/@aws-sdk/util-dynamodb": { - "version": "3.619.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.619.0.tgz", - "integrity": "sha512-UK7g1Ivr8WWaxIo5+nzSvnRhZJsLOVZCj5J4RAkiypgvvz5EC4wUtM5aQBgcgek14LpaEND0Wmi54QptFY18aA==", + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.624.0.tgz", + "integrity": "sha512-u34TL7+fHnJHZi83nMkapjAtN9SLnRgXrwuRJ6cLIdvucHGGFtSxh6Nhp2GsrXGbO5hhoqXUDg3uCG7T3tJ7ow==", "dependencies": { "tslib": "^2.6.2" }, @@ -5267,7 +3325,7 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-dynamodb": "^3.619.0" + "@aws-sdk/client-dynamodb": "^3.624.0" } }, "node_modules/@aws-sdk/util-endpoints": { @@ -5362,57 +3420,462 @@ "node": ">=16.0.0" } }, - "node_modules/@babel/cli": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.8.tgz", - "integrity": "sha512-isdp+G6DpRyKc+3Gqxy2rjzgF7Zj9K0mzLNnxz+E/fgeag8qT3vVulX4gY9dGO1q0y+0lUv6V3a+uhUzMzrwXg==", + "node_modules/@azure/abort-controller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "commander": "^6.2.0", - "convert-source-map": "^2.0.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.2.0", - "make-dir": "^2.1.0", - "slash": "^2.0.0" - }, - "bin": { - "babel": "bin/babel.js", - "babel-external-helpers": "bin/babel-external-helpers.js" + "tslib": "^2.2.0" }, "engines": { - "node": ">=6.9.0" - }, - "optionalDependencies": { - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", - "chokidar": "^3.4.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12.0.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "node_modules/@azure/arm-containerinstance": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@azure/arm-containerinstance/-/arm-containerinstance-9.1.0.tgz", + "integrity": "sha512-N9T3/HJwWXvJuz7tin+nO+DYYCTGHILJ5Die3TtdF8Wd1ITfXGqB0vY/wOnspUu/AGojhaIKGmawAfPdw2kX8w==", + "dev": true, "dependencies": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.3.0", + "@azure/core-client": "^1.7.0", + "@azure/core-lro": "^2.5.0", + "@azure/core-paging": "^1.2.0", + "@azure/core-rest-pipeline": "^1.8.0", + "tslib": "^2.2.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=14.0.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", - "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "node_modules/@azure/core-auth": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz", + "integrity": "sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==", "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.1.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/core": { + "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-http-compat": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.1.2.tgz", + "integrity": "sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-client": "^1.3.0", + "@azure/core-rest-pipeline": "^1.3.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-http-compat/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-lro": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", + "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.2.0", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-lro/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-paging": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", + "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.3.tgz", + "integrity": "sha512-VxLk4AHLyqcHsfKe4MZ6IQ+D+ShuByy+RfStKfSjxJoL3WBWq17VNmrz8aT8etKzqc2nAeIyLxScjpzsS4fz8w==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.9.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.1.2.tgz", + "integrity": "sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.2.tgz", + "integrity": "sha512-l1Qrqhi4x1aekkV+OlcqsJa4AnAkj5p0JV8omgwjaV9OAbP41lvrMvs+CptfetKkeEaGRGSzby7sjPZEX7+kkQ==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-xml": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@azure/core-xml/-/core-xml-1.4.3.tgz", + "integrity": "sha512-D6G7FEmDiTctPKuWegX2WTrS1enKZwqYwdKTO6ZN6JMigcCehlT0/CYl+zWpI9vQ9frwwp7GQT3/owaEXgnOsA==", + "dev": true, + "dependencies": { + "fast-xml-parser": "^4.3.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.4.1.tgz", + "integrity": "sha512-DwnG4cKFEM7S3T+9u05NstXU/HN0dk45kPOinUyNKsn5VWwpXd9sbPKEg6kgJzGbm1lMuhx9o31PVbCtM5sfBA==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.5.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.1.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.3.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^3.14.0", + "@azure/msal-node": "^2.9.2", + "events": "^3.0.0", + "jws": "^4.0.0", + "open": "^8.0.0", + "stoppable": "^1.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dev": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@azure/identity/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dev": true, + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@azure/logger": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz", + "integrity": "sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/msal-browser": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.21.0.tgz", + "integrity": "sha512-BAwcFsVvOrYzKuUZHhFuvRykUmQGq6lDxst2qGnjxnpNZc3d/tnVPcmhgvUdeKl28VSE0ltgBzT3HkdpDtz9rg==", + "dev": true, + "dependencies": { + "@azure/msal-common": "14.14.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "14.14.1", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.14.1.tgz", + "integrity": "sha512-2Q3tqNz/PZLfSr8BvcHZVpRRfSn4MjGSqjj9J+HlBsmbf1Uu4P0WeXnemjTJwwx9KrmplsrN3UkZ/LPOR720rw==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.13.0.tgz", + "integrity": "sha512-DhP97ycs7qlCVzzzWGzJiwAFyFj5okno74E4FUZ61oCLfKh4IxA1kxirqzrWuYZWpBe9HVPL6GA4NvmlEOBN5Q==", + "dev": true, + "dependencies": { + "@azure/msal-common": "14.14.1", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@azure/msal-node/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@azure/storage-blob": { + "version": "12.24.0", + "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.24.0.tgz", + "integrity": "sha512-l8cmWM4C7RoNCBOImoFMxhTXe1Lr+8uQ/IgnhRNMpfoA9bAFWoLG4XrWm6O5rKXortreVQuD+fc1hbzWklOZbw==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-client": "^1.6.2", + "@azure/core-http-compat": "^2.0.0", + "@azure/core-lro": "^2.2.0", + "@azure/core-paging": "^1.1.1", + "@azure/core-rest-pipeline": "^1.10.1", + "@azure/core-tracing": "^1.1.2", + "@azure/core-util": "^1.6.1", + "@azure/core-xml": "^1.3.2", + "@azure/logger": "^1.0.0", + "events": "^3.0.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/storage-queue": { + "version": "12.23.0", + "resolved": "https://registry.npmjs.org/@azure/storage-queue/-/storage-queue-12.23.0.tgz", + "integrity": "sha512-koVDpx/lXl3bx6GiyitIsLZ4rtywpTlfwKXiuTDif+dY6PhgSyN9mrq9AsHXaHQnx2CCpmoIzRSV5n4GoQGcmg==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-client": "^1.6.2", + "@azure/core-http-compat": "^2.0.0", + "@azure/core-paging": "^1.1.1", + "@azure/core-rest-pipeline": "^1.10.1", + "@azure/core-tracing": "^1.1.2", + "@azure/core-util": "^1.6.1", + "@azure/core-xml": "^1.3.2", + "@azure/logger": "^1.0.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@babel/cli": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.8.tgz", + "integrity": "sha512-isdp+G6DpRyKc+3Gqxy2rjzgF7Zj9K0mzLNnxz+E/fgeag8qT3vVulX4gY9dGO1q0y+0lUv6V3a+uhUzMzrwXg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "commander": "^6.2.0", + "convert-source-map": "^2.0.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.2.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0" + }, + "bin": { + "babel": "bin/babel.js", + "babel-external-helpers": "bin/babel-external-helpers.js" + }, + "engines": { + "node": ">=6.9.0" + }, + "optionalDependencies": { + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", + "chokidar": "^3.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", + "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { "version": "7.25.2", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", @@ -7307,10 +5770,1135 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@csstools/cascade-layer-name-parser": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.13.tgz", - "integrity": "sha512-MX0yLTwtZzr82sQ0zOjqimpZbzjMaK/h2pmlrLK7DCzlmiZLYFpoO94WmN1akRVo6ll/TdpHb53vihHLUMyvng==", + "node_modules/@csstools/color-helpers": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz", + "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", + "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^2.4.1" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", + "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", + "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.7.1", + "@csstools/css-tokenizer": "^2.4.1" + } + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.0.tgz", + "integrity": "sha512-h+VunB3KXaoWTWEPBcdVk8Kz1eZ/CtDD+HXgKw5JLdbsViLEQdKUtFYH73VIQigdodng8s5DCrrwNQY7pnuWBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-specificity": "^4.0.0", + "postcss-selector-parser": "^6.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-cascade-layers/node_modules/@csstools/selector-specificity": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", + "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.1.0" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.1.tgz", + "integrity": "sha512-nRnwVdqdMUIsE7cGbI+La4fxME6tT9bVDRYfBHW/0QTLwCVJN4+DC/3kqiU6AdTne31hUBGPwcH1uzkuc4fO5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-function/node_modules/@csstools/css-calc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.0.tgz", + "integrity": "sha512-fxPxNrEVGeej4F35Xt69Q7gPMKa7oEGNxeP1DpA01sWpTF3Yhgux/0slVX3jLHd7dhlszeQlNAUhpAorVxoHdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-color-function/node_modules/@csstools/css-color-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.1.tgz", + "integrity": "sha512-++7I+Z7S/BWedPlR4z8aW1zsvtJFufFbpdPwdx5+W50dq5EYLV3sulitSNMry0BNmNMzeczdQij/f4C+ch01vQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-color-function/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-color-function/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/postcss-color-mix-function": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.1.tgz", + "integrity": "sha512-RRdu3CppF9dTn3AvDkeEkOL8ZDpDh/TF6YLV1JKl768BQk0XJ026xWfttoL911k0g8yprES3wFujjLsK0XhsEg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-function/node_modules/@csstools/css-calc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.0.tgz", + "integrity": "sha512-fxPxNrEVGeej4F35Xt69Q7gPMKa7oEGNxeP1DpA01sWpTF3Yhgux/0slVX3jLHd7dhlszeQlNAUhpAorVxoHdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-color-mix-function/node_modules/@csstools/css-color-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.1.tgz", + "integrity": "sha512-++7I+Z7S/BWedPlR4z8aW1zsvtJFufFbpdPwdx5+W50dq5EYLV3sulitSNMry0BNmNMzeczdQij/f4C+ch01vQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-color-mix-function/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-color-mix-function/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/postcss-content-alt-text": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.0.tgz", + "integrity": "sha512-1pPjMaSUftwn/4N7RtJif91cB6BBEo0LQX2vryrDMF5uKDqt4RMpIi9ZFTsKtcXBFZexNGEWXZzPABnooJGkzQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-content-alt-text/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-content-alt-text/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/postcss-exponential-functions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.0.tgz", + "integrity": "sha512-sH7MBlsn6yft6xQ8uQ9MCWFHbZCUL3HIN3IntUabv75syl0dPldECTqLJix5q5ilSQxDQ1L+LajeZk84S6GG9w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-calc": "^2.0.0", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-exponential-functions/node_modules/@csstools/css-calc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.0.tgz", + "integrity": "sha512-fxPxNrEVGeej4F35Xt69Q7gPMKa7oEGNxeP1DpA01sWpTF3Yhgux/0slVX3jLHd7dhlszeQlNAUhpAorVxoHdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-exponential-functions/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-exponential-functions/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz", + "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gamut-mapping": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.1.tgz", + "integrity": "sha512-bCQ609PZsGUmrTVeGaPgYF27DFQ7gg2no3j6qXY3MOAVjfPRvMIlGdpLejhgYra1VUoTNA1SUqHLNgFWoJ/pRA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gamut-mapping/node_modules/@csstools/css-calc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.0.tgz", + "integrity": "sha512-fxPxNrEVGeej4F35Xt69Q7gPMKa7oEGNxeP1DpA01sWpTF3Yhgux/0slVX3jLHd7dhlszeQlNAUhpAorVxoHdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-gamut-mapping/node_modules/@csstools/css-color-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.1.tgz", + "integrity": "sha512-++7I+Z7S/BWedPlR4z8aW1zsvtJFufFbpdPwdx5+W50dq5EYLV3sulitSNMry0BNmNMzeczdQij/f4C+ch01vQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-gamut-mapping/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-gamut-mapping/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.1.tgz", + "integrity": "sha512-ZINUsXxFrJ5bpfpq772BQzu5K23dDFoQwvyeQRHHQpDOS8hMIoBMmjDjtZV5fGJ/gtL/blKUvytAyrgBzaqvUQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method/node_modules/@csstools/css-calc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.0.tgz", + "integrity": "sha512-fxPxNrEVGeej4F35Xt69Q7gPMKa7oEGNxeP1DpA01sWpTF3Yhgux/0slVX3jLHd7dhlszeQlNAUhpAorVxoHdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method/node_modules/@csstools/css-color-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.1.tgz", + "integrity": "sha512-++7I+Z7S/BWedPlR4z8aW1zsvtJFufFbpdPwdx5+W50dq5EYLV3sulitSNMry0BNmNMzeczdQij/f4C+ch01vQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.1.tgz", + "integrity": "sha512-1SluTV2F2WiWPw5CHQ/UOsUrO5y89VDQlOICzHIF3Mx50YdTf0qYZ/dTXL/Fa+1AgzSn4IYt51XXjgxI7pe/jw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-hwb-function/node_modules/@csstools/css-calc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.0.tgz", + "integrity": "sha512-fxPxNrEVGeej4F35Xt69Q7gPMKa7oEGNxeP1DpA01sWpTF3Yhgux/0slVX3jLHd7dhlszeQlNAUhpAorVxoHdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-hwb-function/node_modules/@csstools/css-color-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.1.tgz", + "integrity": "sha512-++7I+Z7S/BWedPlR4z8aW1zsvtJFufFbpdPwdx5+W50dq5EYLV3sulitSNMry0BNmNMzeczdQij/f4C+ch01vQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-hwb-function/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-hwb-function/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.0.tgz", + "integrity": "sha512-9QT5TDGgx7wD3EEMN3BSUG6ckb6Eh5gSPT5kZoVtUuAonfPmLDJyPhqR4ntPpMYhUKAMVKAg3I/AgzqHMSeLhA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-initial": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.0.tgz", + "integrity": "sha512-dv2lNUKR+JV+OOhZm9paWzYBXOCi+rJPqJ2cJuhh9xd8USVrd0cBEPczla81HNOyThMQWeCcdln3gZkQV2kYxA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.0.tgz", + "integrity": "sha512-E/CjrT03BL06WmrjupnrT0VUBTvxJdoW1hRVeXFa9qatWtvcLLw0j8hP372G4A9PpSGEMXi3/AoHzPf7DNryCQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-specificity": "^4.0.0", + "postcss-selector-parser": "^6.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", + "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.1.0" + } + }, + "node_modules/@csstools/postcss-light-dark-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.1.tgz", + "integrity": "sha512-RHliBdalIg7KZNwv5B1VwF1qFEhmz3ZIbZXyxOH1g7W72S0oazMKIvYVgHenCxHCxWOxSR0ipZ+8kHa+fm4O5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-light-dark-function/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/@csstools/postcss-light-dark-function/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/postcss-logical-float-and-clear": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz", + "integrity": "sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overflow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz", + "integrity": "sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overscroll-behavior": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz", + "integrity": "sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==", "dev": true, "funding": [ { @@ -7323,17 +6911,16 @@ } ], "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1" + "postcss": "^8.4" } }, - "node_modules/@csstools/color-helpers": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-4.2.1.tgz", - "integrity": "sha512-CEypeeykO9AN7JWkr1OEOQb0HRzZlPWGwV0Ya6DuVgFdDi6g3ma/cPZ5ZPZM4AWQikDpq/0llnGGlIL+j8afzw==", + "node_modules/@csstools/postcss-logical-resize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz", + "integrity": "sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==", "dev": true, "funding": [ { @@ -7345,14 +6932,20 @@ "url": "https://opencollective.com/csstools" } ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/@csstools/css-calc": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-1.2.4.tgz", - "integrity": "sha512-tfOuvUQeo7Hz+FcuOd3LfXVp+342pnWUJ7D2y8NUpu1Ww6xnTbHLpz018/y6rtbHifJ3iIEf9ttxXd8KG7nL0Q==", + "node_modules/@csstools/postcss-logical-viewport-units": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.0.tgz", + "integrity": "sha512-7a0d7TLfHP3k7n+XGj5NJopgyKgl/VKyAPapYIo97aujB7+8M4dBE1Og0OmWng+H/drQWXoSlCI3pov5XwVtxQ==", "dev": true, "funding": [ { @@ -7364,18 +6957,21 @@ "url": "https://opencollective.com/csstools" } ], + "dependencies": { + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/utilities": "^2.0.0" + }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1" + "postcss": "^8.4" } }, - "node_modules/@csstools/css-color-parser": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-2.0.5.tgz", - "integrity": "sha512-lRZSmtl+DSjok3u9hTWpmkxFZnz7stkbZxzKc08aDUsdrWwhSgWo8yq9rq9DaFUtbAyAq2xnH92fj01S+pwIww==", + "node_modules/@csstools/postcss-logical-viewport-units/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", "dev": true, "funding": [ { @@ -7387,22 +6983,14 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/color-helpers": "^4.2.1", - "@csstools/css-calc": "^1.2.4" - }, "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1" + "node": ">=18" } }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", - "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", + "node_modules/@csstools/postcss-media-minmax": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.0.tgz", + "integrity": "sha512-21Cmy5QWbexbpKAAJntGomjn644BWWs7gXkx/Vid1SjqxIRmPUB/dcJ4xBWwjpFuhrPKzT8a3Pr+IJv9R9v9Yg==", "dev": true, "funding": [ { @@ -7414,17 +7002,23 @@ "url": "https://opencollective.com/csstools" } ], + "dependencies": { + "@csstools/css-calc": "^2.0.0", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/media-query-list-parser": "^3.0.0" + }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^2.4.1" + "postcss": "^8.4" } }, - "node_modules/@csstools/css-tokenizer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", - "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", + "node_modules/@csstools/postcss-media-minmax/node_modules/@csstools/css-calc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.0.tgz", + "integrity": "sha512-fxPxNrEVGeej4F35Xt69Q7gPMKa7oEGNxeP1DpA01sWpTF3Yhgux/0slVX3jLHd7dhlszeQlNAUhpAorVxoHdQ==", "dev": true, "funding": [ { @@ -7437,13 +7031,17 @@ } ], "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/media-query-list-parser": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", - "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", + "node_modules/@csstools/postcss-media-minmax/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", "dev": true, "funding": [ { @@ -7456,17 +7054,16 @@ } ], "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1" + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/postcss-cascade-layers": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-4.0.6.tgz", - "integrity": "sha512-Xt00qGAQyqAODFiFEJNkTpSUz5VfYqnDLECdlA/Vv17nl/OIV5QfTRHGAXrBGG5YcJyHpJ+GF9gF/RZvOQz4oA==", + "node_modules/@csstools/postcss-media-minmax/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", "dev": true, "funding": [ { @@ -7478,21 +7075,14 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/selector-specificity": "^3.1.1", - "postcss-selector-parser": "^6.0.13" - }, "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=18" } }, - "node_modules/@csstools/postcss-color-function": { - "version": "3.0.19", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-3.0.19.tgz", - "integrity": "sha512-d1OHEXyYGe21G3q88LezWWx31ImEDdmINNDy0LyLNN9ChgN2bPxoubUPiHf9KmwypBMaHmNcMuA/WZOKdZk/Lg==", + "node_modules/@csstools/postcss-media-minmax/node_modules/@csstools/media-query-list-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.0.tgz", + "integrity": "sha512-W0JlkUFwXjo703wt06AcaWuUcS+6x6IEDyxV6W65Sw+vLCYp+uPsrps+PXTiIfN0V1Pqj5snPzN7EYLmbz1zjg==", "dev": true, "funding": [ { @@ -7504,24 +7094,18 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/css-color-parser": "^2.0.4", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/postcss-progressive-custom-properties": "^3.3.0", - "@csstools/utilities": "^1.0.0" - }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4" + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/postcss-color-mix-function": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-2.0.19.tgz", - "integrity": "sha512-mLvQlMX+keRYr16AuvuV8WYKUwF+D0DiCqlBdvhQ0KYEtcQl9/is9Ssg7RcIys8x0jIn2h1zstS4izckdZj9wg==", + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.0.tgz", + "integrity": "sha512-TV8Q7ec0zbCxlmTmUF8CvAWWbK3q9ops3+sGCc6rHAGrfkoA+HyMGwJBZudddZQOV9MZS949mhtYIV4AgIRizw==", "dev": true, "funding": [ { @@ -7534,23 +7118,21 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^2.0.4", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/postcss-progressive-custom-properties": "^3.3.0", - "@csstools/utilities": "^1.0.0" + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/media-query-list-parser": "^3.0.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-content-alt-text": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-1.0.0.tgz", - "integrity": "sha512-SkHdj7EMM/57GVvSxSELpUg7zb5eAndBeuvGwFzYtU06/QXJ/h9fuK7wO5suteJzGhm3GDF/EWPCdWV2h1IGHQ==", + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", "dev": true, "funding": [ { @@ -7562,23 +7144,17 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/postcss-progressive-custom-properties": "^3.3.0", - "@csstools/utilities": "^1.0.0" - }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4" + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/postcss-exponential-functions": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-1.0.9.tgz", - "integrity": "sha512-x1Avr15mMeuX7Z5RJUl7DmjhUtg+Amn5DZRD0fQ2TlTFTcJS8U1oxXQ9e5mA62S2RJgUU6db20CRoJyDvae2EQ==", + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", "dev": true, "funding": [ { @@ -7590,22 +7166,14 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/css-calc": "^1.2.4", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1" - }, "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=18" } }, - "node_modules/@csstools/postcss-font-format-keywords": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-3.0.2.tgz", - "integrity": "sha512-E0xz2sjm4AMCkXLCFvI/lyl4XO6aN1NCSMMVEOngFDJ+k2rDwfr6NDjWljk1li42jiLNChVX+YFnmfGCigZKXw==", + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values/node_modules/@csstools/media-query-list-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.0.tgz", + "integrity": "sha512-W0JlkUFwXjo703wt06AcaWuUcS+6x6IEDyxV6W65Sw+vLCYp+uPsrps+PXTiIfN0V1Pqj5snPzN7EYLmbz1zjg==", "dev": true, "funding": [ { @@ -7617,21 +7185,18 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/utilities": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4" + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/postcss-gamut-mapping": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-1.0.11.tgz", - "integrity": "sha512-KrHGsUPXRYxboXmJ9wiU/RzDM7y/5uIefLWKFSc36Pok7fxiPyvkSHO51kh+RLZS1W5hbqw9qaa6+tKpTSxa5g==", + "node_modules/@csstools/postcss-nested-calc": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz", + "integrity": "sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==", "dev": true, "funding": [ { @@ -7644,21 +7209,20 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^2.0.4", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1" + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-gradients-interpolation-method": { - "version": "4.0.20", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-4.0.20.tgz", - "integrity": "sha512-ZFl2JBHano6R20KB5ZrB8KdPM2pVK0u+/3cGQ2T8VubJq982I2LSOvQ4/VtxkAXjkPkk1rXt4AD1ni7UjTZ1Og==", + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz", + "integrity": "sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==", "dev": true, "funding": [ { @@ -7671,23 +7235,19 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^2.0.4", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/postcss-progressive-custom-properties": "^3.3.0", - "@csstools/utilities": "^1.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-hwb-function": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-3.0.18.tgz", - "integrity": "sha512-3ifnLltR5C7zrJ+g18caxkvSRnu9jBBXCYgnBznRjxm6gQJGnnCO9H6toHfywNdNr/qkiVf2dymERPQLDnjLRQ==", + "node_modules/@csstools/postcss-oklab-function": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.1.tgz", + "integrity": "sha512-hEJ83YhqNII3/TBGcJLjSkNx65p4Zbz6YFm6ww2BRRO223/GTFOHT2ElicWmnBtoZWKORgysI4wtLv3p6LZSFQ==", "dev": true, "funding": [ { @@ -7700,23 +7260,23 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^2.0.4", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/postcss-progressive-custom-properties": "^3.3.0", - "@csstools/utilities": "^1.0.0" + "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-ic-unit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-3.0.7.tgz", - "integrity": "sha512-YoaNHH2wNZD+c+rHV02l4xQuDpfR8MaL7hD45iJyr+USwvr0LOheeytJ6rq8FN6hXBmEeoJBeXXgGmM8fkhH4g==", + "node_modules/@csstools/postcss-oklab-function/node_modules/@csstools/css-calc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.0.tgz", + "integrity": "sha512-fxPxNrEVGeej4F35Xt69Q7gPMKa7oEGNxeP1DpA01sWpTF3Yhgux/0slVX3jLHd7dhlszeQlNAUhpAorVxoHdQ==", "dev": true, "funding": [ { @@ -7728,22 +7288,18 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^3.3.0", - "@csstools/utilities": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4" + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/postcss-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-1.0.1.tgz", - "integrity": "sha512-wtb+IbUIrIf8CrN6MLQuFR7nlU5C7PwuebfeEXfjthUha1+XZj2RVi+5k/lukToA24sZkYAiSJfHM8uG/UZIdg==", + "node_modules/@csstools/postcss-oklab-function/node_modules/@csstools/css-color-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.1.tgz", + "integrity": "sha512-++7I+Z7S/BWedPlR4z8aW1zsvtJFufFbpdPwdx5+W50dq5EYLV3sulitSNMry0BNmNMzeczdQij/f4C+ch01vQ==", "dev": true, "funding": [ { @@ -7755,17 +7311,22 @@ "url": "https://opencollective.com/csstools" } ], + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.0.0" + }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4" + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/postcss-is-pseudo-class": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-4.0.8.tgz", - "integrity": "sha512-0aj591yGlq5Qac+plaWCbn5cpjs5Sh0daovYUKJUOMjIp70prGH/XPLp7QjxtbFXz3CTvb0H9a35dpEuIuUi3Q==", + "node_modules/@csstools/postcss-oklab-function/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", "dev": true, "funding": [ { @@ -7777,21 +7338,17 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/selector-specificity": "^3.1.1", - "postcss-selector-parser": "^6.0.13" - }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4" + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/postcss-light-dark-function": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-1.0.8.tgz", - "integrity": "sha512-x0UtpCyVnERsplUeoaY6nEtp1HxTf4lJjoK/ULEm40DraqFfUdUSt76yoOyX5rGY6eeOUOkurHyYlFHVKv/pew==", + "node_modules/@csstools/postcss-oklab-function/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", "dev": true, "funding": [ { @@ -7803,23 +7360,14 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/postcss-progressive-custom-properties": "^3.3.0", - "@csstools/utilities": "^1.0.0" - }, "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=18" } }, - "node_modules/@csstools/postcss-logical-float-and-clear": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-2.0.1.tgz", - "integrity": "sha512-SsrWUNaXKr+e/Uo4R/uIsqJYt3DaggIh/jyZdhy/q8fECoJSKsSMr7nObSLdvoULB69Zb6Bs+sefEIoMG/YfOA==", + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.0.0.tgz", + "integrity": "sha512-XQPtROaQjomnvLUSy/bALTR5VCtTVUFwYs1SblvYgLSeTo2a/bMNwUwo2piXw5rTv/FEYiy5yPSXBqg9OKUx7Q==", "dev": true, "funding": [ { @@ -7831,17 +7379,20 @@ "url": "https://opencollective.com/csstools" } ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-logical-overflow": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-1.0.1.tgz", - "integrity": "sha512-Kl4lAbMg0iyztEzDhZuQw8Sj9r2uqFDcU1IPl+AAt2nue8K/f1i7ElvKtXkjhIAmKiy5h2EY8Gt/Cqg0pYFDCw==", + "node_modules/@csstools/postcss-relative-color-syntax": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.1.tgz", + "integrity": "sha512-GbcQPmfBOjKomHuOVB6troujQg65ykCMt4OGot75Bdev7jAHC9hd0AX5qMprpG9AF0dA012curAVqY0ehmdYwQ==", "dev": true, "funding": [ { @@ -7853,17 +7404,24 @@ "url": "https://opencollective.com/csstools" } ], + "dependencies": { + "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-logical-overscroll-behavior": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-1.0.1.tgz", - "integrity": "sha512-+kHamNxAnX8ojPCtV8WPcUP3XcqMFBSDuBuvT6MHgq7oX4IQxLIXKx64t7g9LiuJzE7vd06Q9qUYR6bh4YnGpQ==", + "node_modules/@csstools/postcss-relative-color-syntax/node_modules/@csstools/css-calc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.0.tgz", + "integrity": "sha512-fxPxNrEVGeej4F35Xt69Q7gPMKa7oEGNxeP1DpA01sWpTF3Yhgux/0slVX3jLHd7dhlszeQlNAUhpAorVxoHdQ==", "dev": true, "funding": [ { @@ -7876,16 +7434,17 @@ } ], "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4" + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/postcss-logical-resize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-2.0.1.tgz", - "integrity": "sha512-W5Gtwz7oIuFcKa5SmBjQ2uxr8ZoL7M2bkoIf0T1WeNqljMkBrfw1DDA8/J83k57NQ1kcweJEjkJ04pUkmyee3A==", + "node_modules/@csstools/postcss-relative-color-syntax/node_modules/@csstools/css-color-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.1.tgz", + "integrity": "sha512-++7I+Z7S/BWedPlR4z8aW1zsvtJFufFbpdPwdx5+W50dq5EYLV3sulitSNMry0BNmNMzeczdQij/f4C+ch01vQ==", "dev": true, "funding": [ { @@ -7898,19 +7457,21 @@ } ], "dependencies": { - "postcss-value-parser": "^4.2.0" + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.0.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4" + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/postcss-logical-viewport-units": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-2.0.11.tgz", - "integrity": "sha512-ElITMOGcjQtvouxjd90WmJRIw1J7KMP+M+O87HaVtlgOOlDt1uEPeTeii8qKGe2AiedEp0XOGIo9lidbiU2Ogg==", + "node_modules/@csstools/postcss-relative-color-syntax/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", "dev": true, "funding": [ { @@ -7922,21 +7483,17 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/utilities": "^1.0.0" - }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4" + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/postcss-media-minmax": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-1.1.8.tgz", - "integrity": "sha512-KYQCal2i7XPNtHAUxCECdrC7tuxIWQCW+s8eMYs5r5PaAiVTeKwlrkRS096PFgojdNCmHeG0Cb7njtuNswNf+w==", + "node_modules/@csstools/postcss-relative-color-syntax/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", "dev": true, "funding": [ { @@ -7948,23 +7505,14 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/css-calc": "^1.2.4", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/media-query-list-parser": "^2.1.13" - }, "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=18" } }, - "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-2.0.11.tgz", - "integrity": "sha512-YD6jrib20GRGQcnOu49VJjoAnQ/4249liuz7vTpy/JfgqQ1Dlc5eD4HPUMNLOw9CWey9E6Etxwf/xc/ZF8fECA==", + "node_modules/@csstools/postcss-scope-pseudo-class": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.0.tgz", + "integrity": "sha512-+ZUOBtVMDcmHZcZqsP/jcNRriEILfWQflTI3tCTA+/RheXAg57VkFGyPDAilpQSqlCpxWLWG8VUFKFtZJPwuOg==", "dev": true, "funding": [ { @@ -7977,21 +7525,19 @@ } ], "dependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/media-query-list-parser": "^2.1.13" + "postcss-selector-parser": "^6.1.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-nested-calc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-3.0.2.tgz", - "integrity": "sha512-ySUmPyawiHSmBW/VI44+IObcKH0v88LqFe0d09Sb3w4B1qjkaROc6d5IA3ll9kjD46IIX/dbO5bwFN/swyoyZA==", + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.0.tgz", + "integrity": "sha512-sJUW1axQuxRyD59zr9hMJ6MoM/99UkxNc7fxJ1kFdTl1B5dS3TxvVzY1fRq1C/JsgBw6uNzfy/i52SrVNtbbXw==", "dev": true, "funding": [ { @@ -8004,20 +7550,21 @@ } ], "dependencies": { - "@csstools/utilities": "^1.0.0", - "postcss-value-parser": "^4.2.0" + "@csstools/css-calc": "^2.0.0", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-normalize-display-values": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-3.0.2.tgz", - "integrity": "sha512-fCapyyT/dUdyPtrelQSIV+d5HqtTgnNP/BEG9IuhgXHt93Wc4CfC1bQ55GzKAjWrZbgakMQ7MLfCXEf3rlZJOw==", + "node_modules/@csstools/postcss-stepped-value-functions/node_modules/@csstools/css-calc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.0.tgz", + "integrity": "sha512-fxPxNrEVGeej4F35Xt69Q7gPMKa7oEGNxeP1DpA01sWpTF3Yhgux/0slVX3jLHd7dhlszeQlNAUhpAorVxoHdQ==", "dev": true, "funding": [ { @@ -8029,20 +7576,18 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4" + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/postcss-oklab-function": { - "version": "3.0.19", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-3.0.19.tgz", - "integrity": "sha512-e3JxXmxjU3jpU7TzZrsNqSX4OHByRC3XjItV3Ieo/JEQmLg5rdOL4lkv/1vp27gXemzfNt44F42k/pn0FpE21Q==", + "node_modules/@csstools/postcss-stepped-value-functions/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", "dev": true, "funding": [ { @@ -8054,24 +7599,17 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/css-color-parser": "^2.0.4", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/postcss-progressive-custom-properties": "^3.3.0", - "@csstools/utilities": "^1.0.0" - }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4" + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-3.3.0.tgz", - "integrity": "sha512-W2oV01phnILaRGYPmGFlL2MT/OgYjQDrL9sFlbdikMFi6oQkFki9B86XqEWR7HCsTZFVq7dbzr/o71B75TKkGg==", + "node_modules/@csstools/postcss-stepped-value-functions/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", "dev": true, "funding": [ { @@ -8083,20 +7621,14 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=18" } }, - "node_modules/@csstools/postcss-relative-color-syntax": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-2.0.19.tgz", - "integrity": "sha512-MxUMSNvio1WwuS6WRLlQuv6nNPXwIWUFzBBAvL/tBdWfiKjiJnAa6eSSN5gtaacSqUkQ/Ce5Z1OzLRfeaWhADA==", + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.1.tgz", + "integrity": "sha512-xPZIikbx6jyzWvhms27uugIc0I4ykH4keRvoa3rxX5K7lEhkbd54rjj/dv60qOCTisoS+3bmwJTeyV1VNBrXaw==", "dev": true, "funding": [ { @@ -8109,23 +7641,20 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^2.0.4", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/postcss-progressive-custom-properties": "^3.3.0", - "@csstools/utilities": "^1.0.0" + "@csstools/color-helpers": "^5.0.1", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-scope-pseudo-class": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-3.0.1.tgz", - "integrity": "sha512-3ZFonK2gfgqg29gUJ2w7xVw2wFJ1eNWVDONjbzGkm73gJHVCYK5fnCqlLr+N+KbEfv2XbWAO0AaOJCFB6Fer6A==", + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.0.tgz", + "integrity": "sha512-M7CivX++ZOQvnF+eZ8FHg2X8GYOfSUFH6GRtr7mGeIgd38WmT1WCBogqBvz/Y5x9VUeor9EuJX2K06bP7p4BuA==", "dev": true, "funding": [ { @@ -8138,19 +7667,21 @@ } ], "dependencies": { - "postcss-selector-parser": "^6.0.13" + "@csstools/css-calc": "^2.0.0", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, - "node_modules/@csstools/postcss-stepped-value-functions": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-3.0.10.tgz", - "integrity": "sha512-MZwo0D0TYrQhT5FQzMqfy/nGZ28D1iFtpN7Su1ck5BPHS95+/Y5O9S4kEvo76f2YOsqwYcT8ZGehSI1TnzuX2g==", + "node_modules/@csstools/postcss-trigonometric-functions/node_modules/@csstools/css-calc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.0.tgz", + "integrity": "sha512-fxPxNrEVGeej4F35Xt69Q7gPMKa7oEGNxeP1DpA01sWpTF3Yhgux/0slVX3jLHd7dhlszeQlNAUhpAorVxoHdQ==", "dev": true, "funding": [ { @@ -8162,22 +7693,18 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/css-calc": "^1.2.4", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1" - }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4" + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/postcss-text-decoration-shorthand": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-3.0.7.tgz", - "integrity": "sha512-+cptcsM5r45jntU6VjotnkC9GteFR7BQBfZ5oW7inLCxj7AfLGAzMbZ60hKTP13AULVZBdxky0P8um0IBfLHVA==", + "node_modules/@csstools/postcss-trigonometric-functions/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", "dev": true, "funding": [ { @@ -8189,21 +7716,17 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/color-helpers": "^4.2.1", - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4" + "@csstools/css-tokenizer": "^3.0.0" } }, - "node_modules/@csstools/postcss-trigonometric-functions": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-3.0.10.tgz", - "integrity": "sha512-G9G8moTc2wiad61nY5HfvxLiM/myX0aYK4s1x8MQlPH29WDPxHQM7ghGgvv2qf2xH+rrXhztOmjGHJj4jsEqXw==", + "node_modules/@csstools/postcss-trigonometric-functions/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", "dev": true, "funding": [ { @@ -8215,22 +7738,14 @@ "url": "https://opencollective.com/csstools" } ], - "dependencies": { - "@csstools/css-calc": "^1.2.4", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1" - }, "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=18" } }, "node_modules/@csstools/postcss-unset-value": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-3.0.1.tgz", - "integrity": "sha512-dbDnZ2ja2U8mbPP0Hvmt2RMEGBiF1H7oY6HYSpjteXJGihYwgxgTr6KRbbJ/V6c+4wd51M+9980qG4gKVn5ttg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz", + "integrity": "sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==", "dev": true, "funding": [ { @@ -8243,16 +7758,16 @@ } ], "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/@csstools/selector-resolve-nested": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-1.1.0.tgz", - "integrity": "sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-2.0.0.tgz", + "integrity": "sha512-oklSrRvOxNeeOW1yARd4WNCs/D09cQjunGZUgSq6vM8GpzFswN+8rBZyJA29YFZhOTQ6GFzxgLDNtVbt9wPZMA==", "dev": true, "funding": [ { @@ -8265,10 +7780,10 @@ } ], "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss-selector-parser": "^6.0.13" + "postcss-selector-parser": "^6.1.0" } }, "node_modules/@csstools/selector-specificity": { @@ -8294,9 +7809,9 @@ } }, "node_modules/@csstools/utilities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-1.0.0.tgz", - "integrity": "sha512-tAgvZQe/t2mlvpNosA4+CkMiZ2azISW5WPAcdSalZlEjQvUfghHxfQcrCiK/7/CrfAWVxyM88kGFYO82heIGDg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz", + "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==", "dev": true, "funding": [ { @@ -8309,7 +7824,7 @@ } ], "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" @@ -8783,22 +8298,6 @@ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz", - "integrity": "sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -11351,25 +10850,25 @@ } }, "node_modules/@playwright/browser-chromium": { - "version": "1.45.2", - "resolved": "https://registry.npmjs.org/@playwright/browser-chromium/-/browser-chromium-1.45.2.tgz", - "integrity": "sha512-oYWP32mCpEtPCE26uY+e82oF/oHa8y6Hx9EPN7ljrHyo6hb+/NDXp6OoJEZ/bwnGHEMKxfeD4yre0iXxBOLTxA==", + "version": "1.45.3", + "resolved": "https://registry.npmjs.org/@playwright/browser-chromium/-/browser-chromium-1.45.3.tgz", + "integrity": "sha512-UVPW8HveE8SghaahoMy8CfG0QdJ2mO0BZLOcPT8nlQh7Z97Gkv4e3Ad69D1oCqM3m3zYkDPAiGB+hOASNS0d/g==", "dev": true, "hasInstallScript": true, "dependencies": { - "playwright-core": "1.45.2" + "playwright-core": "1.45.3" }, "engines": { "node": ">=18" } }, "node_modules/@playwright/test": { - "version": "1.45.2", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.45.2.tgz", - "integrity": "sha512-JxG9eq92ET75EbVi3s+4sYbcG7q72ECeZNbdBlaMkGcNbiDQ4cAi8U2QP5oKkOx+1gpaiL1LDStmzCaEM1Z6fQ==", + "version": "1.45.3", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.45.3.tgz", + "integrity": "sha512-UKF4XsBfy+u3MFWEH44hva1Q8Da28G6RFtR2+5saw+jgAFQV5yYnB1fu68Mz7fO+5GJF3wgwAIs0UelU8TxFrA==", "dev": true, "dependencies": { - "playwright": "1.45.2" + "playwright": "1.45.3" }, "bin": { "playwright": "cli.js" @@ -13278,9 +12777,9 @@ } }, "node_modules/@types/aws-lambda": { - "version": "8.10.142", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.142.tgz", - "integrity": "sha512-wy2y/2hQKrS6myOS++koXg3N1Hg+LLyPjaggCFajczSHZPqBnOMuT2sdH3kiASrmdBYyM3pmjyz5SoWraRllCQ==", + "version": "8.10.143", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.143.tgz", + "integrity": "sha512-u5vzlcR14ge/4pMTTMDQr3MF0wEe38B2F9o84uC4F43vN5DGTy63npRrB6jQhyt+C0lGv4ZfiRcRkqJoZuPnmg==", "dev": true }, "node_modules/@types/babel__core": { @@ -13750,31 +13249,31 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.17.0.tgz", - "integrity": "sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz", + "integrity": "sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.17.0", - "@typescript-eslint/type-utils": "7.17.0", - "@typescript-eslint/utils": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", + "@typescript-eslint/scope-manager": "8.0.1", + "@typescript-eslint/type-utils": "8.0.1", + "@typescript-eslint/utils": "8.0.1", + "@typescript-eslint/visitor-keys": "8.0.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -13783,26 +13282,26 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.17.0.tgz", - "integrity": "sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.1.tgz", + "integrity": "sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.17.0", - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/typescript-estree": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", + "@typescript-eslint/scope-manager": "8.0.1", + "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/typescript-estree": "8.0.1", + "@typescript-eslint/visitor-keys": "8.0.1", "debug": "^4.3.4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -13811,16 +13310,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz", - "integrity": "sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz", + "integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0" + "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/visitor-keys": "8.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -13828,26 +13327,23 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.17.0.tgz", - "integrity": "sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz", + "integrity": "sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.17.0", - "@typescript-eslint/utils": "7.17.0", + "@typescript-eslint/typescript-estree": "8.0.1", + "@typescript-eslint/utils": "8.0.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^8.56.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -13855,12 +13351,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", - "integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz", + "integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==", "dev": true, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -13868,13 +13364,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz", - "integrity": "sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz", + "integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", + "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/visitor-keys": "8.0.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -13883,7 +13379,7 @@ "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -13896,38 +13392,38 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.17.0.tgz", - "integrity": "sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.1.tgz", + "integrity": "sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.17.0", - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/typescript-estree": "7.17.0" + "@typescript-eslint/scope-manager": "8.0.1", + "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/typescript-estree": "8.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", - "integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz", + "integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/types": "8.0.1", "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -14793,26 +14289,30 @@ } }, "node_modules/artillery": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/artillery/-/artillery-2.0.18.tgz", - "integrity": "sha512-3OA8L4FN2TMLHZgmYn5cqb1WT+3x/1gWRxTELytBLMDH/gQnWz9hJIGIhGUcEXHJXVbv1lYMh5Pulw+D327UpQ==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/artillery/-/artillery-2.0.19.tgz", + "integrity": "sha512-NeD5+D7U5l8hZ3lHtUseFTwqxILN2qfl4XlQt4cH0PukA/wsOri7cR0Qg2925usCa5EkD240Dfh9r9wYvuHxlw==", "dev": true, "dependencies": { - "@artilleryio/int-commons": "2.9.0", - "@artilleryio/int-core": "2.13.0", + "@artilleryio/int-commons": "2.10.0", + "@artilleryio/int-core": "2.14.0", "@aws-sdk/credential-providers": "^3.127.0", + "@azure/arm-containerinstance": "^9.1.0", + "@azure/identity": "^4.2.0", + "@azure/storage-blob": "^12.18.0", + "@azure/storage-queue": "^12.22.0", "@oclif/core": "^2.8.11", "@oclif/plugin-help": "^5.2.11", "@oclif/plugin-not-found": "^2.3.1", "archiver": "^5.3.1", - "artillery-engine-playwright": "1.15.0", - "artillery-plugin-apdex": "1.9.0", - "artillery-plugin-ensure": "1.12.0", - "artillery-plugin-expect": "2.12.0", - "artillery-plugin-fake-data": "1.9.0", - "artillery-plugin-metrics-by-endpoint": "1.12.0", - "artillery-plugin-publish-metrics": "2.23.0", - "artillery-plugin-slack": "1.7.0", + "artillery-engine-playwright": "1.16.0", + "artillery-plugin-apdex": "1.10.0", + "artillery-plugin-ensure": "1.13.0", + "artillery-plugin-expect": "2.13.0", + "artillery-plugin-fake-data": "1.10.0", + "artillery-plugin-metrics-by-endpoint": "1.13.0", + "artillery-plugin-publish-metrics": "2.24.0", + "artillery-plugin-slack": "1.8.0", "async": "^2.6.4", "aws-sdk": "^2.1338.0", "chalk": "^2.4.2", @@ -14854,30 +14354,30 @@ } }, "node_modules/artillery-engine-playwright": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/artillery-engine-playwright/-/artillery-engine-playwright-1.15.0.tgz", - "integrity": "sha512-OZ9fhp+GFkK5dcZkCCIi41RluskCyhVONA1iA8F0X4a6DUlW50AZ4wgxfSUD4ogaiKkZQjBPWyzOZe0S4bUpGw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/artillery-engine-playwright/-/artillery-engine-playwright-1.16.0.tgz", + "integrity": "sha512-90Gka/neaKABygcWANL/wOrI3U75Xll4yAZmBywQiTONorGL3SIizEEujGXosHLUeOgzc+3OEldP5qXfCynMOg==", "dev": true, "dependencies": { - "@playwright/browser-chromium": "1.45.2", - "@playwright/test": "1.45.2", + "@playwright/browser-chromium": "1.45.3", + "@playwright/test": "1.45.3", "debug": "^4.3.2", - "playwright": "1.45.2" + "playwright": "1.45.3" } }, "node_modules/artillery-plugin-apdex": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/artillery-plugin-apdex/-/artillery-plugin-apdex-1.9.0.tgz", - "integrity": "sha512-tZ7iNvDYess9RXSWhTbTzw6lp6TMeALsxcI7k0K0tWn6iqmyNmQydZcbm6wa6Z1Lx71tFYjEatRoE2RYHYrjqw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/artillery-plugin-apdex/-/artillery-plugin-apdex-1.10.0.tgz", + "integrity": "sha512-TabM/LXhp5n3AKiCXQHl3ivwCuh7QfdV5vjYpT8di32Rd42f9AahFiOIje4aInW9u5S8qNsB78UU3ov084GxwA==", "dev": true, "dependencies": { "tap": "^19.0.2" } }, "node_modules/artillery-plugin-ensure": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/artillery-plugin-ensure/-/artillery-plugin-ensure-1.12.0.tgz", - "integrity": "sha512-zJUn8iIWKGCaNT6NowmGvFNRYGcEzRGkcbdk57bKrCpYUyWSymQTs7j+TBb7cu+8XXaNVTD+pI8AhZtQy41Nog==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/artillery-plugin-ensure/-/artillery-plugin-ensure-1.13.0.tgz", + "integrity": "sha512-/FwOj4a2npaUkNsB+dtHGa5euRqi1ly0mvcqz2UawNia+5SQXVJauL0ue84uQrU0O8ercH/gzsb7cG2/RKYkwg==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -14892,9 +14392,9 @@ "dev": true }, "node_modules/artillery-plugin-expect": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/artillery-plugin-expect/-/artillery-plugin-expect-2.12.0.tgz", - "integrity": "sha512-CfL84q4zP3Uo3YXnVFJFepM6PluxL2Wqawz6OiIonV0FvXx55TopQ+i22JyIMDt9eHNKuDTeJkKDO/JAZoVjPw==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/artillery-plugin-expect/-/artillery-plugin-expect-2.13.0.tgz", + "integrity": "sha512-j7beHovPaR9b4tKxn6gq6QXXK+XXtZ2B6DzX3PERqPcZPA07zSPrTJfzmtbwmnAGvQZYLK5jucQ6H+ZzyimiQg==", "dev": true, "dependencies": { "chalk": "^4.1.2", @@ -14935,27 +14435,27 @@ } }, "node_modules/artillery-plugin-fake-data": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/artillery-plugin-fake-data/-/artillery-plugin-fake-data-1.9.0.tgz", - "integrity": "sha512-tzG08TxvuqZEVVc5QtN5BUM7pmuvLwAUxd1cUvPRB5/CKek9a/wS+Hx8aElK5NpBhywwTiYY1mDL5CdXK9lrjA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/artillery-plugin-fake-data/-/artillery-plugin-fake-data-1.10.0.tgz", + "integrity": "sha512-EQeeiIGJfxpXszn1zH91EyNprblpkME/HuHYloILExTc6My9+tcY5fezd1SEBbQ+jJ4qKB5KJyqQ6RS6HE+oBQ==", "dev": true, "dependencies": { "@ngneat/falso": "^7.1.1" } }, "node_modules/artillery-plugin-metrics-by-endpoint": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/artillery-plugin-metrics-by-endpoint/-/artillery-plugin-metrics-by-endpoint-1.12.0.tgz", - "integrity": "sha512-yz+whnrFROOpA73IfdmkvU7cdOTXspCZGhhSTusp6QT+rWkhh+qcPwS5CF6j8h9ccSNAvhN9M7cVa0HVsc/m8A==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/artillery-plugin-metrics-by-endpoint/-/artillery-plugin-metrics-by-endpoint-1.13.0.tgz", + "integrity": "sha512-1zKp+kIZusPDLIcYE9Yheua5RYekAMNkJr/fQ2odQaeJdSkWyS/gURvroORhYAv41LKRfAvYazW668uUY6WkKA==", "dev": true, "dependencies": { "debug": "^4.3.2" } }, "node_modules/artillery-plugin-publish-metrics": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/artillery-plugin-publish-metrics/-/artillery-plugin-publish-metrics-2.23.0.tgz", - "integrity": "sha512-CJWGgi/3rtbi1xtKRPm3WaN4aA9bjidflT+2Ot4vTmUpawz6DTqsrcfXQ6TuTagb35mISy40E5CtANEJ8VxWvg==", + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/artillery-plugin-publish-metrics/-/artillery-plugin-publish-metrics-2.24.0.tgz", + "integrity": "sha512-7a6vykigjZ5zdk41ma8supGmownU31SdQRD9hxfpKv8gLIOAlTTD25OxnjGmddF4JArhztSAqrPb+J8s/7xXRw==", "dev": true, "dependencies": { "@aws-sdk/client-cloudwatch": "^3.370.0", @@ -14995,9 +14495,9 @@ } }, "node_modules/artillery-plugin-slack": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/artillery-plugin-slack/-/artillery-plugin-slack-1.7.0.tgz", - "integrity": "sha512-whdtsI4MsCiiJ+Ftt2j5bER/a65lMetxR2FqlsHLGFh08BazDU6iWvEqPkLrVKIBdvgAHUPAmxoNjFX2TUiFCA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/artillery-plugin-slack/-/artillery-plugin-slack-1.8.0.tgz", + "integrity": "sha512-BpZZonGQRBZo1oXw0XNx7itoGKlZDClE+SzNt3SDTTFcQuvdPD6FD05Y9hDfSfG3zdEuuc9joAtCuKMmZALaeg==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -15040,6 +14540,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -15050,7 +14551,8 @@ "node_modules/asn1.js/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "node_modules/assert-never": { "version": "1.3.0", @@ -15177,9 +14679,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.19", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", - "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "dev": true, "funding": [ { @@ -15196,11 +14698,11 @@ } ], "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001599", + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -15418,9 +14920,9 @@ "integrity": "sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==" }, "node_modules/axe-core": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz", - "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", + "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", "dev": true, "engines": { "node": ">=4" @@ -16150,7 +15652,8 @@ "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true }, "node_modules/browser-or-node": { "version": "1.3.0", @@ -16762,21 +16265,25 @@ } }, "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", + "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", "dev": true, "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" + "domutils": "^3.1.0", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^9.1.0", + "parse5": "^7.1.2", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^6.19.5", + "whatwg-mimetype": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=18.17" }, "funding": { "url": "https://github.com/cheeriojs/cheerio?sponsor=1" @@ -17658,9 +17165,9 @@ } }, "node_modules/css-blank-pseudo": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-6.0.2.tgz", - "integrity": "sha512-J/6m+lsqpKPqWHOifAFtKFeGLOzw3jR92rxQcwRUfA/eTuZzKfKlxOmYDx2+tqOPQAueNvBiY8WhAeHu5qNmTg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-7.0.0.tgz", + "integrity": "sha512-v9xXYGdm6LIn4iHEfu3egk/PM1g/yJr8uwTIj6E44kurv5dE/4y3QW7WdVmZ0PVnqfTuK+C0ClZcEEiaKWBL9Q==", "dev": true, "funding": [ { @@ -17673,10 +17180,10 @@ } ], "dependencies": { - "postcss-selector-parser": "^6.0.13" + "postcss-selector-parser": "^6.1.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" @@ -17692,9 +17199,9 @@ } }, "node_modules/css-has-pseudo": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-6.0.5.tgz", - "integrity": "sha512-ZTv6RlvJJZKp32jPYnAJVhowDCrRrHUTAxsYSuUPBEDJjzws6neMnzkRblxtgmv1RgcV5dhH2gn7E3wA9Wt6lw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.0.tgz", + "integrity": "sha512-vO6k9bBt4/eEZ2PeHmS2VXjJga5SBy6O1ESyaOkse5/lvp6piFqg8Sh5KTU7X33M7Uh/oqo+M3EeMktQrZoTCQ==", "dev": true, "funding": [ { @@ -17707,17 +17214,39 @@ } ], "dependencies": { - "@csstools/selector-specificity": "^3.1.1", - "postcss-selector-parser": "^6.0.13", + "@csstools/selector-specificity": "^4.0.0", + "postcss-selector-parser": "^6.1.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, + "node_modules/css-has-pseudo/node_modules/@csstools/selector-specificity": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", + "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.1.0" + } + }, "node_modules/css-loader": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", @@ -17759,9 +17288,9 @@ "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==" }, "node_modules/css-prefers-color-scheme": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-9.0.1.tgz", - "integrity": "sha512-iFit06ochwCKPRiWagbTa1OAWCvWWVdEnIFd8BaRrgO8YrrNh4RAWUQTFcYX5tdFZgFl1DJ3iiULchZyEbnF4g==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-10.0.0.tgz", + "integrity": "sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==", "dev": true, "funding": [ { @@ -17774,7 +17303,7 @@ } ], "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" @@ -19066,6 +18595,7 @@ "version": "6.5.6", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.6.tgz", "integrity": "sha512-mpzdtpeCLuS3BmE3pO3Cpp5bbjlOPY2Q0PgoF+Od1XZrHLYI28Xe3ossCmYCQt11FQKEYd9+PF8jymTvtWJSHQ==", + "dev": true, "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -19079,7 +18609,8 @@ "node_modules/elliptic/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, "node_modules/emitter-listener": { "version": "1.1.2", @@ -19138,6 +18669,31 @@ "iconv-lite": "^0.6.2" } }, + "node_modules/encoding-sniffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", + "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", + "dev": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/encoding-sniffer/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/encoding/node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -20067,18 +19623,18 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "28.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.6.0.tgz", - "integrity": "sha512-YG28E1/MIKwnz+e2H7VwYPzHUYU4aMa19w0yGcwXnnmJH6EfgHahTJ2un3IyraUxNfnz/KUhJAFXNNwWPo12tg==", + "version": "28.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.8.0.tgz", + "integrity": "sha512-Tubj1hooFxCl52G4qQu0edzV/+EZzPUeN8p2NnW5uu4fbDs+Yo7+qDVDc4/oG3FbCqEBmu/OC3LSsyiU22oghw==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "^6.0.0 || ^7.0.0" + "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "engines": { "node": "^16.10.0 || ^18.12.0 || >=20.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0", + "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0 || ^8.0.0", "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", "jest": "*" }, @@ -20174,9 +19730,9 @@ } }, "node_modules/eslint-plugin-promise": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.0.0.tgz", - "integrity": "sha512-wb1ECT+b90ndBdAujhIdAU8oQ3Vt5gKqP/t78KOmg0ifynrvc2jGR9f6ndbOVNFpKf6jLUBlBBDF3H3Wk0JICg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.1.0.tgz", + "integrity": "sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -21434,9 +20990,9 @@ } }, "node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", @@ -21575,6 +21131,20 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "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", @@ -22277,6 +21847,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -22312,6 +21883,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -22388,9 +21960,9 @@ } }, "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -22402,8 +21974,8 @@ "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" + "domutils": "^3.1.0", + "entities": "^4.5.0" } }, "node_modules/http-assert": { @@ -22578,9 +22150,9 @@ } }, "node_modules/husky": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.2.tgz", - "integrity": "sha512-1/aDMXZdhr1VdJJTLt6e7BipM0Jd9qkpubPiIplon1WmCeOy3nnzsCMeBqS9AsL5ioonl8F8y/F2CLOmk19/Pw==", + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.4.tgz", + "integrity": "sha512-bho94YyReb4JV7LYWRWxZ/xr6TtOTt8cMfmQ39MQYJ7f/YE268s3GdghGwi+y4zAeqewE5zYLvuhV0M0ijsDEA==", "dev": true, "bin": { "husky": "bin.js" @@ -25687,16 +25259,6 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/jwk-to-pem": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/jwk-to-pem/-/jwk-to-pem-2.0.5.tgz", - "integrity": "sha512-L90jwellhO8jRKYwbssU9ifaMVqajzj3fpRjDKcsDzrslU9syRbFqfkXtT4B89HYAap+xsxNcxgBSB09ig+a7A==", - "dependencies": { - "asn1.js": "^5.3.0", - "elliptic": "^6.5.4", - "safe-buffer": "^5.0.1" - } - }, "node_modules/jws": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", @@ -25987,26 +25549,6 @@ "lightningcss-win32-x64-msvc": "1.25.1" } }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.25.1.tgz", - "integrity": "sha512-dYWuCzzfqRueDSmto6YU5SoGHvZTMU1Em9xvhcdROpmtOQLorurUZz8+xFxZ51lCO2LnYbfdjZ/gCqWEkwixNg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/lightningcss/node_modules/detect-libc": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", @@ -26088,21 +25630,21 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/lint-staged": { - "version": "15.2.7", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.7.tgz", - "integrity": "sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==", + "version": "15.2.8", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.8.tgz", + "integrity": "sha512-PUWFf2zQzsd9EFU+kM1d7UP+AZDbKFKuj+9JNVTBkhUFhbg4MAt6WfyMMwBfM4lYqd4D2Jwac5iuTu9rVj4zCQ==", "dev": true, "dependencies": { "chalk": "~5.3.0", "commander": "~12.1.0", - "debug": "~4.3.4", + "debug": "~4.3.6", "execa": "~8.0.1", - "lilconfig": "~3.1.1", - "listr2": "~8.2.1", + "lilconfig": "~3.1.2", + "listr2": "~8.2.4", "micromatch": "~4.0.7", "pidtree": "~0.6.0", "string-argv": "~0.3.2", - "yaml": "~2.4.2" + "yaml": "~2.5.0" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -26940,9 +26482,9 @@ } }, "node_modules/luxon": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", - "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", + "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", "engines": { "node": ">=12" } @@ -27262,12 +26804,14 @@ "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true }, "node_modules/minimatch": { "version": "9.0.5", @@ -29065,6 +28609,18 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "dev": true, + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -29503,12 +29059,12 @@ } }, "node_modules/playwright": { - "version": "1.45.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.45.2.tgz", - "integrity": "sha512-ReywF2t/0teRvNBpfIgh5e4wnrI/8Su8ssdo5XsQKpjxJj+jspm00jSoz9BTg91TT0c9HRjXO7LBNVrgYj9X0g==", + "version": "1.45.3", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.45.3.tgz", + "integrity": "sha512-QhVaS+lpluxCaioejDZ95l4Y4jSFCsBvl2UZkpeXlzxmqS+aABr5c82YmfMHrL6x27nvrvykJAFpkzT2eWdJww==", "dev": true, "dependencies": { - "playwright-core": "1.45.2" + "playwright-core": "1.45.3" }, "bin": { "playwright": "cli.js" @@ -29521,9 +29077,9 @@ } }, "node_modules/playwright-core": { - "version": "1.45.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.45.2.tgz", - "integrity": "sha512-ha175tAWb0dTK0X4orvBIqi3jGEt701SMxMhyujxNrgd8K0Uy5wMSwwcQHtyB4om7INUkfndx02XnQ2p6dvLDw==", + "version": "1.45.3", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.45.3.tgz", + "integrity": "sha512-+ym0jNbcjikaOwwSZycFbwkWgfruWvYlJfThKYAlImbxUgdWFO2oW70ojPm4OpE4t6TAo2FY/smM+hpVTtkhDA==", "dev": true, "bin": { "playwright-core": "cli.js" @@ -29562,9 +29118,9 @@ } }, "node_modules/postcss": { - "version": "8.4.40", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz", - "integrity": "sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==", + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", "dev": true, "funding": [ { @@ -29590,9 +29146,9 @@ } }, "node_modules/postcss-attribute-case-insensitive": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-6.0.3.tgz", - "integrity": "sha512-KHkmCILThWBRtg+Jn1owTnHPnFit4OkqS+eKiGEOPIGke54DCeYGJ6r0Fx/HjfE9M9kznApCLcU0DvnPchazMQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-7.0.0.tgz", + "integrity": "sha512-ETMUHIw67Kyv9Q81nden/NuJbRh+4/S963giXpfSLd5eaKK8kd1UdAHMVRV/NG/w/N6Cq8B0qZIZbZZWU/67+A==", "dev": true, "funding": [ { @@ -29605,10 +29161,10 @@ } ], "dependencies": { - "postcss-selector-parser": "^6.0.13" + "postcss-selector-parser": "^6.1.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" @@ -29630,9 +29186,9 @@ } }, "node_modules/postcss-color-functional-notation": { - "version": "6.0.14", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-6.0.14.tgz", - "integrity": "sha512-dNUX+UH4dAozZ8uMHZ3CtCNYw8fyFAmqqdcyxMr7PEdM9jLXV19YscoYO0F25KqZYhmtWKQ+4tKrIZQrwzwg7A==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.1.tgz", + "integrity": "sha512-8/wf01pTH3XHT37wre+E2GNcsttZ62PWSJ0DE66GO+Uzk+uyr9DH+V3cdJG+BqezCD/T5lBC1s5/t7Y12ps8QQ==", "dev": true, "funding": [ { @@ -29645,23 +29201,114 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^2.0.4", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/postcss-progressive-custom-properties": "^3.3.0", - "@csstools/utilities": "^1.0.0" + "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, + "node_modules/postcss-color-functional-notation/node_modules/@csstools/css-calc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.0.tgz", + "integrity": "sha512-fxPxNrEVGeej4F35Xt69Q7gPMKa7oEGNxeP1DpA01sWpTF3Yhgux/0slVX3jLHd7dhlszeQlNAUhpAorVxoHdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/postcss-color-functional-notation/node_modules/@csstools/css-color-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.1.tgz", + "integrity": "sha512-++7I+Z7S/BWedPlR4z8aW1zsvtJFufFbpdPwdx5+W50dq5EYLV3sulitSNMry0BNmNMzeczdQij/f4C+ch01vQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/postcss-color-functional-notation/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/postcss-color-functional-notation/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, "node_modules/postcss-color-hex-alpha": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-9.0.4.tgz", - "integrity": "sha512-XQZm4q4fNFqVCYMGPiBjcqDhuG7Ey2xrl99AnDJMyr5eDASsAGalndVgHZF8i97VFNy1GQeZc4q2ydagGmhelQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-10.0.0.tgz", + "integrity": "sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==", "dev": true, "funding": [ { @@ -29674,20 +29321,20 @@ } ], "dependencies": { - "@csstools/utilities": "^1.0.0", + "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/postcss-color-rebeccapurple": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-9.0.3.tgz", - "integrity": "sha512-ruBqzEFDYHrcVq3FnW3XHgwRqVMrtEPLBtD7K2YmsLKVc2jbkxzzNEctJKsPCpDZ+LeMHLKRDoSShVefGc+CkQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-10.0.0.tgz", + "integrity": "sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==", "dev": true, "funding": [ { @@ -29700,20 +29347,20 @@ } ], "dependencies": { - "@csstools/utilities": "^1.0.0", + "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/postcss-custom-media": { - "version": "10.0.8", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-10.0.8.tgz", - "integrity": "sha512-V1KgPcmvlGdxTel4/CyQtBJEFhMVpEmRGFrnVtgfGIHj5PJX9vO36eFBxKBeJn+aCDTed70cc+98Mz3J/uVdGQ==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.0.tgz", + "integrity": "sha512-tZ4qTYSOqH7YFi8psEQB2v2zBRbbJex9FgPef2Qss8DlWxnYpBNHquvMmVBR8uIt6hW0+prDsg7UJDp6XLIf8w==", "dev": true, "funding": [ { @@ -29726,22 +29373,109 @@ } ], "dependencies": { - "@csstools/cascade-layer-name-parser": "^1.0.13", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/media-query-list-parser": "^2.1.13" + "@csstools/cascade-layer-name-parser": "^2.0.0", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/media-query-list-parser": "^3.0.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, + "node_modules/postcss-custom-media/node_modules/@csstools/cascade-layer-name-parser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.0.tgz", + "integrity": "sha512-9GEQIvTMrjXfYaVnw1+FteDX5yF65CZq4ttYP75O3CANQevaCJ9jVVTiZt9YTpjYIk8C1mmf52y2S4Hr/CaE/g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/postcss-custom-media/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/postcss-custom-media/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/postcss-custom-media/node_modules/@csstools/media-query-list-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.0.tgz", + "integrity": "sha512-W0JlkUFwXjo703wt06AcaWuUcS+6x6IEDyxV6W65Sw+vLCYp+uPsrps+PXTiIfN0V1Pqj5snPzN7EYLmbz1zjg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, "node_modules/postcss-custom-properties": { - "version": "13.3.12", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.3.12.tgz", - "integrity": "sha512-oPn/OVqONB2ZLNqN185LDyaVByELAA/u3l2CS2TS16x2j2XsmV4kd8U49+TMxmUsEU9d8fB/I10E6U7kB0L1BA==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.0.tgz", + "integrity": "sha512-GD/suWYQAplXJujsyOswYP+oX9xs29eBNwGloPj4Ub+3/Rq1Set+ZeGmHJfN2Y2+x9vUxAX4eeNJFmtk6VBv4A==", "dev": true, "funding": [ { @@ -29754,23 +29488,87 @@ } ], "dependencies": { - "@csstools/cascade-layer-name-parser": "^1.0.13", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/utilities": "^1.0.0", + "@csstools/cascade-layer-name-parser": "^2.0.0", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, + "node_modules/postcss-custom-properties/node_modules/@csstools/cascade-layer-name-parser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.0.tgz", + "integrity": "sha512-9GEQIvTMrjXfYaVnw1+FteDX5yF65CZq4ttYP75O3CANQevaCJ9jVVTiZt9YTpjYIk8C1mmf52y2S4Hr/CaE/g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/postcss-custom-properties/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/postcss-custom-properties/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, "node_modules/postcss-custom-selectors": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-7.1.12.tgz", - "integrity": "sha512-ctIoprBMJwByYMGjXG0F7IT2iMF2hnamQ+aWZETyBM0aAlyaYdVZTeUkk8RB+9h9wP+NdN3f01lfvKl2ZSqC0g==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.0.tgz", + "integrity": "sha512-nW6RWjH+jaWvXEgm/AzMhtVjMXcKmrTWsM/eJn/ujnJI5uEOPTxvl3eCFFCFKC2DiZcOP5HLH5EeX0DIemFzBQ==", "dev": true, "funding": [ { @@ -29783,22 +29581,86 @@ } ], "dependencies": { - "@csstools/cascade-layer-name-parser": "^1.0.13", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", + "@csstools/cascade-layer-name-parser": "^2.0.0", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", "postcss-selector-parser": "^6.1.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, + "node_modules/postcss-custom-selectors/node_modules/@csstools/cascade-layer-name-parser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.0.tgz", + "integrity": "sha512-9GEQIvTMrjXfYaVnw1+FteDX5yF65CZq4ttYP75O3CANQevaCJ9jVVTiZt9YTpjYIk8C1mmf52y2S4Hr/CaE/g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/postcss-custom-selectors/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/postcss-custom-selectors/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, "node_modules/postcss-dir-pseudo-class": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-8.0.1.tgz", - "integrity": "sha512-uULohfWBBVoFiZXgsQA24JV6FdKIidQ+ZqxOouhWwdE+qJlALbkS5ScB43ZTjPK+xUZZhlaO/NjfCt5h4IKUfw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.0.tgz", + "integrity": "sha512-T59BG9lURiXmhcJMyKbyjNAK3KCyEQYEhaz9GAETHXfIy9XbGQeyz+H0zIwRJlrP4KKRPJolNYe3QjQPemMjBA==", "dev": true, "funding": [ { @@ -29811,19 +29673,19 @@ } ], "dependencies": { - "postcss-selector-parser": "^6.0.13" + "postcss-selector-parser": "^6.1.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/postcss-double-position-gradients": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-5.0.7.tgz", - "integrity": "sha512-1xEhjV9u1s4l3iP5lRt1zvMjI/ya8492o9l/ivcxHhkO3nOz16moC4JpMxDUGrOs4R3hX+KWT7gKoV842cwRgg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.0.tgz", + "integrity": "sha512-JkIGah3RVbdSEIrcobqj4Gzq0h53GG4uqDPsho88SgY84WnpkTpI0k50MFK/sX7XqVisZ6OqUfFnoUO6m1WWdg==", "dev": true, "funding": [ { @@ -29836,21 +29698,21 @@ } ], "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^3.3.0", - "@csstools/utilities": "^1.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/postcss-focus-visible": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-9.0.1.tgz", - "integrity": "sha512-N2VQ5uPz3Z9ZcqI5tmeholn4d+1H14fKXszpjogZIrFbhaq0zNAtq8sAnw6VLiqGbL8YBzsnu7K9bBkTqaRimQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-10.0.0.tgz", + "integrity": "sha512-GJjzvTj7JY+zN7wVBQ4osdKX53QLUdr6r2rSEkBUqrEMDKu3fHMHKOY9rirdirbHCx3IETnK25EtpPARR2KWNw==", "dev": true, "funding": [ { @@ -29863,19 +29725,19 @@ } ], "dependencies": { - "postcss-selector-parser": "^6.0.13" + "postcss-selector-parser": "^6.1.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/postcss-focus-within": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-8.0.1.tgz", - "integrity": "sha512-NFU3xcY/xwNaapVb+1uJ4n23XImoC86JNwkY/uduytSl2s9Ekc2EpzmRR63+ExitnW3Mab3Fba/wRPCT5oDILA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-9.0.0.tgz", + "integrity": "sha512-QwflAWUToNZvQLGbc4qJhrQO8yZ5617L6hSNzNWDoqRX4FoIh9fbJbEjy0nvFPciaaOoCaeqcxBwYPbFU0HvBw==", "dev": true, "funding": [ { @@ -29888,10 +29750,10 @@ } ], "dependencies": { - "postcss-selector-parser": "^6.0.13" + "postcss-selector-parser": "^6.1.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" @@ -29907,9 +29769,9 @@ } }, "node_modules/postcss-gap-properties": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-5.0.1.tgz", - "integrity": "sha512-k2z9Cnngc24c0KF4MtMuDdToROYqGMMUQGcE6V0odwjHyOHtaDBlLeRBV70y9/vF7KIbShrTRZ70JjsI1BZyWw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-6.0.0.tgz", + "integrity": "sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==", "dev": true, "funding": [ { @@ -29922,16 +29784,16 @@ } ], "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/postcss-image-set-function": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-6.0.3.tgz", - "integrity": "sha512-i2bXrBYzfbRzFnm+pVuxVePSTCRiNmlfssGI4H0tJQvDue+yywXwUxe68VyzXs7cGtMaH6MCLY6IbCShrSroCw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-7.0.0.tgz", + "integrity": "sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==", "dev": true, "funding": [ { @@ -29944,20 +29806,20 @@ } ], "dependencies": { - "@csstools/utilities": "^1.0.0", + "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/postcss-lab-function": { - "version": "6.0.19", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-6.0.19.tgz", - "integrity": "sha512-vwln/mgvFrotJuGV8GFhpAOu9iGf3pvTBr6dLPDmUcqVD5OsQpEFyQMAFTxSxWXGEzBj6ld4pZ/9GDfEpXvo0g==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.1.tgz", + "integrity": "sha512-G9ecsdU+TtdHJvaTrfbIyOa3iHHJMZXdvsLXJSN8IP4cfg3XraozacAt6P7xzaILIC3XPGMM149oKhf2tjPubg==", "dev": true, "funding": [ { @@ -29970,19 +29832,110 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^2.0.4", - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/postcss-progressive-custom-properties": "^3.3.0", - "@csstools/utilities": "^1.0.0" + "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, + "node_modules/postcss-lab-function/node_modules/@csstools/css-calc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.0.tgz", + "integrity": "sha512-fxPxNrEVGeej4F35Xt69Q7gPMKa7oEGNxeP1DpA01sWpTF3Yhgux/0slVX3jLHd7dhlszeQlNAUhpAorVxoHdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/postcss-lab-function/node_modules/@csstools/css-color-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.1.tgz", + "integrity": "sha512-++7I+Z7S/BWedPlR4z8aW1zsvtJFufFbpdPwdx5+W50dq5EYLV3sulitSNMry0BNmNMzeczdQij/f4C+ch01vQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/postcss-lab-function/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/postcss-lab-function/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, "node_modules/postcss-loader": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", @@ -30015,9 +29968,9 @@ } }, "node_modules/postcss-logical": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-7.0.1.tgz", - "integrity": "sha512-8GwUQZE0ri0K0HJHkDv87XOLC8DE0msc+HoWLeKdtjDZEwpZ5xuK3QdV6FhmHSQW40LPkg43QzvATRAI3LsRkg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.0.0.tgz", + "integrity": "sha512-HpIdsdieClTjXLOyYdUPAX/XQASNIwdKt5hoZW08ZOAiI+tbV0ta1oclkpVkW5ANU+xJvk3KkA0FejkjGLXUkg==", "dev": true, "funding": [ { @@ -30033,7 +29986,7 @@ "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" @@ -30105,9 +30058,9 @@ } }, "node_modules/postcss-nesting": { - "version": "12.1.5", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.1.5.tgz", - "integrity": "sha512-N1NgI1PDCiAGWPTYrwqm8wpjv0bgDmkYHH72pNsqTCv9CObxjxftdYu6AKtGN+pnJa7FQjMm3v4sp8QJbFsYdQ==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.0.tgz", + "integrity": "sha512-TCGQOizyqvEkdeTPM+t6NYwJ3EJszYE/8t8ILxw/YoeUvz2rz7aM8XTAmBWh9/DJjfaaabL88fWrsVHSPF2zgA==", "dev": true, "funding": [ { @@ -30120,17 +30073,39 @@ } ], "dependencies": { - "@csstools/selector-resolve-nested": "^1.1.0", - "@csstools/selector-specificity": "^3.1.1", + "@csstools/selector-resolve-nested": "^2.0.0", + "@csstools/selector-specificity": "^4.0.0", "postcss-selector-parser": "^6.1.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", + "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.1.0" + } + }, "node_modules/postcss-opacity-percentage": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-2.0.0.tgz", @@ -30154,9 +30129,9 @@ } }, "node_modules/postcss-overflow-shorthand": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-5.0.1.tgz", - "integrity": "sha512-XzjBYKLd1t6vHsaokMV9URBt2EwC9a7nDhpQpjoPk2HRTSQfokPfyAS/Q7AOrzUu6q+vp/GnrDBGuj/FCaRqrQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-6.0.0.tgz", + "integrity": "sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==", "dev": true, "funding": [ { @@ -30172,7 +30147,7 @@ "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" @@ -30188,9 +30163,9 @@ } }, "node_modules/postcss-place": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-9.0.1.tgz", - "integrity": "sha512-JfL+paQOgRQRMoYFc2f73pGuG/Aw3tt4vYMR6UA3cWVMxivviPTnMFnFTczUJOA4K2Zga6xgQVE+PcLs64WC8Q==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-10.0.0.tgz", + "integrity": "sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==", "dev": true, "funding": [ { @@ -30206,16 +30181,16 @@ "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/postcss-preset-env": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-9.6.0.tgz", - "integrity": "sha512-Lxfk4RYjUdwPCYkc321QMdgtdCP34AeI94z+/8kVmqnTIlD4bMRQeGcMZgwz8BxHrzQiFXYIR5d7k/9JMs2MEA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.0.0.tgz", + "integrity": "sha512-zoLkIGK30hkLhHVD6jNqcO6gDVDzyo10s42XG++Gsy9z6gk1X/UpI2Zn28ylGD9VnQSSdQMzuk535rRq2JmWkg==", "dev": true, "funding": [ { @@ -30228,79 +30203,79 @@ } ], "dependencies": { - "@csstools/postcss-cascade-layers": "^4.0.6", - "@csstools/postcss-color-function": "^3.0.19", - "@csstools/postcss-color-mix-function": "^2.0.19", - "@csstools/postcss-content-alt-text": "^1.0.0", - "@csstools/postcss-exponential-functions": "^1.0.9", - "@csstools/postcss-font-format-keywords": "^3.0.2", - "@csstools/postcss-gamut-mapping": "^1.0.11", - "@csstools/postcss-gradients-interpolation-method": "^4.0.20", - "@csstools/postcss-hwb-function": "^3.0.18", - "@csstools/postcss-ic-unit": "^3.0.7", - "@csstools/postcss-initial": "^1.0.1", - "@csstools/postcss-is-pseudo-class": "^4.0.8", - "@csstools/postcss-light-dark-function": "^1.0.8", - "@csstools/postcss-logical-float-and-clear": "^2.0.1", - "@csstools/postcss-logical-overflow": "^1.0.1", - "@csstools/postcss-logical-overscroll-behavior": "^1.0.1", - "@csstools/postcss-logical-resize": "^2.0.1", - "@csstools/postcss-logical-viewport-units": "^2.0.11", - "@csstools/postcss-media-minmax": "^1.1.8", - "@csstools/postcss-media-queries-aspect-ratio-number-values": "^2.0.11", - "@csstools/postcss-nested-calc": "^3.0.2", - "@csstools/postcss-normalize-display-values": "^3.0.2", - "@csstools/postcss-oklab-function": "^3.0.19", - "@csstools/postcss-progressive-custom-properties": "^3.3.0", - "@csstools/postcss-relative-color-syntax": "^2.0.19", - "@csstools/postcss-scope-pseudo-class": "^3.0.1", - "@csstools/postcss-stepped-value-functions": "^3.0.10", - "@csstools/postcss-text-decoration-shorthand": "^3.0.7", - "@csstools/postcss-trigonometric-functions": "^3.0.10", - "@csstools/postcss-unset-value": "^3.0.1", + "@csstools/postcss-cascade-layers": "^5.0.0", + "@csstools/postcss-color-function": "^4.0.0", + "@csstools/postcss-color-mix-function": "^3.0.0", + "@csstools/postcss-content-alt-text": "^2.0.0", + "@csstools/postcss-exponential-functions": "^2.0.0", + "@csstools/postcss-font-format-keywords": "^4.0.0", + "@csstools/postcss-gamut-mapping": "^2.0.0", + "@csstools/postcss-gradients-interpolation-method": "^5.0.0", + "@csstools/postcss-hwb-function": "^4.0.0", + "@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.0", + "@csstools/postcss-logical-float-and-clear": "^3.0.0", + "@csstools/postcss-logical-overflow": "^2.0.0", + "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", + "@csstools/postcss-logical-resize": "^3.0.0", + "@csstools/postcss-logical-viewport-units": "^3.0.0", + "@csstools/postcss-media-minmax": "^2.0.0", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.0", + "@csstools/postcss-nested-calc": "^4.0.0", + "@csstools/postcss-normalize-display-values": "^4.0.0", + "@csstools/postcss-oklab-function": "^4.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/postcss-relative-color-syntax": "^3.0.0", + "@csstools/postcss-scope-pseudo-class": "^4.0.0", + "@csstools/postcss-stepped-value-functions": "^4.0.0", + "@csstools/postcss-text-decoration-shorthand": "^4.0.0", + "@csstools/postcss-trigonometric-functions": "^4.0.0", + "@csstools/postcss-unset-value": "^4.0.0", "autoprefixer": "^10.4.19", "browserslist": "^4.23.1", - "css-blank-pseudo": "^6.0.2", - "css-has-pseudo": "^6.0.5", - "css-prefers-color-scheme": "^9.0.1", + "css-blank-pseudo": "^7.0.0", + "css-has-pseudo": "^7.0.0", + "css-prefers-color-scheme": "^10.0.0", "cssdb": "^8.1.0", - "postcss-attribute-case-insensitive": "^6.0.3", + "postcss-attribute-case-insensitive": "^7.0.0", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^6.0.14", - "postcss-color-hex-alpha": "^9.0.4", - "postcss-color-rebeccapurple": "^9.0.3", - "postcss-custom-media": "^10.0.8", - "postcss-custom-properties": "^13.3.12", - "postcss-custom-selectors": "^7.1.12", - "postcss-dir-pseudo-class": "^8.0.1", - "postcss-double-position-gradients": "^5.0.7", - "postcss-focus-visible": "^9.0.1", - "postcss-focus-within": "^8.0.1", + "postcss-color-functional-notation": "^7.0.0", + "postcss-color-hex-alpha": "^10.0.0", + "postcss-color-rebeccapurple": "^10.0.0", + "postcss-custom-media": "^11.0.0", + "postcss-custom-properties": "^14.0.0", + "postcss-custom-selectors": "^8.0.0", + "postcss-dir-pseudo-class": "^9.0.0", + "postcss-double-position-gradients": "^6.0.0", + "postcss-focus-visible": "^10.0.0", + "postcss-focus-within": "^9.0.0", "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^5.0.1", - "postcss-image-set-function": "^6.0.3", - "postcss-lab-function": "^6.0.19", - "postcss-logical": "^7.0.1", - "postcss-nesting": "^12.1.5", + "postcss-gap-properties": "^6.0.0", + "postcss-image-set-function": "^7.0.0", + "postcss-lab-function": "^7.0.0", + "postcss-logical": "^8.0.0", + "postcss-nesting": "^13.0.0", "postcss-opacity-percentage": "^2.0.0", - "postcss-overflow-shorthand": "^5.0.1", + "postcss-overflow-shorthand": "^6.0.0", "postcss-page-break": "^3.0.4", - "postcss-place": "^9.0.1", - "postcss-pseudo-class-any-link": "^9.0.2", + "postcss-place": "^10.0.0", + "postcss-pseudo-class-any-link": "^10.0.0", "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^7.0.2" + "postcss-selector-not": "^8.0.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/postcss-pseudo-class-any-link": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-9.0.2.tgz", - "integrity": "sha512-HFSsxIqQ9nA27ahyfH37cRWGk3SYyQLpk0LiWw/UGMV4VKT5YG2ONee4Pz/oFesnK0dn2AjcyequDbIjKJgB0g==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-10.0.0.tgz", + "integrity": "sha512-bde8VE08Gq3ekKDq2BQ0ESOjNX54lrFDK3U9zABPINaqHblbZL/4Wfo5Y2vk6U64yVd/sjDwTzuiisFBpGNNIQ==", "dev": true, "funding": [ { @@ -30313,10 +30288,10 @@ } ], "dependencies": { - "postcss-selector-parser": "^6.0.13" + "postcss-selector-parser": "^6.1.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" @@ -30390,9 +30365,9 @@ } }, "node_modules/postcss-selector-not": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-7.0.2.tgz", - "integrity": "sha512-/SSxf/90Obye49VZIfc0ls4H0P6i6V1iHv0pzZH8SdgvZOPFkF37ef1r5cyWcMflJSFJ5bfuoluTnFnBBFiuSA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-8.0.0.tgz", + "integrity": "sha512-g/juh7A83GWc3+kWL8BiS3YUIJb3XNqIVKz1kGvgN3OhoGCsPncy1qo/+q61tjy5r87OxBhSY1+hcH3yOhEW+g==", "dev": true, "funding": [ { @@ -30405,10 +30380,10 @@ } ], "dependencies": { - "postcss-selector-parser": "^6.0.13" + "postcss-selector-parser": "^6.1.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { "postcss": "^8.4" @@ -31189,9 +31164,9 @@ } }, "node_modules/qs": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.3.tgz", - "integrity": "sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { "side-channel": "^1.0.6" }, @@ -32443,26 +32418,6 @@ "sass-embedded-win32-x64": "1.77.8" } }, - "node_modules/sass-embedded-darwin-x64": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.77.8.tgz", - "integrity": "sha512-/VWZQtcWIOek60Zj6Sxk6HebXA1Qyyt3sD8o5qwbTgZnKitB1iEBuNunyGoAgMNeUz2PRd6rVki6hvbas9hQ6w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/sass-embedded/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -32480,9 +32435,9 @@ } }, "node_modules/sass-loader": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-15.0.0.tgz", - "integrity": "sha512-mbXAL7sI/fgt3skXR6xHxtKkaGyxRrGf7zrU4hLLWxBDJEcAe0QsoNy92qKttCb3zfMniTkU2kD9yakUKtW7vQ==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.0.tgz", + "integrity": "sha512-n13Z+3rU9A177dk4888czcVFiC8CL9dii4qpXWUg3YIIgZEvi9TCFKjOQcbK0kJM7DJu9VucrZFddvNfYCPwtw==", "dev": true, "dependencies": { "neo-async": "^2.6.2" @@ -33300,6 +33255,16 @@ "node": ">= 0.4" } }, + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "dev": true, + "engines": { + "node": ">=4", + "npm": ">=6" + } + }, "node_modules/stormdb": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/stormdb/-/stormdb-0.5.2.tgz", @@ -33616,9 +33581,9 @@ } }, "node_modules/stylelint": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.7.0.tgz", - "integrity": "sha512-Q1ATiXlz+wYr37a7TGsfvqYn2nSR3T/isw3IWlZQzFzCNoACHuGBb6xBplZXz56/uDRJHIygxjh7jbV/8isewA==", + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.8.1.tgz", + "integrity": "sha512-O8aDyfdODSDNz/B3gW2HQ+8kv8pfhSu7ZR7xskQ93+vI6FhKKGUJMQ03Ydu+w3OvXXE0/u4hWU4hCPNOyld+OA==", "dev": true, "funding": [ { @@ -33641,7 +33606,7 @@ "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.2", "css-tree": "^2.3.1", - "debug": "^4.3.5", + "debug": "^4.3.6", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", "file-entry-cache": "^9.0.0", @@ -33658,10 +33623,10 @@ "micromatch": "^4.0.7", "normalize-path": "^3.0.0", "picocolors": "^1.0.1", - "postcss": "^8.4.39", - "postcss-resolve-nested-selector": "^0.1.1", + "postcss": "^8.4.40", + "postcss-resolve-nested-selector": "^0.1.4", "postcss-safe-parser": "^7.0.0", - "postcss-selector-parser": "^6.1.0", + "postcss-selector-parser": "^6.1.1", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", @@ -34758,21 +34723,21 @@ } }, "node_modules/tldts": { - "version": "6.1.38", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.38.tgz", - "integrity": "sha512-1onihAOxYDzhsQXl9XMlDQSjdIgMAz3ugom3BdS4K71GbHmNmrRSR5PYFYIBoE4QBB0v1dPqj47D3o/2C9M+KQ==", + "version": "6.1.39", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.39.tgz", + "integrity": "sha512-UCGXcPhYIUELc+FifEeDXYkoTWNU6iOEdM/Q5LsvkTz2SnpQ3q5onA+DiiZlR5YDskMhfK1YBQDeWL7PH9/miQ==", "dev": true, "dependencies": { - "tldts-core": "^6.1.38" + "tldts-core": "^6.1.39" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "6.1.38", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.38.tgz", - "integrity": "sha512-TKmqyzXCha5k3WFSIW0ofB7W8BkUe1euZ1z9rZLckai5JxqndBt8CuWfusU9EB1qS5ycS+k9zf6Zs0bucKRDkg==", + "version": "6.1.39", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.39.tgz", + "integrity": "sha512-+Qib8VaRq6F56UjP4CJXd30PI4s3hFumDywUlsbiEWoA8+lfAaWNTLr3e6/zZOgHzVyon4snHaybeFHd8C0j/A==", "dev": true }, "node_modules/tmp": { @@ -34917,9 +34882,9 @@ } }, "node_modules/ts-jest": { - "version": "29.2.3", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.3.tgz", - "integrity": "sha512-yCcfVdiBFngVz9/keHin9EnsrQtQtEu3nRykNy9RVp+FiPFFbPJ3Sg6Qg4+TkmH0vMP5qsTKgXSsk80HRwvdgQ==", + "version": "29.2.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.4.tgz", + "integrity": "sha512-3d6tgDyhCI29HlpwIq87sNuI+3Q6GLTTCeYRHCs7vDz+/3GCMwEtV9jezLyl4ZtnBgx00I7hm8PCP8cTksMGrw==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -35439,6 +35404,15 @@ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", "dev": true }, + "node_modules/undici": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.7.tgz", + "integrity": "sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==", + "dev": true, + "engines": { + "node": ">=18.17" + } + }, "node_modules/undici-types": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", @@ -36198,9 +36172,9 @@ } }, "node_modules/winston": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.13.1.tgz", - "integrity": "sha512-SvZit7VFNvXRzbqGHsv5KSmgbEYR5EiQfDAL9gxYkRqa934Hnk++zze0wANKtMHcy/gI4W/3xmSDwlhf865WGw==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.14.1.tgz", + "integrity": "sha512-CJi4Il/msz8HkdDfXOMu+r5Au/oyEjFiOZzbX2d23hRLY0narGjqfE5lFlrT5hfYJhPtM8b85/GNFsxIML/RVA==", "dependencies": { "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", @@ -36415,9 +36389,9 @@ "dev": true }, "node_modules/yaml": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", - "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", "dev": true, "bin": { "yaml": "bin.mjs" diff --git a/package.json b/package.json index a6111a8b83b..6757c236710 100644 --- a/package.json +++ b/package.json @@ -11,34 +11,34 @@ "dependencies": { "@18f/us-federal-holidays": "4.0.0", "@aws-crypto/sha256-browser": "5.2.0", - "@aws-sdk/client-api-gateway": "3.623.0", - "@aws-sdk/client-apigatewaymanagementapi": "3.623.0", - "@aws-sdk/client-apigatewayv2": "3.623.0", - "@aws-sdk/client-cloudfront": "3.623.0", - "@aws-sdk/client-cloudwatch": "3.623.0", - "@aws-sdk/client-cloudwatch-logs": "3.616.0", - "@aws-sdk/client-cognito-identity-provider": "3.616.0", - "@aws-sdk/client-dynamodb": "3.619.0", - "@aws-sdk/client-dynamodb-streams": "3.616.0", - "@aws-sdk/client-glue": "3.623.0", - "@aws-sdk/client-lambda": "3.623.0", - "@aws-sdk/client-opensearch": "3.623.0", - "@aws-sdk/client-route-53": "3.623.0", - "@aws-sdk/client-s3": "3.623.0", - "@aws-sdk/client-ses": "3.623.0", - "@aws-sdk/client-sns": "3.623.0", - "@aws-sdk/client-sqs": "3.623.0", - "@aws-sdk/client-ssm": "3.623.0", + "@aws-sdk/client-api-gateway": "3.624.0", + "@aws-sdk/client-apigatewaymanagementapi": "3.624.0", + "@aws-sdk/client-apigatewayv2": "3.624.0", + "@aws-sdk/client-cloudfront": "3.624.0", + "@aws-sdk/client-cloudwatch": "3.624.0", + "@aws-sdk/client-cloudwatch-logs": "3.624.0", + "@aws-sdk/client-cognito-identity-provider": "3.628.0", + "@aws-sdk/client-dynamodb": "3.624.0", + "@aws-sdk/client-dynamodb-streams": "3.624.0", + "@aws-sdk/client-glue": "3.627.0", + "@aws-sdk/client-lambda": "3.624.0", + "@aws-sdk/client-opensearch": "3.624.0", + "@aws-sdk/client-route-53": "3.624.0", + "@aws-sdk/client-s3": "3.627.0", + "@aws-sdk/client-ses": "3.624.0", + "@aws-sdk/client-sns": "3.624.0", + "@aws-sdk/client-sqs": "3.624.0", + "@aws-sdk/client-ssm": "3.624.0", "@aws-sdk/cloudfront-signer": "3.621.0", - "@aws-sdk/credential-provider-node": "3.623.0", - "@aws-sdk/lib-dynamodb": "3.619.0", - "@aws-sdk/lib-storage": "3.623.0", + "@aws-sdk/credential-provider-node": "3.624.0", + "@aws-sdk/lib-dynamodb": "3.624.0", + "@aws-sdk/lib-storage": "3.627.0", "@aws-sdk/node-http-handler": "3.374.0", "@aws-sdk/protocol-http": "3.374.0", - "@aws-sdk/s3-presigned-post": "3.623.0", - "@aws-sdk/s3-request-presigner": "3.623.0", + "@aws-sdk/s3-presigned-post": "3.627.0", + "@aws-sdk/s3-request-presigner": "3.627.0", "@aws-sdk/signature-v4": "3.374.0", - "@aws-sdk/util-dynamodb": "3.619.0", + "@aws-sdk/util-dynamodb": "3.624.0", "@cerebral/react": "4.2.1", "@fortawesome/fontawesome-svg-core": "1.2.36", "@fortawesome/free-regular-svg-icons": "5.15.4", @@ -69,10 +69,9 @@ "image-blob-reduce": "4.1.0", "joi": "17.13.3", "jsonwebtoken": "9.0.2", - "jwk-to-pem": "2.0.5", "lodash": "4.17.21", "logform": "2.6.1", - "luxon": "3.4.4", + "luxon": "3.5.0", "moize": "6.1.6", "parse-full-name": "1.2.6", "pdf-lib": "1.17.1", @@ -80,7 +79,7 @@ "process": "0.11.10", "promise-retry": "2.0.1", "pug": "3.0.3", - "qs": "6.12.3", + "qs": "6.13.0", "quill-delta-to-html": "0.12.1", "react": "18.3.1", "react-dom": "18.3.1", @@ -99,7 +98,7 @@ "uuid": "10.0.0", "websocket": "1.0.35", "wicg-inert": "3.1.2", - "winston": "3.13.1" + "winston": "3.14.1" }, "scripts": { "admin:become-user": "npx ts-node --transpile-only scripts/user/become-user.ts", @@ -245,8 +244,8 @@ "ejs": "3.1.10" }, "devDependencies": { - "@aws-sdk/client-iam": "3.623.0", - "@aws-sdk/client-secrets-manager": "3.623.0", + "@aws-sdk/client-iam": "3.624.0", + "@aws-sdk/client-secrets-manager": "3.624.0", "@babel/cli": "7.24.8", "@babel/core": "7.25.2", "@babel/eslint-parser": "7.25.1", @@ -257,7 +256,7 @@ "@cypress/puppeteer": "^0.1.5", "@faker-js/faker": "8.4.1", "@miovision/eslint-plugin-disallow-date": "2.0.0", - "@types/aws-lambda": "8.10.142", + "@types/aws-lambda": "8.10.143", "@types/jest": "29.5.12", "@types/lodash": "4.17.7", "@types/luxon": "3.4.2", @@ -268,15 +267,15 @@ "@types/react-paginate": "7.1.4", "@types/uuid": "10.0.0", "@types/websocket": "1.0.10", - "@typescript-eslint/eslint-plugin": "7.17.0", - "@typescript-eslint/parser": "7.17.0", + "@typescript-eslint/eslint-plugin": "8.0.1", + "@typescript-eslint/parser": "8.0.1", "@vendia/serverless-express": "4.12.6", "ajv": "8.17.1", - "artillery": "2.0.18", - "artillery-plugin-metrics-by-endpoint": "1.12.0", - "autoprefixer": "10.4.19", + "artillery": "2.0.19", + "artillery-plugin-metrics-by-endpoint": "1.13.0", + "autoprefixer": "10.4.20", "aws-sdk-client-mock": "4.0.1", - "axe-core": "4.9.1", + "axe-core": "4.10.0", "axios-retry": "4.5.0", "babel-jest": "29.7.0", "babel-loader": "9.1.3", @@ -307,10 +306,10 @@ "eslint-config-prettier": "9.1.0", "eslint-plugin-cypress": "3.4.0", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jest": "28.6.0", + "eslint-plugin-jest": "28.8.0", "eslint-plugin-jsx-a11y": "6.9.0", "eslint-plugin-prettier": "5.2.1", - "eslint-plugin-promise": "7.0.0", + "eslint-plugin-promise": "7.1.0", "eslint-plugin-react": "7.35.0", "eslint-plugin-security": "3.0.1", "eslint-plugin-sort-destructure-keys": "2.0.0", @@ -320,13 +319,13 @@ "eslint-plugin-spellcheck": "0.0.20", "esm": "3.2.25", "file-loader": "6.2.0", - "husky": "9.1.2", + "husky": "9.1.4", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-environment-node": "29.7.0", "jsdom": "24.1.1", "json2yaml": "1.1.0", - "lint-staged": "15.2.7", + "lint-staged": "15.2.8", "lint-staged-shellcheck": "0.1.2", "livereload": "0.9.3", "node-cache": "5.1.2", @@ -335,9 +334,9 @@ "pdf2pic": "3.1.1", "pixelmatch": "6.0.0", "pngjs": "7.0.0", - "postcss": "8.4.40", + "postcss": "8.4.41", "postcss-loader": "8.1.1", - "postcss-preset-env": "9.6.0", + "postcss-preset-env": "10.0.0", "prettier": "3.3.3", "prop-types": "15.8.1", "puppeteer": "22.6.5", @@ -346,18 +345,18 @@ "readline": "1.3.0", "s3rver": "github:20minutes/s3rver", "sass": "1.77.8", - "sass-loader": "15.0.0", + "sass-loader": "16.0.0", "shuffle-seed": "1.1.6", "stream-browserify": "3.0.0", "style-loader": "4.0.0", - "stylelint": "16.7.0", + "stylelint": "16.8.1", "stylelint-config-idiomatic-order": "10.0.0", "stylelint-config-standard": "36.0.1", "stylelint-config-standard-scss": "13.1.0", "swagger-cli": "4.0.4", "tiff2pdf": "1.0.2", "totp-generator": "1.0.0", - "ts-jest": "29.2.3", + "ts-jest": "29.2.4", "ts-loader": "9.5.1", "ts-node": "10.9.2", "tsconfig-paths": "4.2.0", diff --git a/scripts/checkUntouchedFiles.ts b/scripts/checkAllFilesForTypeErrorCount.ts similarity index 65% rename from scripts/checkUntouchedFiles.ts rename to scripts/checkAllFilesForTypeErrorCount.ts index a88cce7945d..b9301f6fdc1 100644 --- a/scripts/checkUntouchedFiles.ts +++ b/scripts/checkAllFilesForTypeErrorCount.ts @@ -1,4 +1,4 @@ -import { execSync, spawnSync } from 'child_process'; +import { spawnSync } from 'child_process'; function runTypescriptCommand(cwd: string): { stdout: string } { return spawnSync( @@ -34,56 +34,9 @@ function getTypescriptErrorMap(cwd: string): { [fileName: string]: number } { return createTypescriptErrorMap(stdout); } -function getHashForDirectory(cwd: string) { - return spawnSync('git', ['log', '-n', '1', '--pretty=format:"%H"'], { - cwd, - encoding: 'utf-8', - }).stdout; -} - -function getDifferencesBetweenHashes( - branchDirPath: string, - currentBranchHash: string, - targetBranchHash: string, -): { [fileName: string]: boolean } { - return execSync( - `git diff --name-only ${currentBranchHash} ${targetBranchHash}`, - { - cwd: branchDirPath, - encoding: 'utf-8', - }, - ) - .split('\n') - .map(line => line.trim()) - .reduce( - (accumulator, fileName) => { - accumulator[fileName] = true; - return accumulator; - }, - {} as { [fileName: string]: boolean }, - ); -} - -function getModifiedFiles( - branchDirPath: string, - targetRepoPath: string, -): { - [fileName: string]: boolean; -} { - const currentBranchHash = getHashForDirectory(branchDirPath); - const targetBranchHash = getHashForDirectory(targetRepoPath); - - return getDifferencesBetweenHashes( - branchDirPath, - currentBranchHash, - targetBranchHash, - ); -} - function getFilesToCheck( branchTypescriptErrorMap: { [fileName: string]: number }, targetTypescriptErrorMap: { [fileName: string]: number }, - modifiedFiles: { [fileName: string]: boolean }, ): { [fileName: string]: { targetCount: number; @@ -98,7 +51,6 @@ function getFilesToCheck( } = {}; Object.entries(branchTypescriptErrorMap).forEach( ([fileName, branchCount]) => { - if (modifiedFiles[fileName]) return; const targetCount = targetTypescriptErrorMap[fileName] || 0; if (targetCount < branchCount) fileToCheck[fileName] = { branchCount, targetCount }; @@ -111,12 +63,10 @@ const branchDirPath = './'; const targetDirPath = './targetBranch'; const branchTypescriptErrorMap = getTypescriptErrorMap(branchDirPath); const targetTypescriptErrorMap = getTypescriptErrorMap(targetDirPath); -const modifiedFiles = getModifiedFiles(branchDirPath, targetDirPath); const fileToCheck = getFilesToCheck( branchTypescriptErrorMap, targetTypescriptErrorMap, - modifiedFiles, ); function logSmartTable(dataObject: { @@ -148,7 +98,7 @@ const errorCount = Object.keys(fileToCheck); if (errorCount.length) { logSmartTable(fileToCheck); console.log( - '\nHere are the files that your PR did not touch but increased in Typescript error count: ', + '\nHere are the files that increased in Typescript error count as a result of your PR: ', errorCount.length, ); process.exit(1); diff --git a/scripts/jest-scripts.config.ts b/scripts/jest-scripts.config.ts index dfdcffdb6a5..d2b3df37178 100644 --- a/scripts/jest-scripts.config.ts +++ b/scripts/jest-scripts.config.ts @@ -7,7 +7,7 @@ const config: Config = { collectCoverage: true, collectCoverageFrom: [ '**/*.{js,ts}', - '!checkUntouchedFiles.ts', + '!checkAllFilesForTypeErrorCount.ts', '!circleci/*.ts', '!circleci/judge/bulkImportJudgeUsers.ts', '!circleci/judge/bulkImportJudgeUsers.helpers.ts', diff --git a/scripts/verify-terraform-version.sh b/scripts/verify-terraform-version.sh index 5254170b6c7..3fee6bf7376 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.3"* ]]; then - echo "Please set your terraform version to 1.9.3 before deploying." +if [[ ${tf_version} != *"1.9.4"* ]]; then + echo "Please set your terraform version to 1.9.4 before deploying." exit 1 fi diff --git a/shared/src/authorization/authorizationClientService.ts b/shared/src/authorization/authorizationClientService.ts index 634b8b3a2d4..e79d3e5db5c 100644 --- a/shared/src/authorization/authorizationClientService.ts +++ b/shared/src/authorization/authorizationClientService.ts @@ -63,6 +63,7 @@ export const ROLE_PERMISSIONS = { SET_TRIAL_SESSION_CALENDAR: 'SET_TRIAL_SESSION_CALENDAR', STAMP_MOTION: 'STAMP_MOTION', START_PAPER_CASE: 'START_PAPER_CASE', + STATUS_REPORT_ORDER: 'STATUS_REPORT_ORDER', TRACKED_ITEMS: 'TRACKED_ITEMS', TRIAL_SESSION_QC_COMPLETE: 'TRIAL_SESSION_QC_COMPLETE', TRIAL_SESSION_WORKING_COPY: 'TRIAL_SESSION_WORKING_COPY', @@ -118,6 +119,7 @@ const allInternalUserPermissions = [ const adcPermissions = [ ...allInternalUserPermissions, ROLE_PERMISSIONS.CREATE_TRIAL_SESSION, + ROLE_PERMISSIONS.STATUS_REPORT_ORDER, ROLE_PERMISSIONS.SEND_RECEIVE_MESSAGES, ROLE_PERMISSIONS.STAMP_MOTION, ]; @@ -154,6 +156,7 @@ const chambersPermissions = [ ROLE_PERMISSIONS.JUDGE_ACTIVITY_REPORT, ROLE_PERMISSIONS.CASE_WORKSHEET, ROLE_PERMISSIONS.DOCKET_ENTRY_WORKSHEET, + ROLE_PERMISSIONS.STATUS_REPORT_ORDER, ROLE_PERMISSIONS.SEND_RECEIVE_MESSAGES, ]; @@ -247,6 +250,7 @@ const judgePermissions = [ ROLE_PERMISSIONS.JUDGE_ACTIVITY_REPORT, ROLE_PERMISSIONS.CASE_WORKSHEET, ROLE_PERMISSIONS.DOCKET_ENTRY_WORKSHEET, + ROLE_PERMISSIONS.STATUS_REPORT_ORDER, ]; const petitionerPermissions = [ diff --git a/shared/src/business/entities/EntityConstants.ts b/shared/src/business/entities/EntityConstants.ts index d783b2aeaa0..102e40adc07 100644 --- a/shared/src/business/entities/EntityConstants.ts +++ b/shared/src/business/entities/EntityConstants.ts @@ -588,6 +588,12 @@ export const STAMPED_DOCUMENTS_ALLOWLIST = uniq( .map(x => x.eventCode), ); +export const STATUS_REPORT_ORDER_DOCUMENTS_ALLOWLIST = uniq( + [...EXTERNAL_DOCUMENTS_ARRAY, ...INTERNAL_DOCUMENTS_ARRAY] + .filter((doc: Record) => doc.allowStatusReportOrder) + .map(x => x.eventCode), +); + export const EXTERNAL_TRACKED_DOCUMENT_EVENT_CODES = EXTERNAL_DOCUMENTS_ARRAY.filter( doc => @@ -1144,7 +1150,8 @@ export type AbbrevatedStates = | keyof typeof US_STATES | keyof typeof US_STATES_OTHER; -export const STATE_NOT_AVAILABLE = 'N/A'; +export const NOT_AVAILABLE_OPTION = 'N/A'; +export const STATE_NOT_AVAILABLE = NOT_AVAILABLE_OPTION; export const PARTY_TYPES = { conservator: 'Conservator', @@ -1622,6 +1629,11 @@ export const JUDGE_TITLES = [ ] as const; export type JudgeTitle = (typeof JUDGE_TITLES)[number]; +export const PETITION_TYPES = { + autoGenerated: 'autoGenerated', + userUploaded: 'userUploaded', +}; + export type FileUploadProgressType = { file: any; uploadProgress: (progressEvent: any) => void; @@ -1694,3 +1706,18 @@ export type IdleLogoutStateType = export type IdleLogoutType = | (typeof BROADCAST_MESSAGES)['idleLogout'] | (typeof BROADCAST_MESSAGES)['userLogout']; + +export const STATUS_REPORT_ORDER_OPTIONS = { + issueOrderOptions: { + justThisCase: 'justThisCase', + allCasesInGroup: 'allCasesInGroup', + }, + orderTypeOptions: { + statusReport: 'statusReport', + stipulatedDecision: 'statusReportStipulatedDecision', + }, + jurisdictionOptions: { + retained: 'retained', + restored: 'restoredToGeneralDocket', + }, +}; diff --git a/shared/src/business/entities/StatusReportOrderForm.ts b/shared/src/business/entities/StatusReportOrderForm.ts new file mode 100644 index 00000000000..fc71bda882c --- /dev/null +++ b/shared/src/business/entities/StatusReportOrderForm.ts @@ -0,0 +1,100 @@ +import { + FORMATS, + createISODateAtStartOfDayEST, + formatDateString, +} from '../utilities/DateHandler'; +import { JoiValidationConstants } from './JoiValidationConstants'; +import { JoiValidationEntity } from './JoiValidationEntity'; +import { STATUS_REPORT_ORDER_OPTIONS } from '@shared/business/entities/EntityConstants'; +import joiDate from '@joi/date'; +import joiImported, { Root } from 'joi'; + +const joi: Root = joiImported.extend(joiDate); + +export class StatusReportOrderForm extends JoiValidationEntity { + public issueOrder?: string; + public orderType?: string; + public dueDate?: string; + public strickenFromTrialSessions?: string; + public jurisdiction?: string; + public additionalOrderText?: string; + public docketEntryDescription: string; + + constructor(rawProps) { + super('StatusReportOrderForm'); + + this.issueOrder = rawProps.issueOrder; + this.orderType = rawProps.orderType; + this.dueDate = rawProps.dueDate; + this.strickenFromTrialSessions = rawProps.strickenFromTrialSessions; + this.jurisdiction = rawProps.jurisdiction; + this.additionalOrderText = rawProps.additionalOrderText; + this.docketEntryDescription = rawProps.docketEntryDescription; + } + + static TODAY = formatDateString( + createISODateAtStartOfDayEST(), + FORMATS.YYYYMMDD, + ); + + static VALIDATION_RULES = { + additionalOrderText: JoiValidationConstants.STRING.max(80) + .optional() + .allow(null, ''), + docketEntryDescription: JoiValidationConstants.STRING.max(80) + .required() + .messages({ + '*': 'Enter a docket entry description', + }), + dueDate: joi + .when('orderType', { + is: joi.exist().not(null), + otherwise: joi.optional().allow(null), + then: joi + .date() + .iso() + .format(['YYYY-MM-DD']) // expects format 'YYYY-MM-DD' != 'yyyy-MM-dd' + .min(StatusReportOrderForm.TODAY) + .required() + .description('When the status report or stipulated decision is due.'), + }) + .messages({ + 'any.required': + 'Due date is required for status reports and stipulated decisions', + 'date.format': 'Enter a valid date', + 'date.min': 'Due date cannot be prior to today. Enter a valid date.', + }), + issueOrder: JoiValidationConstants.STRING.valid( + STATUS_REPORT_ORDER_OPTIONS.issueOrderOptions.allCasesInGroup, + STATUS_REPORT_ORDER_OPTIONS.issueOrderOptions.justThisCase, + ) + .optional() + .allow(null), + jurisdiction: JoiValidationConstants.STRING.valid( + STATUS_REPORT_ORDER_OPTIONS.jurisdictionOptions.retained, + STATUS_REPORT_ORDER_OPTIONS.jurisdictionOptions.restored, + ) + .when('strickenFromTrialSessions', { + is: joi.exist().not(null, false), + otherwise: joi.optional().allow(null), + then: joi.required().messages({ + 'any.required': + 'Jurisdiction is required since case is stricken from the trial session', + }), + }) + .optional() + .allow(null), + orderType: JoiValidationConstants.STRING.valid( + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.stipulatedDecision, + ) + .optional() + .allow(null), + }; + + getValidationRules() { + return StatusReportOrderForm.VALIDATION_RULES; + } +} + +export type RawStatusReportOrderForm = ExcludeMethods; diff --git a/shared/src/business/entities/cases/ElectronicPetition.test.ts b/shared/src/business/entities/cases/ElectronicPetition.test.ts index edcc79ad2ec..4768e35e7ca 100644 --- a/shared/src/business/entities/cases/ElectronicPetition.test.ts +++ b/shared/src/business/entities/cases/ElectronicPetition.test.ts @@ -4,9 +4,9 @@ import { MAX_FILE_SIZE_BYTES, MAX_FILE_SIZE_MB, PARTY_TYPES, + PETITION_TYPES, } from '../EntityConstants'; import { ElectronicPetition } from './ElectronicPetition'; -import { PETITION_TYPES } from '@web-client/presenter/actions/setupPetitionStateAction'; import { applicationContext } from '../../test/createTestApplicationContext'; describe('ElectronicPetition entity', () => { diff --git a/shared/src/business/entities/cases/ElectronicPetition.ts b/shared/src/business/entities/cases/ElectronicPetition.ts index 6164dc4de11..00a528db64e 100644 --- a/shared/src/business/entities/cases/ElectronicPetition.ts +++ b/shared/src/business/entities/cases/ElectronicPetition.ts @@ -4,7 +4,9 @@ import { LEGACY_TRIAL_CITY_STRINGS, MAX_FILE_SIZE_BYTES, MAX_FILE_SIZE_MB, + NOT_AVAILABLE_OPTION, PARTY_TYPES, + PETITION_TYPES, PROCEDURE_TYPES, ROLES, TRIAL_CITY_STRINGS, @@ -13,7 +15,6 @@ import { import { ContactFactory } from '../contacts/ContactFactory'; import { JoiValidationConstants } from '../JoiValidationConstants'; import { JoiValidationEntity } from '../JoiValidationEntity'; -import { PETITION_TYPES } from '@web-client/presenter/actions/setupPetitionStateAction'; import { getContactPrimary, getContactSecondary } from './Case'; import joi from 'joi'; @@ -34,7 +35,6 @@ export class ElectronicPetition extends JoiValidationEntity { public petitionFile?: object; public petitionFileSize?: number; public petitionFileId?: string; - public petitionRedactionAcknowledgement?: boolean; public preferredTrialCity: string; public procedureType: string; public stinFile?: object; @@ -63,8 +63,6 @@ export class ElectronicPetition extends JoiValidationEntity { this.petitionFile = rawCase.petitionFile; this.petitionFileSize = rawCase.petitionFileSize; this.petitionFileId = rawCase.petitionFileId; - this.petitionRedactionAcknowledgement = - rawCase.petitionRedactionAcknowledgement; this.petitionType = rawCase.petitionType || PETITION_TYPES.userUploaded; this.corporateDisclosureFile = rawCase.corporateDisclosureFile; @@ -80,11 +78,9 @@ export class ElectronicPetition extends JoiValidationEntity { }); this.petitioners = [contacts.primary]; - if (contacts.secondary) { - if (!contacts.secondary.phone) { - contacts.secondary.phone = 'N/A'; - } + contacts.secondary.phone = + contacts.secondary.phone || NOT_AVAILABLE_OPTION; this.petitioners.push(contacts.secondary); } } @@ -178,11 +174,6 @@ export class ElectronicPetition extends JoiValidationEntity { '*': 'Your Petition file size is empty', 'number.max': `Your Petition file size is too big. The maximum file size is ${MAX_FILE_SIZE_MB}MB.`, }), - petitionRedactionAcknowledgement: joi.boolean().when('petitionType', { - is: JoiValidationConstants.STRING.valid(PETITION_TYPES.userUploaded), - otherwise: joi.optional(), - then: joi.boolean().optional().invalid(false), - }), petitionType: JoiValidationConstants.STRING.required().valid( ...Object.values(PETITION_TYPES), ), diff --git a/shared/src/business/entities/cases/ElectronicPetitionInformationFactory.test.ts b/shared/src/business/entities/cases/ElectronicPetitionInformationFactory.test.ts index 61e6b245a92..7ae0f72a765 100644 --- a/shared/src/business/entities/cases/ElectronicPetitionInformationFactory.test.ts +++ b/shared/src/business/entities/cases/ElectronicPetitionInformationFactory.test.ts @@ -5,9 +5,9 @@ import { MAX_FILE_SIZE_BYTES, MAX_FILE_SIZE_MB, PARTY_TYPES, + PETITION_TYPES, } from '../EntityConstants'; import { ElectronicPetitionInformationFactory } from './ElectronicPetitionInformationFactory'; -import { PETITION_TYPES } from '@web-client/presenter/actions/setupPetitionStateAction'; import { applicationContext } from '../../test/createTestApplicationContext'; describe('ElectronicPetitionInformationFactory entity', () => { diff --git a/shared/src/business/entities/cases/ElectronicPetitionInformationFactory.ts b/shared/src/business/entities/cases/ElectronicPetitionInformationFactory.ts index 2cc334cd3fa..89f6f6b1d79 100644 --- a/shared/src/business/entities/cases/ElectronicPetitionInformationFactory.ts +++ b/shared/src/business/entities/cases/ElectronicPetitionInformationFactory.ts @@ -2,7 +2,7 @@ import { ContactFactory } from '../contacts/ContactFactory'; import { ElectronicPetition } from './ElectronicPetition'; import { JoiValidationConstants } from '../JoiValidationConstants'; import { JoiValidationEntity } from '../JoiValidationEntity'; -import { PETITION_TYPES } from '@web-client/presenter/actions/setupPetitionStateAction'; +import { PETITION_TYPES } from '@shared/business/entities/EntityConstants'; import { getContactPrimary, getContactSecondary } from './Case'; import joi from 'joi'; diff --git a/shared/src/business/entities/cases/PaperPetition.ts b/shared/src/business/entities/cases/PaperPetition.ts index 63b282e99e8..17e3ec0ccc1 100644 --- a/shared/src/business/entities/cases/PaperPetition.ts +++ b/shared/src/business/entities/cases/PaperPetition.ts @@ -2,6 +2,7 @@ import { CASE_TYPES, FILING_TYPES, MAX_FILE_SIZE_MB, + NOT_AVAILABLE_OPTION, PARTY_TYPES, PAYMENT_STATUS, PROCEDURE_TYPES, @@ -145,9 +146,8 @@ export class PaperPetition extends JoiValidationEntity { }); this.petitioners = [contacts.primary]; if (contacts.secondary) { - if (!contacts.secondary.phone) { - contacts.secondary.phone = 'N/A'; - } + contacts.secondary.phone = + contacts.secondary.phone || NOT_AVAILABLE_OPTION; this.petitioners.push(contacts.secondary); } } diff --git a/shared/src/business/entities/startCase/GeneratePetitionPdf.test.ts b/shared/src/business/entities/startCase/GeneratePetitionPdf.test.ts new file mode 100644 index 00000000000..83a76c3b91e --- /dev/null +++ b/shared/src/business/entities/startCase/GeneratePetitionPdf.test.ts @@ -0,0 +1,53 @@ +import { GeneratePetitionPdf } from '@shared/business/entities/startCase/GeneratePetitionPdf'; + +describe('GeneratePetitionPdf', () => { + const VALID_ENTITY = { + caseCaptionExtension: 'TEST_caseCaptionExtension', + caseTitle: 'TEST_caseTitle', + contactPrimary: { + address1: 'test_address1', + city: 'test_city', + contactType: 'primary', + country: 'test_country', + countryType: 'test_countryType', + email: 'test_email', + name: 'test_name', + phone: 'test_phone', + postalCode: 'test_postalCode', + state: 'test_state', + }, + hasIrsNotice: true, + hasUploadedIrsNotice: true, + originalCaseType: 'Deficiency', + petitionFacts: ['TEST_petitionFacts'], + petitionReasons: ['TEST_petitionReasons'], + preferredTrialCity: 'TEST_preferredTrialCity', + procedureType: 'Regular', + }; + + it('should create a valid instance of "GeneratePetitionPdf" entity', () => { + const entity = new GeneratePetitionPdf(VALID_ENTITY); + + expect(entity).toBeDefined(); + + const errors = entity.getFormattedValidationErrors(); + expect(errors).toEqual(null); + }); + + it('should throw validation errors when data is not valid', () => { + const entity = new GeneratePetitionPdf({}); + const errors = entity.getFormattedValidationErrors(); + expect(errors).toEqual({ + caseCaptionExtension: '"caseCaptionExtension" is required', + caseTitle: '"caseTitle" is required', + contactPrimary: '"contactPrimary" is required', + hasIrsNotice: '"hasIrsNotice" is required', + hasUploadedIrsNotice: '"hasUploadedIrsNotice" is required', + originalCaseType: '"originalCaseType" is required', + petitionFacts: '"petitionFacts" is required', + petitionReasons: '"petitionReasons" is required', + preferredTrialCity: '"preferredTrialCity" is required', + procedureType: '"procedureType" is required', + }); + }); +}); diff --git a/shared/src/business/entities/startCase/GeneratePetitionPdf.ts b/shared/src/business/entities/startCase/GeneratePetitionPdf.ts new file mode 100644 index 00000000000..bf38dbfbc89 --- /dev/null +++ b/shared/src/business/entities/startCase/GeneratePetitionPdf.ts @@ -0,0 +1,75 @@ +import { CASE_TYPES, PARTY_TYPES, PROCEDURE_TYPES } from '../EntityConstants'; +import { + Contact, + ContactSecondary, + IrsNotice, +} from '@shared/business/useCases/generatePetitionPdfInteractor'; +import { JoiValidationConstants } from '@shared/business/entities/JoiValidationConstants'; +import { JoiValidationEntity } from '@shared/business/entities/JoiValidationEntity'; +import joi from 'joi'; + +export class GeneratePetitionPdf extends JoiValidationEntity { + public caseCaptionExtension: string; + public caseTitle: string; + public contactPrimary: Contact; + public contactSecondary?: ContactSecondary; + public hasUploadedIrsNotice: boolean; + public partyType: string; + public petitionFacts: string[]; + public petitionReasons: string[]; + public preferredTrialCity: string; + public procedureType: string; + public hasIrsNotice: boolean; + public originalCaseType: string; + public irsNotices: IrsNotice[]; + + constructor(rawProps) { + super('GeneratePetitionPdf'); + + this.caseCaptionExtension = rawProps.caseCaptionExtension; + this.caseTitle = rawProps.caseTitle; + this.contactPrimary = rawProps.contactPrimary; + this.contactSecondary = rawProps.contactSecondary; + this.hasUploadedIrsNotice = rawProps.hasUploadedIrsNotice; + this.partyType = rawProps.partyType; + this.petitionFacts = rawProps.petitionFacts; + this.petitionReasons = rawProps.petitionReasons; + this.preferredTrialCity = rawProps.preferredTrialCity; + this.procedureType = rawProps.procedureType; + this.hasIrsNotice = rawProps.hasIrsNotice; + this.originalCaseType = rawProps.originalCaseType; + this.irsNotices = rawProps.irsNotices; + } + + static VALIDATION_RULES = { + caseCaptionExtension: joi.string().required(), + caseTitle: joi.string().required(), + contactPrimary: joi.object().required(), + contactSecondary: joi.object().optional(), + hasIrsNotice: joi.boolean().required(), + hasUploadedIrsNotice: joi.boolean().required(), + irsNotices: joi.array(), + originalCaseType: JoiValidationConstants.STRING.valid( + ...CASE_TYPES, + 'Disclosure1', + 'Disclosure2', + ).required(), + partyType: JoiValidationConstants.STRING.valid( + ...Object.values(PARTY_TYPES), + ), + petitionFacts: joi.array().min(1).items(joi.string()).required(), + petitionReasons: joi.array().min(1).items(joi.string()).required(), + preferredTrialCity: joi.string().required(), + procedureType: JoiValidationConstants.STRING.valid( + ...PROCEDURE_TYPES, + ).required(), + }; + + getValidationRules() { + return GeneratePetitionPdf.VALIDATION_RULES; + } +} + +export type RawGeneratePetitionPdf = ExcludeMethods< + Omit +>; diff --git a/shared/src/business/entities/startCase/IrsNoticeForm.test.ts b/shared/src/business/entities/startCase/IrsNoticeForm.test.ts index 3a854e7ec8f..28c56423c33 100644 --- a/shared/src/business/entities/startCase/IrsNoticeForm.test.ts +++ b/shared/src/business/entities/startCase/IrsNoticeForm.test.ts @@ -201,7 +201,7 @@ describe('IrsNoticeForm', () => { expect(entity).toBeDefined(); const errors = entity.getFormattedValidationErrors(); - expect(errors).toEqual({ taxYear: 'Limit is 100 characters' }); + expect(errors).toEqual({ taxYear: 'Limit is 100 characters.' }); }); }); }); diff --git a/shared/src/business/entities/startCase/IrsNoticeForm.ts b/shared/src/business/entities/startCase/IrsNoticeForm.ts index 6eb4be99ccb..ae102314a48 100644 --- a/shared/src/business/entities/startCase/IrsNoticeForm.ts +++ b/shared/src/business/entities/startCase/IrsNoticeForm.ts @@ -50,8 +50,11 @@ export class IrsNoticeForm extends JoiValidationEntity { .messages({ '*': 'Select a case type', }), - cityAndStateIssuingOffice: - JoiValidationConstants.STRING.max(200).optional(), + cityAndStateIssuingOffice: JoiValidationConstants.STRING.max(100) + .optional() + .messages({ + 'string.max': 'Limit is 100 characters.', + }), file: joi.optional(), key: joi.string().required(), noticeIssuedDate: JoiValidationConstants.ISO_DATE.max('now').messages({ @@ -75,7 +78,7 @@ export class IrsNoticeForm extends JoiValidationEntity { taxYear: JoiValidationConstants.STRING.max(IrsNoticeForm.taxYearLimit) .optional() .messages({ - '*': `Limit is ${IrsNoticeForm.taxYearLimit} characters`, + '*': `Limit is ${IrsNoticeForm.taxYearLimit} characters.`, }), }; diff --git a/shared/src/business/entities/startCase/UploadPetitionStep1.test.ts b/shared/src/business/entities/startCase/UploadPetitionStep1.test.ts index 0823860ce26..4d5068e984a 100644 --- a/shared/src/business/entities/startCase/UploadPetitionStep1.test.ts +++ b/shared/src/business/entities/startCase/UploadPetitionStep1.test.ts @@ -9,7 +9,7 @@ import { UploadPetitionStep1 } from '@shared/business/entities/startCase/UploadP describe('UploadPetitionStep1', () => { const VALID_ENTITY = { filingType: FILING_TYPES[ROLES.petitioner][0], - partyType: FILING_TYPES[ROLES.petitioner][0], + partyType: PARTY_TYPES.petitioner, }; it('should create a valid instance of "UploadPetitionStep1" entity', () => { diff --git a/shared/src/business/entities/startCase/UploadPetitionStep1.ts b/shared/src/business/entities/startCase/UploadPetitionStep1.ts index 6a806eb7e70..49859f2032f 100644 --- a/shared/src/business/entities/startCase/UploadPetitionStep1.ts +++ b/shared/src/business/entities/startCase/UploadPetitionStep1.ts @@ -1,10 +1,12 @@ import { BUSINESS_TYPES, + COUNTRY_TYPES, ESTATE_TYPES, FILING_TYPES, MAX_FILE_SIZE_BYTES, MAX_FILE_SIZE_MB, OTHER_TYPES, + PARTY_TYPES, ROLES, } from '../EntityConstants'; import { ContactFactoryUpdated } from '../contacts/ContactFactoryUpdated'; @@ -92,8 +94,10 @@ export class UploadPetitionStep1 extends JoiValidationEntity { '*': 'Your Corporate Disclosure Statement file size is empty', 'number.max': `Your Corporate Disclosure Statement file size is too big. The maximum file size is ${MAX_FILE_SIZE_MB}MB.`, }), - // COUNTRY_TYPES - countryType: JoiValidationConstants.STRING.optional(), + countryType: JoiValidationConstants.STRING.valid( + COUNTRY_TYPES.DOMESTIC, + COUNTRY_TYPES.INTERNATIONAL, + ).optional(), estateType: JoiValidationConstants.STRING.valid( ...Object.values(ESTATE_TYPES), ) @@ -151,8 +155,9 @@ export class UploadPetitionStep1 extends JoiValidationEntity { then: joi.required(), }) .messages({ '*': 'Select an other type of taxpayer' }), - // PARTY_TYPES - partyType: joi.required(), // This will be undefined when any sub radios are not selected + partyType: JoiValidationConstants.STRING.valid( + ...Object.values(PARTY_TYPES), + ).required(), // This will be undefined when any sub radios are not selected }; getValidationRules() { diff --git a/shared/src/business/entities/startCase/UploadPetitionStep2.test.ts b/shared/src/business/entities/startCase/UploadPetitionStep2.test.ts index 763fd247b72..4cd811954ba 100644 --- a/shared/src/business/entities/startCase/UploadPetitionStep2.test.ts +++ b/shared/src/business/entities/startCase/UploadPetitionStep2.test.ts @@ -1,8 +1,8 @@ import { MAX_FILE_SIZE_BYTES, MAX_FILE_SIZE_MB, + PETITION_TYPES, } from '@shared/business/entities/EntityConstants'; -import { PETITION_TYPES } from '@web-client/presenter/actions/setupPetitionStateAction'; import { RawUploadPetitionStep2, UploadPetitionStep2, diff --git a/shared/src/business/entities/startCase/UploadPetitionStep2.ts b/shared/src/business/entities/startCase/UploadPetitionStep2.ts index 3b017206498..322cff8f75c 100644 --- a/shared/src/business/entities/startCase/UploadPetitionStep2.ts +++ b/shared/src/business/entities/startCase/UploadPetitionStep2.ts @@ -1,7 +1,10 @@ import { JoiValidationConstants } from '@shared/business/entities/JoiValidationConstants'; import { JoiValidationEntity } from '@shared/business/entities/JoiValidationEntity'; -import { MAX_FILE_SIZE_BYTES, MAX_FILE_SIZE_MB } from '../EntityConstants'; -import { PETITION_TYPES } from '@web-client/presenter/actions/setupPetitionStateAction'; +import { + MAX_FILE_SIZE_BYTES, + MAX_FILE_SIZE_MB, + PETITION_TYPES, +} from '../EntityConstants'; import joi from 'joi'; export class UploadPetitionStep2 extends JoiValidationEntity { @@ -12,8 +15,6 @@ export class UploadPetitionStep2 extends JoiValidationEntity { public petitionFacts?: string[]; public petitionReasons?: string[]; - //TODO: Handle generated petition inputs - constructor(rawProps) { super('UploadPetitionStep2'); this.petitionRedactionAcknowledgement = diff --git a/shared/src/business/entities/startCase/UploadPetitionStep3.test.ts b/shared/src/business/entities/startCase/UploadPetitionStep3.test.ts index 5187e4a3087..62175b562c7 100644 --- a/shared/src/business/entities/startCase/UploadPetitionStep3.test.ts +++ b/shared/src/business/entities/startCase/UploadPetitionStep3.test.ts @@ -90,27 +90,6 @@ describe('UploadPetitionStep3', () => { irsNotices: '"irsNotices" must contain at least 1 items', }); }); - - it('should return an error message for "irsNotices" if an item has an error in it', () => { - const entity = new UploadPetitionStep3({ - ...VALID_ENTITY, - irsNotices: [VALID_ENTITY.irsNotices![0], {}], - }); - - expect(entity).toBeDefined(); - - const errors = entity.getFormattedValidationErrors(); - expect(errors).toEqual({ - irsNotices: [ - { - caseType: 'Select a case type', - index: 1, - key: '"key" is required', - }, - ], - }); - }); - it('should return an error message for "irsNotices" when there is more than the max in array', () => { const entity = new UploadPetitionStep3({ ...VALID_ENTITY, diff --git a/shared/src/business/entities/startCase/UploadPetitionStep3.ts b/shared/src/business/entities/startCase/UploadPetitionStep3.ts index 40088e192f6..12f1e70819e 100644 --- a/shared/src/business/entities/startCase/UploadPetitionStep3.ts +++ b/shared/src/business/entities/startCase/UploadPetitionStep3.ts @@ -6,7 +6,7 @@ import { CreateCaseIrsForm } from '@web-client/presenter/state'; import { IrsNoticeForm } from '@shared/business/entities/startCase/IrsNoticeForm'; import { JoiValidationConstants } from '@shared/business/entities/JoiValidationConstants'; import { JoiValidationEntity } from '@shared/business/entities/JoiValidationEntity'; -import { cloneDeep, omit } from 'lodash'; +import { cloneDeep } from 'lodash'; import joi from 'joi'; export class UploadPetitionStep3 extends JoiValidationEntity { @@ -77,27 +77,6 @@ export class UploadPetitionStep3 extends JoiValidationEntity { getValidationRules() { return UploadPetitionStep3.VALIDATION_RULES; } - - getFormattedValidationErrors(): Record | null { - const errors = super.getFormattedValidationErrors(); - - //TODO: dynamically get the properies from IrsNoticeForm entity - const filters = this.hasIrsNotice - ? [ - 'key', - 'file', - 'size', - 'caseType', - 'lastDateOfPeriod', - 'taxYear', - 'noticeIssuedDate', - ] - : []; - - const filteredErrors = omit(errors, filters); - - return Object.keys(filteredErrors).length === 0 ? null : filteredErrors; - } } export type RawUploadPetitionStep3 = ExcludeMethods< diff --git a/shared/src/business/useCases/generatePetitionPdfInteractor.test.ts b/shared/src/business/useCases/generatePetitionPdfInteractor.test.ts index d1eb74e1304..67fe2bf2bd2 100644 --- a/shared/src/business/useCases/generatePetitionPdfInteractor.test.ts +++ b/shared/src/business/useCases/generatePetitionPdfInteractor.test.ts @@ -1,4 +1,7 @@ -import { CASE_TYPES_MAP } from '@shared/business/entities/EntityConstants'; +import { + CASE_TYPES_MAP, + CASE_TYPE_DESCRIPTIONS_WITH_IRS_NOTICE, +} from '@shared/business/entities/EntityConstants'; import { applicationContext } from '../test/createTestApplicationContext'; import { generatePetitionPdfInteractor } from '@shared/business/useCases/generatePetitionPdfInteractor'; import { petitionerUser } from '@shared/test/mockUsers'; @@ -31,27 +34,25 @@ describe('generatePetitionPdfInteractor', () => { applicationContext.getCurrentUser.mockImplementation(() => ({})); await expect( - generatePetitionPdfInteractor(applicationContext, {}), + generatePetitionPdfInteractor(applicationContext, {} as any), ).rejects.toThrow('Unauthorized'); }); it('should generate petition and call save document', async () => { const results = await generatePetitionPdfInteractor(applicationContext, { caseCaptionExtension: 'TEST_caseCaptionExtension', - caseDescription: 'Deficiency', caseTitle: 'TEST_caseTitle', - caseType: CASE_TYPES_MAP.deficiency, - contactPrimary: 'TEST_contactPrimary', - contactSecondary: 'TEST_contactSecondary', + contactPrimary: 'TEST_contactPrimary' as any, + contactSecondary: 'TEST_contactSecondary' as any, hasIrsNotice: false, - hasUploadedIrsNotice: 'TEST_hasUploadedIrsNotice', + hasUploadedIrsNotice: true, irsNotices: [], + originalCaseType: CASE_TYPES_MAP.deficiency, partyType: 'TEST_partyType', - petitionFacts: 'TEST_petitionFacts', - petitionReasons: 'TEST_petitionReasons', + petitionFacts: ['TEST_petitionFacts'], + petitionReasons: ['TEST_petitionReasons'], preferredTrialCity: 'TEST_preferredTrialCity', procedureType: 'TEST_procedureType', - taxYear: 'TEST_taxYear', }); const petitionCalls = @@ -59,18 +60,17 @@ describe('generatePetitionPdfInteractor', () => { expect(petitionCalls.length).toEqual(1); expect(petitionCalls[0][0].data).toEqual({ caseCaptionExtension: 'TEST_caseCaptionExtension', - caseDescription: 'Deficiency', + caseDescription: CASE_TYPES_MAP.deficiency, caseTitle: 'TEST_caseTitle', contactPrimary: 'TEST_contactPrimary', contactSecondary: 'TEST_contactSecondary', - hasUploadedIrsNotice: 'TEST_hasUploadedIrsNotice', + hasUploadedIrsNotice: true, irsNotices: [], partyType: 'TEST_partyType', - petitionFacts: 'TEST_petitionFacts', - petitionReasons: 'TEST_petitionReasons', + petitionFacts: ['TEST_petitionFacts'], + petitionReasons: ['TEST_petitionReasons'], preferredTrialCity: 'TEST_preferredTrialCity', procedureType: 'TEST_procedureType', - taxYear: 'TEST_taxYear', }); const saveFileAndGenerateUrlCalls = @@ -90,6 +90,8 @@ describe('generatePetitionPdfInteractor', () => { caseType: CASE_TYPES_MAP.deficiency, key: 'TEST_KEY', noticeIssuedDate: '2024-05-02T00:00:00.000-04:00', + noticeIssuedFormatted: '05/02/24', + originalCaseType: 'Deficiency', taxYear: 'TEST_TAX_YEAR', }, ]; @@ -97,18 +99,17 @@ describe('generatePetitionPdfInteractor', () => { const results = await generatePetitionPdfInteractor(applicationContext, { caseCaptionExtension: 'TEST_caseCaptionExtension', caseTitle: 'TEST_caseTitle', - caseType: CASE_TYPES_MAP.deficiency, - contactPrimary: 'TEST_contactPrimary', - contactSecondary: 'TEST_contactSecondary', + contactPrimary: 'TEST_contactPrimary' as any, + contactSecondary: 'TEST_contactSecondary' as any, hasIrsNotice: true, - hasUploadedIrsNotice: 'TEST_hasUploadedIrsNotice', + hasUploadedIrsNotice: true, irsNotices, + originalCaseType: CASE_TYPES_MAP.deficiency, partyType: 'TEST_partyType', - petitionFacts: 'TEST_petitionFacts', - petitionReasons: 'TEST_petitionReasons', + petitionFacts: ['TEST_petitionFacts'], + petitionReasons: ['TEST_petitionReasons'], preferredTrialCity: 'TEST_preferredTrialCity', procedureType: 'TEST_procedureType', - taxYear: 'TEST_taxYear', }); const petitionCalls = @@ -121,11 +122,51 @@ describe('generatePetitionPdfInteractor', () => { caseType: 'Deficiency', key: 'TEST_KEY', noticeIssuedDate: '2024-05-02T00:00:00.000-04:00', - noticeIssuedDateFormatted: '05/02/24', taxYear: 'TEST_TAX_YEAR', }, ], }); expect(results.fileId).toEqual(mockFileId); }); + + it('should generate petition with correct case description when case type is disclosure', async () => { + const irsNotices: any[] = [ + { + caseType: CASE_TYPES_MAP.disclosure, + key: 'TEST_KEY', + noticeIssuedDate: '2024-05-02T00:00:00.000-04:00', + originalCaseType: 'Disclosure1', + taxYear: 'TEST_TAX_YEAR', + }, + ]; + + const results = await generatePetitionPdfInteractor(applicationContext, { + caseCaptionExtension: 'TEST_caseCaptionExtension', + caseTitle: 'TEST_caseTitle', + contactPrimary: 'TEST_contactPrimary' as any, + contactSecondary: 'TEST_contactSecondary' as any, + hasIrsNotice: true, + hasUploadedIrsNotice: true, + irsNotices, + originalCaseType: 'Disclosure1', + partyType: 'TEST_partyType', + petitionFacts: ['TEST_petitionFacts'], + petitionReasons: ['TEST_petitionReasons'], + preferredTrialCity: 'TEST_preferredTrialCity', + procedureType: 'TEST_procedureType', + }); + + const petitionCalls = + applicationContext.getDocumentGenerators().petition.mock.calls; + expect(petitionCalls.length).toEqual(1); + expect(petitionCalls[0][0].data).toMatchObject({ + caseDescription: CASE_TYPE_DESCRIPTIONS_WITH_IRS_NOTICE.Disclosure1, + irsNotices: [ + { + caseDescription: CASE_TYPE_DESCRIPTIONS_WITH_IRS_NOTICE.Disclosure1, + }, + ], + }); + expect(results.fileId).toEqual(mockFileId); + }); }); diff --git a/shared/src/business/useCases/generatePetitionPdfInteractor.ts b/shared/src/business/useCases/generatePetitionPdfInteractor.ts index 3fd6e679584..54ab16736eb 100644 --- a/shared/src/business/useCases/generatePetitionPdfInteractor.ts +++ b/shared/src/business/useCases/generatePetitionPdfInteractor.ts @@ -2,40 +2,88 @@ import { CASE_TYPE_DESCRIPTIONS_WITHOUT_IRS_NOTICE, CASE_TYPE_DESCRIPTIONS_WITH_IRS_NOTICE, } from '@shared/business/entities/EntityConstants'; -import { FORMATS } from '@shared/business/utilities/DateHandler'; +import { CreateCaseIrsForm } from '@web-client/presenter/state'; import { ROLE_PERMISSIONS, isAuthorized, } from '@shared/authorization/authorizationClientService'; -import { ServerApplicationContext } from '@web-api/applicationContext'; import { UnauthorizedError } from '@web-api/errors/errors'; -// TODO type for props +export type IrsNotice = CreateCaseIrsForm & { + noticeIssuedDateFormatted: string; + originalCaseType: string; +}; + +export type IrsNoticesWithCaseDescription = IrsNotice & { + caseDescription: string; +}; + +export interface Contact { + countryType: string; + name: string; + inCareOf?: string; + secondaryName?: string; + title?: string; + country: string; + address1: string; + address2?: string; + address3?: string; + city: string; + postalCode: string; + phone: string; + state: string; + placeOfLegalResidence?: string; + contactType: 'primary' | 'secondary'; + email: string; +} + +export type ContactSecondary = Contact & { + hasConsentedToEService?: boolean; + phone?: string; + paperPetitionEmail?: string; +}; + +export interface PetitionPdfBase { + caseCaptionExtension: string; + caseTitle: string; + contactPrimary: Contact; + contactSecondary?: ContactSecondary; + hasUploadedIrsNotice: boolean; + partyType: string; + petitionFacts: string[]; + petitionReasons: string[]; + preferredTrialCity: string; + procedureType: string; +} export const generatePetitionPdfInteractor = async ( - applicationContext: ServerApplicationContext, + applicationContext, { caseCaptionExtension, - caseDescription, caseTitle, contactPrimary, contactSecondary, hasIrsNotice, hasUploadedIrsNotice, irsNotices, + originalCaseType, partyType, petitionFacts, petitionReasons, preferredTrialCity, procedureType, - taxYear, - }: any, + }: PetitionPdfBase & { + hasIrsNotice: boolean; + originalCaseType: string; + irsNotices: IrsNotice[]; + }, ): Promise<{ fileId: string }> => { const user = applicationContext.getCurrentUser(); if (!isAuthorized(user, ROLE_PERMISSIONS.PETITION)) { throw new UnauthorizedError('Unauthorized'); } + const caseDescription = getCaseDescription(hasIrsNotice, originalCaseType); let pdfFile = await applicationContext.getDocumentGenerators().petition({ applicationContext, @@ -48,19 +96,16 @@ export const generatePetitionPdfInteractor = async ( hasUploadedIrsNotice, irsNotices: irsNotices.map(irsNotice => ({ ...irsNotice, - caseDescription: hasIrsNotice - ? CASE_TYPE_DESCRIPTIONS_WITH_IRS_NOTICE[irsNotice.caseType] - : CASE_TYPE_DESCRIPTIONS_WITHOUT_IRS_NOTICE[irsNotice.caseType], - noticeIssuedDateFormatted: applicationContext - .getUtilities() - .formatDateString(irsNotice.noticeIssuedDate || '', FORMATS.MMDDYY), + caseDescription: getCaseDescription( + hasIrsNotice, + irsNotice.originalCaseType, + ), })), partyType, petitionFacts, petitionReasons, preferredTrialCity, procedureType, - taxYear, }, }); @@ -74,3 +119,10 @@ export const generatePetitionPdfInteractor = async ( return { fileId }; }; + +function getCaseDescription(hasIrsNotice: boolean, caseType: string) { + if (hasIrsNotice) { + return CASE_TYPE_DESCRIPTIONS_WITH_IRS_NOTICE[caseType]; + } + return CASE_TYPE_DESCRIPTIONS_WITHOUT_IRS_NOTICE[caseType]; +} diff --git a/shared/src/business/useCases/validatePetitionInteractor.test.ts b/shared/src/business/useCases/validatePetitionInteractor.test.ts index 7e1e55d6759..a0271fe9f5b 100644 --- a/shared/src/business/useCases/validatePetitionInteractor.test.ts +++ b/shared/src/business/useCases/validatePetitionInteractor.test.ts @@ -1,5 +1,8 @@ -import { COUNTRY_TYPES, PARTY_TYPES } from '../entities/EntityConstants'; -import { PETITION_TYPES } from '@web-client/presenter/actions/setupPetitionStateAction'; +import { + COUNTRY_TYPES, + PARTY_TYPES, + PETITION_TYPES, +} from '../entities/EntityConstants'; import { applicationContext } from '../test/createTestApplicationContext'; import { validatePetitionInteractor } from './validatePetitionInteractor'; diff --git a/shared/src/business/utilities/documentGenerators/petition.ts b/shared/src/business/utilities/documentGenerators/petition.ts index 0501703069e..4554341da9b 100644 --- a/shared/src/business/utilities/documentGenerators/petition.ts +++ b/shared/src/business/utilities/documentGenerators/petition.ts @@ -1,9 +1,22 @@ +import { + IrsNoticesWithCaseDescription, + PetitionPdfBase, +} from '@shared/business/useCases/generatePetitionPdfInteractor'; import { Petition } from '@shared/business/utilities/pdfGenerator/documentTemplates/Petition'; import { generateHTMLTemplateForPDF } from '../generateHTMLTemplateForPDF/generateHTMLTemplateForPDF'; import React from 'react'; import ReactDOM from 'react-dom/server'; -export const petition = async ({ applicationContext, data }) => { +export const petition = async ({ + applicationContext, + data, +}: { + applicationContext: IApplicationContext; + data: PetitionPdfBase & { + caseDescription: string; + irsNotices: IrsNoticesWithCaseDescription[]; + }; +}) => { const { caseCaptionExtension, caseDescription, @@ -17,7 +30,6 @@ export const petition = async ({ applicationContext, data }) => { petitionReasons, preferredTrialCity, procedureType, - taxYear, } = data; const PetitionTemplate = ReactDOM.renderToString( @@ -34,7 +46,6 @@ export const petition = async ({ applicationContext, data }) => { petitionReasons, preferredTrialCity, procedureType, - taxYear, }), ); diff --git a/shared/src/business/utilities/getFormattedCaseDetail.ts b/shared/src/business/utilities/getFormattedCaseDetail.ts index bc17cefe9ff..0b7fb461e04 100644 --- a/shared/src/business/utilities/getFormattedCaseDetail.ts +++ b/shared/src/business/utilities/getFormattedCaseDetail.ts @@ -248,7 +248,7 @@ const formatTrialSessionScheduling = ({ } }; -export const getEditUrl = ({ +const getEditUrl = ({ docketEntryId, docketNumber, documentType, diff --git a/shared/src/business/utilities/pdfGenerator/documentTemplates/Petition.tsx b/shared/src/business/utilities/pdfGenerator/documentTemplates/Petition.tsx index b6da2b5426b..67434f41fd4 100644 --- a/shared/src/business/utilities/pdfGenerator/documentTemplates/Petition.tsx +++ b/shared/src/business/utilities/pdfGenerator/documentTemplates/Petition.tsx @@ -3,9 +3,14 @@ import { ALL_STATE_OPTIONS, BUSINESS_TYPES, COUNTRY_TYPES, + NOT_AVAILABLE_OPTION, PARTY_TYPES, PROCEDURE_TYPES_MAP, } from '@shared/business/entities/EntityConstants'; +import { + IrsNoticesWithCaseDescription, + PetitionPdfBase, +} from '@shared/business/useCases/generatePetitionPdfInteractor'; import { PetitionDocketHeader } from '../components/PetitionDocketHeader'; import { PetitionPrimaryHeader } from '@shared/business/utilities/pdfGenerator/components/PetitionPrimaryHeader'; import React from 'react'; @@ -23,21 +28,9 @@ export const Petition = ({ petitionReasons, preferredTrialCity, procedureType, - taxYear, -}: { - caseCaptionExtension: string; +}: PetitionPdfBase & { caseDescription: string; - caseTitle: string; - procedureType: string; - hasUploadedIrsNotice: boolean; - taxYear: string; - irsNotices: any[]; - partyType: string; - petitionFacts: string[]; - preferredTrialCity: string; - petitionReasons: string[]; - contactPrimary: { [key: string]: string }; - contactSecondary?: { [key: string]: string }; + irsNotices: IrsNoticesWithCaseDescription[]; }) => { const BUSINESS_TYPE_VALUES: string[] = Object.values(BUSINESS_TYPES); @@ -98,12 +91,12 @@ export const Petition = ({
    {irsNotices.map(irsNotice => (
  1. - {irsNotice.taxYear || 'N/A'} + {irsNotice.taxYear || NOT_AVAILABLE_OPTION}
  2. ))}
) : ( -

{taxYear || 'N/A'}

+

{irsNotices[0].taxYear || NOT_AVAILABLE_OPTION}

)}
  • @@ -124,7 +117,7 @@ export const Petition = ({
    1. {petitionReasons.map(reason => { - return
    2. {reason}
    3. ; + return
    4. {reason}
    5. ; })}
  • @@ -133,7 +126,7 @@ export const Petition = ({
    1. {petitionFacts.map(fact => { - return
    2. {fact}
    3. ; + return
    4. {fact}
    5. ; })}
    @@ -274,7 +267,7 @@ const renderIrsNotice = irsNotice => { } else { return ( - {`${irsNotice.noticeIssuedDateFormatted || 'N/A'} - ${irsNotice.cityAndStateIssuingOffice || 'N/A'}`} + {`${irsNotice.noticeIssuedDateFormatted || NOT_AVAILABLE_OPTION} - ${irsNotice.cityAndStateIssuingOffice || NOT_AVAILABLE_OPTION}`} ); } diff --git a/shared/src/proxies/generatePetitionPdfProxy.ts b/shared/src/proxies/generatePetitionPdfProxy.ts index b5514287e6d..9e2f1e74fe4 100644 --- a/shared/src/proxies/generatePetitionPdfProxy.ts +++ b/shared/src/proxies/generatePetitionPdfProxy.ts @@ -1,28 +1,29 @@ +import { + IrsNotice, + PetitionPdfBase, +} from '@shared/business/useCases/generatePetitionPdfInteractor'; import { post } from '@shared/proxies/requests'; export const generatePetitionPdfInteractor = ( - applicationContext: IApplicationContext, + applicationContext, { caseCaptionExtension, - caseDescription, caseTitle, contactPrimary, contactSecondary, hasIrsNotice, hasUploadedIrsNotice, irsNotices, + originalCaseType, partyType, petitionFacts, petitionReasons, preferredTrialCity, procedureType, - taxYear, - }: { - //TODO: Type remaining properties - [key: string]: any; - caseDescription: string; + }: PetitionPdfBase & { hasIrsNotice: boolean; - hasUploadedIrsNotice: boolean; + originalCaseType: string; + irsNotices: IrsNotice[]; }, ): Promise<{ fileId: string; @@ -31,19 +32,18 @@ export const generatePetitionPdfInteractor = ( applicationContext, body: { caseCaptionExtension, - caseDescription, caseTitle, contactPrimary, contactSecondary, hasIrsNotice, hasUploadedIrsNotice, irsNotices, + originalCaseType, partyType, petitionFacts, petitionReasons, preferredTrialCity, procedureType, - taxYear, }, endpoint: '/cases/generate-petition', }); diff --git a/shared/src/tools/externalFilingEvents.json b/shared/src/tools/externalFilingEvents.json index 8ed387c4ac9..1789c8157b2 100644 --- a/shared/src/tools/externalFilingEvents.json +++ b/shared/src/tools/externalFilingEvents.json @@ -395,7 +395,8 @@ "scenario": "Standard", "labelPreviousDocument": "", "labelFreeText": "", - "ordinalField": "" + "ordinalField": "", + "allowStatusReportOrder": true } ], "Motion": [ diff --git a/shared/src/tools/internalFilingEvents.json b/shared/src/tools/internalFilingEvents.json index 43935db499e..40e6da3cec6 100644 --- a/shared/src/tools/internalFilingEvents.json +++ b/shared/src/tools/internalFilingEvents.json @@ -557,7 +557,8 @@ "labelPreviousDocument": "", "labelFreeText": "", "labelFreeText2": "", - "ordinalField": "" + "ordinalField": "", + "allowStatusReportOrder": true } ], "Motion": [ diff --git a/web-api/runtimes/puppeteer/package-lock.json b/web-api/runtimes/puppeteer/package-lock.json index a4fd01fe788..40e46ab1d53 100644 --- a/web-api/runtimes/puppeteer/package-lock.json +++ b/web-api/runtimes/puppeteer/package-lock.json @@ -101,7 +101,6 @@ "version": "123.0.1", "resolved": "https://registry.npmjs.org/@sparticuz/chromium/-/chromium-123.0.1.tgz", "integrity": "sha512-RPrA99xrddbXXZjhUH1WZkTCK3QDQ77t/0y+vULtiW1uAlWLBxorxGnNTuzBDk6eNolxOVFrXZ2aoAN+/eB5TA==", - "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "tar-fs": "^3.0.5" @@ -116,12 +115,12 @@ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" }, "node_modules/@types/node": { - "version": "20.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", - "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz", + "integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==", "optional": true, "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.13.0" } }, "node_modules/@types/yauzl": { @@ -1640,9 +1639,9 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", + "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", "optional": true }, "node_modules/universalify": { diff --git a/web-api/src/business/useCases/courtIssuedOrder/fileCourtIssuedOrderInteractor.ts b/web-api/src/business/useCases/courtIssuedOrder/fileCourtIssuedOrderInteractor.ts index 7dd794795fe..dbc1747336f 100644 --- a/web-api/src/business/useCases/courtIssuedOrder/fileCourtIssuedOrderInteractor.ts +++ b/web-api/src/business/useCases/courtIssuedOrder/fileCourtIssuedOrderInteractor.ts @@ -8,7 +8,7 @@ import { } from '../../../../../shared/src/authorization/authorizationClientService'; import { ServerApplicationContext } from '@web-api/applicationContext'; import { UnauthorizedError } from '@web-api/errors/errors'; -import { orderBy } from 'lodash'; +import { orderBy, some } from 'lodash'; import { withLocking } from '@web-api/business/useCaseHelper/acquireLock'; export const fileCourtIssuedOrder = async ( @@ -112,10 +112,18 @@ export const fileCourtIssuedOrder = async ( const messageEntity = new Message(mostRecentMessage, { applicationContext, }).validate(); - messageEntity.addAttachment({ - documentId: docketEntryEntity.docketEntryId, - documentTitle: docketEntryEntity.documentTitle, - }); + + const isAttached = some( + messageEntity.attachments, + attachment => attachment.documentId === docketEntryEntity.docketEntryId, + ); + + if (!isAttached) { + messageEntity.addAttachment({ + documentId: docketEntryEntity.docketEntryId, + documentTitle: docketEntryEntity.documentTitle, + }); + } await applicationContext.getPersistenceGateway().updateMessage({ applicationContext, diff --git a/web-api/src/lambdas/cognitoAuthorizer/cognito-authorizer.test.ts b/web-api/src/lambdas/cognitoAuthorizer/cognito-authorizer.test.ts index 68488dac080..b3526210871 100644 --- a/web-api/src/lambdas/cognitoAuthorizer/cognito-authorizer.test.ts +++ b/web-api/src/lambdas/cognitoAuthorizer/cognito-authorizer.test.ts @@ -4,11 +4,10 @@ import { transports } from 'winston'; import axios from 'axios'; import fs from 'fs'; import jwk from 'jsonwebtoken'; -import jwkToPem from 'jwk-to-pem'; + const { createLogger: actualCreateLogger } = jest.requireActual( '../../../src/createLogger', ); -jest.mock('jwk-to-pem', () => jest.fn()); jest.mock('../../../src/createLogger', () => { return { createLogger: jest.fn() }; }); @@ -18,6 +17,15 @@ jest.mock('jsonwebtoken', () => { verify: jest.fn(), }; }); +jest.mock('crypto', () => { + return { + createPublicKey: jest.fn().mockImplementation(() => ({ + export: jest.fn().mockReturnValue({ + toString: jest.fn().mockReturnValue('test-pem'), + }), + })), + }; +}); describe('cognito-authorizer', () => { const TOKEN_VALUE = @@ -30,14 +38,6 @@ describe('cognito-authorizer', () => { }); }); - jwkToPem.mockImplementation(key => { - if (key.kid !== 'key-identifier') { - throw new Error('wrong key was given'); - } - - return 'test-pem'; - }); - jwk.verify.mockImplementation((token, pem, options, callback) => { if (token !== TOKEN_VALUE || pem !== 'test-pem') { throw new Error('wrong token or pem was passed to verification'); @@ -164,14 +164,6 @@ describe('cognito-authorizer', () => { }); }); - jwkToPem.mockImplementation(key => { - if (key.kid !== 'key-identifier') { - throw new Error('wrong key was given'); - } - - return 'test-pem'; - }); - jwk.verify.mockImplementation((token, pem, options, callback) => { if (token !== TOKEN_VALUE || pem !== 'test-pem') { throw new Error('wrong token or pem was passed to verification'); @@ -271,8 +263,6 @@ describe('cognito-authorizer', () => { }); }); - jwkToPem.mockImplementation(() => 'test-pem'); - jwk.verify.mockImplementation((token, pem, options, callback) => { callback(null, { 'custom:userId': 'test-custom:userId' }); }); diff --git a/web-api/src/lambdas/cognitoAuthorizer/createAuthorizer.ts b/web-api/src/lambdas/cognitoAuthorizer/createAuthorizer.ts index c5344fdc8d4..1a0ca6c3d5c 100644 --- a/web-api/src/lambdas/cognitoAuthorizer/createAuthorizer.ts +++ b/web-api/src/lambdas/cognitoAuthorizer/createAuthorizer.ts @@ -3,11 +3,11 @@ import { APIGatewayRequestAuthorizerEvent, } from 'aws-lambda'; import { createLogger } from '../../createLogger'; +import { createPublicKey } from 'crypto'; import { environment } from '@web-api/environment'; import { transports } from 'winston'; import axios from 'axios'; import jwk from 'jsonwebtoken'; -import jwkToPem from 'jwk-to-pem'; const transport = new transports.Console({ handleExceptions: true, @@ -50,7 +50,13 @@ const getKeysForIssuer = async iss => { const verify = (key, token) => new Promise((resolve, reject) => { - const pem = jwkToPem(key); + const pem = createPublicKey({ + format: 'jwk', + key, + }) + .export({ format: 'pem', type: 'spki' }) + .toString(); + const options = { issuer: [issMain, issIrs] }; jwk.verify(token, pem, options, (err, payload) => { diff --git a/web-api/src/lambdas/cognitoAuthorizer/websocket-authorizer.test.ts b/web-api/src/lambdas/cognitoAuthorizer/websocket-authorizer.test.ts index 312ba28b7f9..d3b03fbc0b1 100644 --- a/web-api/src/lambdas/cognitoAuthorizer/websocket-authorizer.test.ts +++ b/web-api/src/lambdas/cognitoAuthorizer/websocket-authorizer.test.ts @@ -7,8 +7,6 @@ import { transports } from 'winston'; import axios from 'axios'; import fs from 'fs'; import jwk from 'jsonwebtoken'; -import jwkToPem from 'jwk-to-pem'; -jest.mock('jwk-to-pem', () => jest.fn()); jest.mock('../../../src/createLogger', () => { return { createLogger: jest.fn() }; }); @@ -18,6 +16,15 @@ jest.mock('jsonwebtoken', () => { verify: jest.fn(), }; }); +jest.mock('crypto', () => { + return { + createPublicKey: jest.fn().mockImplementation(() => ({ + export: jest.fn().mockReturnValue({ + toString: jest.fn().mockReturnValue('test-pem'), + }), + })), + }; +}); describe('websocket-authorizer', () => { const TOKEN_VALUE = @@ -30,14 +37,6 @@ describe('websocket-authorizer', () => { }); }); - jwkToPem.mockImplementation(key => { - if (key.kid !== 'key-identifier') { - throw new Error('wrong key was given'); - } - - return 'test-pem'; - }); - jwk.verify.mockImplementation((token, pem, options, callback) => { if (token !== TOKEN_VALUE || pem !== 'test-pem') { throw new Error('wrong token or pem was passed to verification'); @@ -166,14 +165,6 @@ describe('websocket-authorizer', () => { }); }); - jwkToPem.mockImplementation(key => { - if (key.kid !== 'key-identifier') { - throw new Error('wrong key was given'); - } - - return 'test-pem'; - }); - jwk.verify.mockImplementation((token, pem, options, callback) => { if (token !== TOKEN_VALUE || pem !== 'test-pem') { throw new Error('wrong token or pem was passed to verification'); @@ -273,8 +264,6 @@ describe('websocket-authorizer', () => { }); }); - jwkToPem.mockImplementation(() => 'test-pem'); - jwk.verify.mockImplementation((token, pem, options, callback) => { callback(null, { 'custom:userId': 'test-custom:userId' }); }); diff --git a/web-api/src/logger.ts b/web-api/src/logger.ts index eb08486c3fa..89261ab47cc 100644 --- a/web-api/src/logger.ts +++ b/web-api/src/logger.ts @@ -12,11 +12,9 @@ const console = () => handleRejections: true, })); -export const logger = - (transport = console()) => - (req, res, next) => { - const createdLogger = createLogger({ transports: [transport] }); - +export const logger = (transport = console()) => { + const createdLogger = createLogger({ transports: [transport] }); + return (req, res, next) => { if (process.env.NODE_ENV === 'production') { const requestBody = cloneDeep(req.body); @@ -66,6 +64,7 @@ export const logger = return next(); }; +}; function redactPasswordFields(obj) { const passwordRegex = /password/i; diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/178af2d2-fab1-445a-a729-d3da63517a0a._S3rver_metadata.json b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/178af2d2-fab1-445a-a729-d3da63517a0a._S3rver_metadata.json new file mode 100644 index 00000000000..d61de8aaa51 --- /dev/null +++ b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/178af2d2-fab1-445a-a729-d3da63517a0a._S3rver_metadata.json @@ -0,0 +1 @@ +{ "content-type": "application/pdf" } diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/178af2d2-fab1-445a-a729-d3da63517a0a._S3rver_object b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/178af2d2-fab1-445a-a729-d3da63517a0a._S3rver_object new file mode 100644 index 00000000000..b562e8cb6a9 Binary files /dev/null and b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/178af2d2-fab1-445a-a729-d3da63517a0a._S3rver_object differ diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/178af2d2-fab1-445a-a729-d3da63517a0a._S3rver_object.md5 b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/178af2d2-fab1-445a-a729-d3da63517a0a._S3rver_object.md5 new file mode 100644 index 00000000000..76dc73b22b1 --- /dev/null +++ b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/178af2d2-fab1-445a-a729-d3da63517a0a._S3rver_object.md5 @@ -0,0 +1 @@ +853df0ac3ebd6343be5490072eb870d6 \ No newline at end of file diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/49acedbf-978d-476c-aae9-42bb75595dd3._S3rver_metadata.json b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/49acedbf-978d-476c-aae9-42bb75595dd3._S3rver_metadata.json new file mode 100644 index 00000000000..d61de8aaa51 --- /dev/null +++ b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/49acedbf-978d-476c-aae9-42bb75595dd3._S3rver_metadata.json @@ -0,0 +1 @@ +{ "content-type": "application/pdf" } diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/49acedbf-978d-476c-aae9-42bb75595dd3._S3rver_object b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/49acedbf-978d-476c-aae9-42bb75595dd3._S3rver_object new file mode 100644 index 00000000000..b562e8cb6a9 Binary files /dev/null and b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/49acedbf-978d-476c-aae9-42bb75595dd3._S3rver_object differ diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/49acedbf-978d-476c-aae9-42bb75595dd3._S3rver_object.md5 b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/49acedbf-978d-476c-aae9-42bb75595dd3._S3rver_object.md5 new file mode 100644 index 00000000000..76dc73b22b1 --- /dev/null +++ b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/49acedbf-978d-476c-aae9-42bb75595dd3._S3rver_object.md5 @@ -0,0 +1 @@ +853df0ac3ebd6343be5490072eb870d6 \ No newline at end of file diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/61967538-5261-4bb9-b3b6-8072a536d007._S3rver_metadata.json b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/61967538-5261-4bb9-b3b6-8072a536d007._S3rver_metadata.json new file mode 100644 index 00000000000..d61de8aaa51 --- /dev/null +++ b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/61967538-5261-4bb9-b3b6-8072a536d007._S3rver_metadata.json @@ -0,0 +1 @@ +{ "content-type": "application/pdf" } diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/61967538-5261-4bb9-b3b6-8072a536d007._S3rver_object b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/61967538-5261-4bb9-b3b6-8072a536d007._S3rver_object new file mode 100644 index 00000000000..b562e8cb6a9 Binary files /dev/null and b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/61967538-5261-4bb9-b3b6-8072a536d007._S3rver_object differ diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/61967538-5261-4bb9-b3b6-8072a536d007._S3rver_object.md5 b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/61967538-5261-4bb9-b3b6-8072a536d007._S3rver_object.md5 new file mode 100644 index 00000000000..76dc73b22b1 --- /dev/null +++ b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/61967538-5261-4bb9-b3b6-8072a536d007._S3rver_object.md5 @@ -0,0 +1 @@ +853df0ac3ebd6343be5490072eb870d6 \ No newline at end of file diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/7be2dea1-4428-4917-a66d-0d474e57ee02._S3rver_metadata.json b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/7be2dea1-4428-4917-a66d-0d474e57ee02._S3rver_metadata.json new file mode 100644 index 00000000000..d61de8aaa51 --- /dev/null +++ b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/7be2dea1-4428-4917-a66d-0d474e57ee02._S3rver_metadata.json @@ -0,0 +1 @@ +{ "content-type": "application/pdf" } diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/7be2dea1-4428-4917-a66d-0d474e57ee02._S3rver_object b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/7be2dea1-4428-4917-a66d-0d474e57ee02._S3rver_object new file mode 100644 index 00000000000..b562e8cb6a9 Binary files /dev/null and b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/7be2dea1-4428-4917-a66d-0d474e57ee02._S3rver_object differ diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/7be2dea1-4428-4917-a66d-0d474e57ee02._S3rver_object.md5 b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/7be2dea1-4428-4917-a66d-0d474e57ee02._S3rver_object.md5 new file mode 100644 index 00000000000..76dc73b22b1 --- /dev/null +++ b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/7be2dea1-4428-4917-a66d-0d474e57ee02._S3rver_object.md5 @@ -0,0 +1 @@ +853df0ac3ebd6343be5490072eb870d6 \ No newline at end of file diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/edf69e60-f7e5-483e-9992-f80c05cf4eae._S3rver_metadata.json b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/edf69e60-f7e5-483e-9992-f80c05cf4eae._S3rver_metadata.json new file mode 100644 index 00000000000..d61de8aaa51 --- /dev/null +++ b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/edf69e60-f7e5-483e-9992-f80c05cf4eae._S3rver_metadata.json @@ -0,0 +1 @@ +{ "content-type": "application/pdf" } diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/edf69e60-f7e5-483e-9992-f80c05cf4eae._S3rver_object b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/edf69e60-f7e5-483e-9992-f80c05cf4eae._S3rver_object new file mode 100644 index 00000000000..b562e8cb6a9 Binary files /dev/null and b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/edf69e60-f7e5-483e-9992-f80c05cf4eae._S3rver_object differ diff --git a/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/edf69e60-f7e5-483e-9992-f80c05cf4eae._S3rver_object.md5 b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/edf69e60-f7e5-483e-9992-f80c05cf4eae._S3rver_object.md5 new file mode 100644 index 00000000000..76dc73b22b1 --- /dev/null +++ b/web-api/storage/fixtures/s3/noop-documents-local-us-east-1/edf69e60-f7e5-483e-9992-f80c05cf4eae._S3rver_object.md5 @@ -0,0 +1 @@ +853df0ac3ebd6343be5490072eb870d6 \ No newline at end of file diff --git a/web-api/storage/fixtures/seed/efcms-local.json b/web-api/storage/fixtures/seed/efcms-local.json index 7cd9cfab168..3dac6bdfd5d 100644 --- a/web-api/storage/fixtures/seed/efcms-local.json +++ b/web-api/storage/fixtures/seed/efcms-local.json @@ -11502,6 +11502,52 @@ "servedAt": "2023-04-03T15:52:59.426Z", "docketNumber": "102-67" }, + { + "stampData": {}, + "servedParties": [ + { + "name": "Test Private Practitioner", + "email": "privatePractitioner@example.com" + }, + { + "name": "Test IRS Practitioner", + "email": "irspractitioner@example.com" + } + ], + "attachments": false, + "isStricken": false, + "documentType": "Status Report", + "filingDate": "2024-06-28T19:55:09.126Z", + "pending": false, + "redactionAcknowledgement": true, + "isDraft": false, + "receivedAt": "2024-06-28T04:00:00.000Z", + "isOnDocketRecord": true, + "createdAt": "2024-06-28T19:55:09.126Z", + "numberOfPages": 2, + "scenario": "Standard", + "entityName": "DocketEntry", + "filedBy": "Resp.", + "docketEntryId": "7be2dea1-4428-4917-a66d-0d474e57ee02", + "sk": "docket-entry|7be2dea1-4428-4917-a66d-0d474e57ee02", + "certificateOfService": false, + "documentTitle": "Status Report", + "relationship": "primaryDocument", + "addToCoversheet": false, + "hasSupportingDocuments": false, + "filedByRole": "irsPractitioner", + "partyIrsPractitioner": true, + "index": 7, + "isFileAttached": true, + "userId": "5805d1ab-18d0-43ec-bafb-654e83405416", + "eventCode": "RPT", + "processingStatus": "complete", + "filers": [], + "servedPartiesCode": "B", + "pk": "case|102-67", + "servedAt": "2024-06-28T19:55:09.127Z", + "docketNumber": "102-67" + }, { "stampData": {}, "servedParties": [ @@ -11765,6 +11811,38 @@ "sentByUserId": "5805d1ab-18d0-43ec-bafb-654e83405416", "updatedAt": "2023-08-08T17:32:21.433Z" }, + { + "associatedJudge": "Chief Judge", + "caseStatus": "General Docket - At Issue (Ready for Trial)", + "gsi1pk": "work-item|fe6a80d6-39f6-4a71-b649-36ccdb6788d6", + "caseTitle": "Dacey Cox", + "section": "docket", + "workItemId": "fe6a80d6-39f6-4a71-b649-36ccdb6788d6", + "assigneeId": null, + "sentBy": "Test IRS Practitioner", + "createdAt": "2024-06-28T19:55:09.127Z", + "highPriority": false, + "leadDocketNumber": "102-67", + "assigneeName": null, + "entityName": "WorkItem", + "sk": "work-item|fe6a80d6-39f6-4a71-b649-36ccdb6788d6", + "docketNumberWithSuffix": "102-67L", + "docketEntry": { + "eventCode": "RPT", + "createdAt": "2024-06-28T19:55:09.126Z", + "documentType": "Status Report", + "filedBy": "Resp.", + "docketEntryId": "7be2dea1-4428-4917-a66d-0d474e57ee02", + "documentTitle": "Status Report", + "isFileAttached": true, + "receivedAt": "2024-06-28T04:00:00.000Z", + "userId": "5805d1ab-18d0-43ec-bafb-654e83405416" + }, + "pk": "case|102-67", + "docketNumber": "102-67", + "sentByUserId": "5805d1ab-18d0-43ec-bafb-654e83405416", + "updatedAt": "2024-06-28T19:55:09.127Z" + }, { "associatedJudge": "Chief Judge", "procedureType": "Small", @@ -12776,6 +12854,55 @@ "servedAt": "2023-04-03T15:53:18.587Z", "docketNumber": "103-67" }, + { + "stampData": {}, + "servedParties": [ + { + "name": "Brett Osborne", + "email": "petitioner@example.com" + }, + { + "name": "Test IRS Practitioner", + "email": "irspractitioner@example.com" + }, + { + "name": "Britanney Wiley" + } + ], + "attachments": false, + "isStricken": false, + "documentType": "Status Report", + "filingDate": "2024-06-28T19:55:09.130Z", + "pending": false, + "redactionAcknowledgement": true, + "isDraft": false, + "receivedAt": "2024-06-28T04:00:00.000Z", + "isOnDocketRecord": true, + "createdAt": "2024-06-28T19:55:09.130Z", + "numberOfPages": 2, + "scenario": "Standard", + "entityName": "DocketEntry", + "filedBy": "Resp.", + "docketEntryId": "7be2dea1-4428-4917-a66d-0d474e57ee02", + "sk": "docket-entry|7be2dea1-4428-4917-a66d-0d474e57ee02", + "certificateOfService": false, + "documentTitle": "Status Report", + "relationship": "primaryDocument", + "addToCoversheet": false, + "hasSupportingDocuments": false, + "filedByRole": "irsPractitioner", + "partyIrsPractitioner": true, + "index": 7, + "isFileAttached": true, + "userId": "5805d1ab-18d0-43ec-bafb-654e83405416", + "eventCode": "RPT", + "processingStatus": "complete", + "filers": [], + "servedPartiesCode": "B", + "pk": "case|103-67", + "servedAt": "2024-06-28T19:55:09.130Z", + "docketNumber": "103-67" + }, { "stampData": {}, "servedParties": [ @@ -12981,6 +13108,38 @@ "sentByUserId": "5805d1ab-18d0-43ec-bafb-654e83405416", "updatedAt": "2023-08-08T17:32:21.452Z" }, + { + "associatedJudge": "Chief Judge", + "caseStatus": "General Docket - At Issue (Ready for Trial)", + "gsi1pk": "work-item|ea8e7abc-ead9-42ad-98e5-ddc963837b1e", + "caseTitle": "Britanney Wiley", + "section": "docket", + "workItemId": "ea8e7abc-ead9-42ad-98e5-ddc963837b1e", + "assigneeId": null, + "sentBy": "Test IRS Practitioner", + "createdAt": "2024-06-28T19:55:09.130Z", + "highPriority": false, + "leadDocketNumber": "102-67", + "assigneeName": null, + "entityName": "WorkItem", + "sk": "work-item|ea8e7abc-ead9-42ad-98e5-ddc963837b1e", + "docketNumberWithSuffix": "103-67L", + "docketEntry": { + "eventCode": "RPT", + "createdAt": "2024-06-28T19:55:09.130Z", + "documentType": "Status Report", + "filedBy": "Resp.", + "docketEntryId": "7be2dea1-4428-4917-a66d-0d474e57ee02", + "documentTitle": "Status Report", + "isFileAttached": true, + "receivedAt": "2024-06-28T04:00:00.000Z", + "userId": "5805d1ab-18d0-43ec-bafb-654e83405416" + }, + "pk": "case|103-67", + "docketNumber": "103-67", + "sentByUserId": "5805d1ab-18d0-43ec-bafb-654e83405416", + "updatedAt": "2024-06-28T19:55:09.130Z" + }, { "associatedJudge": "Chief Judge", "isSealed": false, @@ -14222,7 +14381,7 @@ "procedureType": "Regular", "isPaper": true, "automaticBlocked": true, - "automaticBlockedDate": "2023-08-08T17:32:21.475Z", + "automaticBlockedDate": "2024-06-28T19:55:09.128Z", "qcCompleteForTrial": {}, "gsi1pk": "leadCase|102-67", "orderForFilingFee": false, @@ -14467,6 +14626,54 @@ "servedAt": "2023-04-03T15:53:43.153Z", "docketNumber": "104-67" }, + { + "stampData": {}, + "servedParties": [ + { + "name": "Test IRS Practitioner", + "email": "irspractitioner@example.com" + }, + { + "name": "Cassidy Mejia" + }, + { + "name": "juvek@mailinator.com" + } + ], + "attachments": false, + "isStricken": false, + "documentType": "Status Report", + "filingDate": "2024-06-28T19:55:09.120Z", + "pending": false, + "redactionAcknowledgement": true, + "isDraft": false, + "receivedAt": "2024-06-28T04:00:00.000Z", + "isOnDocketRecord": true, + "createdAt": "2024-06-28T19:55:09.120Z", + "numberOfPages": 2, + "scenario": "Standard", + "entityName": "DocketEntry", + "filedBy": "Resp.", + "docketEntryId": "7be2dea1-4428-4917-a66d-0d474e57ee02", + "sk": "docket-entry|7be2dea1-4428-4917-a66d-0d474e57ee02", + "certificateOfService": false, + "documentTitle": "Status Report", + "relationship": "primaryDocument", + "addToCoversheet": false, + "hasSupportingDocuments": false, + "filedByRole": "irsPractitioner", + "partyIrsPractitioner": true, + "index": 7, + "isFileAttached": true, + "userId": "5805d1ab-18d0-43ec-bafb-654e83405416", + "eventCode": "RPT", + "processingStatus": "complete", + "filers": [], + "servedPartiesCode": "B", + "pk": "case|104-67", + "servedAt": "2024-06-28T19:55:09.122Z", + "docketNumber": "104-67" + }, { "stampData": {}, "servedParties": [ @@ -14645,6 +14852,38 @@ "sentByUserId": "3805d1ab-18d0-43ec-bafb-654e83405416", "completedBy": "Test Petitionsclerk" }, + { + "associatedJudge": "Chief Judge", + "caseStatus": "General Docket - At Issue (Ready for Trial)", + "gsi1pk": "work-item|4e692ade-3910-4bce-b835-d665c740ab3a", + "caseTitle": "Cassidy Mejia & juvek@mailinator.com, Deceased, Cassidy Mejia, Surviving Spouse", + "section": "docket", + "workItemId": "4e692ade-3910-4bce-b835-d665c740ab3a", + "assigneeId": null, + "sentBy": "Test IRS Practitioner", + "createdAt": "2024-06-28T19:55:09.121Z", + "highPriority": false, + "leadDocketNumber": "102-67", + "assigneeName": null, + "entityName": "WorkItem", + "sk": "work-item|4e692ade-3910-4bce-b835-d665c740ab3a", + "docketNumberWithSuffix": "104-67L", + "docketEntry": { + "eventCode": "RPT", + "createdAt": "2024-06-28T19:55:09.120Z", + "documentType": "Status Report", + "filedBy": "Resp.", + "docketEntryId": "7be2dea1-4428-4917-a66d-0d474e57ee02", + "documentTitle": "Status Report", + "isFileAttached": true, + "receivedAt": "2024-06-28T04:00:00.000Z", + "userId": "5805d1ab-18d0-43ec-bafb-654e83405416" + }, + "pk": "case|104-67", + "docketNumber": "104-67", + "sentByUserId": "5805d1ab-18d0-43ec-bafb-654e83405416", + "updatedAt": "2024-06-28T19:55:09.121Z" + }, { "associatedJudge": "Chief Judge", "procedureType": "Regular", @@ -19166,6 +19405,52 @@ "servedAt": "2023-08-08T17:32:21.464Z", "docketNumber": "105-67" }, + { + "stampData": {}, + "servedParties": [ + { + "name": "Test Private Practitioner", + "email": "privatePractitioner@example.com" + }, + { + "name": "Test IRS Practitioner", + "email": "irspractitioner@example.com" + } + ], + "attachments": false, + "isStricken": false, + "documentType": "Status Report", + "filingDate": "2024-06-28T19:55:09.124Z", + "pending": false, + "redactionAcknowledgement": true, + "isDraft": false, + "receivedAt": "2024-06-28T04:00:00.000Z", + "isOnDocketRecord": true, + "createdAt": "2024-06-28T19:55:09.124Z", + "numberOfPages": 2, + "scenario": "Standard", + "entityName": "DocketEntry", + "filedBy": "Resp.", + "docketEntryId": "7be2dea1-4428-4917-a66d-0d474e57ee02", + "sk": "docket-entry|7be2dea1-4428-4917-a66d-0d474e57ee02", + "certificateOfService": false, + "documentTitle": "Status Report", + "relationship": "primaryDocument", + "addToCoversheet": false, + "hasSupportingDocuments": false, + "filedByRole": "irsPractitioner", + "partyIrsPractitioner": true, + "index": 6, + "isFileAttached": true, + "userId": "5805d1ab-18d0-43ec-bafb-654e83405416", + "eventCode": "RPT", + "processingStatus": "complete", + "filers": [], + "servedPartiesCode": "B", + "pk": "case|105-67", + "servedAt": "2024-06-28T19:55:09.125Z", + "docketNumber": "105-67" + }, { "stampData": {}, "servedParties": [ @@ -19349,6 +19634,38 @@ "pk": "case|105-67", "email": "privatePractitioner@example.com" }, + { + "associatedJudge": "Chief Judge", + "caseStatus": "General Docket - At Issue (Ready for Trial)", + "gsi1pk": "work-item|1158ead3-f46d-4013-9a5d-c36f6290ab68", + "caseTitle": "Magee Schmidt, Deceased, Magee Schmidt, Surviving Spouse", + "section": "docket", + "workItemId": "1158ead3-f46d-4013-9a5d-c36f6290ab68", + "assigneeId": null, + "sentBy": "Test IRS Practitioner", + "createdAt": "2024-06-28T19:55:09.125Z", + "highPriority": false, + "leadDocketNumber": "102-67", + "assigneeName": null, + "entityName": "WorkItem", + "sk": "work-item|1158ead3-f46d-4013-9a5d-c36f6290ab68", + "docketNumberWithSuffix": "105-67L", + "docketEntry": { + "eventCode": "RPT", + "createdAt": "2024-06-28T19:55:09.124Z", + "documentType": "Status Report", + "filedBy": "Resp.", + "docketEntryId": "7be2dea1-4428-4917-a66d-0d474e57ee02", + "documentTitle": "Status Report", + "isFileAttached": true, + "receivedAt": "2024-06-28T04:00:00.000Z", + "userId": "5805d1ab-18d0-43ec-bafb-654e83405416" + }, + "pk": "case|105-67", + "docketNumber": "105-67", + "sentByUserId": "5805d1ab-18d0-43ec-bafb-654e83405416", + "updatedAt": "2024-06-28T19:55:09.125Z" + }, { "associatedJudge": "Chief Judge", "caseStatus": "General Docket - At Issue (Ready for Trial)", @@ -20074,13 +20391,20 @@ }, { "associatedJudge": "Chief Judge", + "isSealed": false, "procedureType": "Regular", "isPaper": false, + "automaticBlocked": true, + "automaticBlockedDate": "2024-06-28T19:54:22.477Z", + "qcCompleteForTrial": {}, "irsNoticeDate": null, "orderForFilingFee": false, + "petitionPaymentStatus": "Not paid", "partyType": "Partnership (as a partnership representative under BBA)", "receivedAt": "2019-08-16T17:29:10.132Z", "caseType": "CDP (Lien/Levy)", + "orderDesignatingPlaceOfTrial": false, + "automaticBlockedReason": "Due Date", "createdAt": "2019-08-16T17:29:10.132Z", "noticeOfAttachments": false, "entityName": "Case", @@ -20151,16 +20475,63 @@ "caseStatusHistory": [], "sortableDocketNumber": 2019000107, "orderForCds": false, - "userId": "7805d1ab-18d0-43ec-bafb-654e83405416", "orderForAmendedPetition": false, "orderToShowCause": false, "preferredTrialCity": "Las Vegas, Nevada", "initialCaption": "Tatum Craig, Wayne Obrien, Partnership Representative, Petitioner(s)", + "hasPendingItems": false, "orderForAmendedPetitionAndFilingFee": false, "pk": "case|107-19", "docketNumber": "107-19", + "statistics": [], "status": "General Docket - At Issue (Ready for Trial)" }, + { + "stampData": {}, + "servedParties": [ + { + "name": "Test Private Practitioner", + "email": "privatePractitioner@example.com" + }, + { + "name": "Test IRS Practitioner", + "email": "irspractitioner@example.com" + } + ], + "attachments": false, + "isStricken": false, + "documentType": "Status Report", + "filingDate": "2024-06-28T19:54:22.466Z", + "pending": false, + "redactionAcknowledgement": true, + "isDraft": false, + "receivedAt": "2024-06-28T04:00:00.000Z", + "isOnDocketRecord": true, + "createdAt": "2024-06-28T19:54:22.466Z", + "numberOfPages": 2, + "scenario": "Standard", + "entityName": "DocketEntry", + "filedBy": "Resp.", + "docketEntryId": "178af2d2-fab1-445a-a729-d3da63517a0a", + "sk": "docket-entry|178af2d2-fab1-445a-a729-d3da63517a0a", + "certificateOfService": false, + "documentTitle": "Status Report", + "relationship": "primaryDocument", + "addToCoversheet": false, + "hasSupportingDocuments": false, + "filedByRole": "irsPractitioner", + "partyIrsPractitioner": true, + "index": 5, + "isFileAttached": true, + "userId": "5805d1ab-18d0-43ec-bafb-654e83405416", + "eventCode": "RPT", + "processingStatus": "complete", + "filers": [], + "servedPartiesCode": "B", + "pk": "case|107-19", + "servedAt": "2024-06-28T19:54:22.468Z", + "docketNumber": "107-19" + }, { "date": null, "servedParties": [ @@ -20282,6 +20653,49 @@ "servedAt": "2019-08-16T17:29:10.133Z", "docketNumber": "107-19" }, + { + "stampData": {}, + "isStricken": false, + "filingDate": "2024-07-10T21:36:34.809Z", + "pending": false, + "isDraft": true, + "receivedAt": "2024-07-10T04:00:00.000Z", + "isOnDocketRecord": false, + "createdAt": "2024-07-10T21:36:34.809Z", + "entityName": "DocketEntry", + "filedBy": "Colvin", + "docketEntryId": "49acedbf-978d-476c-aae9-42bb75595dd3", + "sk": "docket-entry|49acedbf-978d-476c-aae9-42bb75595dd3", + "documentTitle": "Test Status Report Order (Unsigned)", + "relationship": "primaryDocument", + "addToCoversheet": false, + "draftOrderState": { + "orderType": "statusReport", + "addedDocketNumbers": [], + "docketEntryDescription": "Test Status Report Order (Unsigned)", + "dueDate": "2024-07-11", + "jurisdiction": "retained", + "richText": "

    On June 28, 2024, a status report was filed in this case (Index no. 5). For cause, it is

    ORDERED that the parties shall file a further status report by July 11, 2024. It is further

    ORDERED that this case is stricken from the trial session. It is further

    ORDERED that jurisdiction is retained by the undersigned. It is further

    ORDERED that Test

    ", + "issueOrder": "allCasesInGroup", + "eventCode": "O", + "additionalOrderText": "Test", + "strickenFromTrialSessions": true, + "freeText": "Test Status Report Order (Unsigned)", + "statusReportFilingDate": "2024-06-28", + "statusReportIndex": "5", + "documentTitle": "Test Status Report Order (Unsigned)", + "docketNumber": "107-19" + }, + "filedByRole": "judge", + "isFileAttached": true, + "userId": "dabbad00-18d0-43ec-bafb-654e83405416", + "eventCode": "O", + "processingStatus": "complete", + "filers": [], + "freeText": "Test Status Report Order (Unsigned)", + "pk": "case|107-19", + "docketNumber": "107-19" + }, { "servedParties": [ { @@ -20314,6 +20728,53 @@ "pk": "case|107-19", "docketNumber": "107-19" }, + { + "stampData": {}, + "isStricken": false, + "filingDate": "2024-07-10T21:37:05.678Z", + "pending": false, + "isDraft": true, + "receivedAt": "2024-07-10T04:00:00.000Z", + "isOnDocketRecord": false, + "signedJudgeName": "John O. Colvin", + "createdAt": "2024-07-10T21:37:10.438Z", + "entityName": "DocketEntry", + "filedBy": "Colvin", + "docketEntryId": "61967538-5261-4bb9-b3b6-8072a536d007", + "sk": "docket-entry|61967538-5261-4bb9-b3b6-8072a536d007", + "documentIdBeforeSignature": "edf69e60-f7e5-483e-9992-f80c05cf4eae", + "documentTitle": "Test Status Report Order (Signed)", + "relationship": "primaryDocument", + "addToCoversheet": false, + "draftOrderState": { + "orderType": "statusReport", + "addedDocketNumbers": [], + "docketEntryDescription": "Test Status Report Order (Signed)", + "dueDate": "2024-07-11", + "jurisdiction": "retained", + "richText": "

    On June 28, 2024, a status report was filed in this case (Index no. 5). For cause, it is

    ORDERED that the parties shall file a further status report by July 11, 2024. It is further

    ORDERED that this case is stricken from the trial session. It is further

    ORDERED that jurisdiction is retained by the undersigned. It is further

    ORDERED that Test

    ", + "issueOrder": "allCasesInGroup", + "eventCode": "O", + "additionalOrderText": "Test", + "strickenFromTrialSessions": true, + "freeText": "Test Status Report Order (Signed)", + "statusReportFilingDate": "2024-06-28", + "statusReportIndex": "5", + "documentTitle": "Test Status Report Order (Signed)", + "docketNumber": "107-19" + }, + "filedByRole": "judge", + "isFileAttached": true, + "userId": "dabbad00-18d0-43ec-bafb-654e83405416", + "eventCode": "O", + "processingStatus": "complete", + "filers": [], + "freeText": "Test Status Report Order (Signed)", + "signedAt": "2024-07-10T21:37:10.438Z", + "pk": "case|107-19", + "signedByUserId": "dabbad00-18d0-43ec-bafb-654e83405416", + "docketNumber": "107-19" + }, { "isStricken": false, "documentType": "Statement of Taxpayer Identification", @@ -20401,6 +20862,93 @@ "userId": "5805d1ab-18d0-43ec-bafb-654e83405416", "email": "irspractitioner@example.com" }, + { + "attachments": [ + { + "documentId": "61967538-5261-4bb9-b3b6-8072a536d007" + } + ], + "isRepliedTo": false, + "caseStatus": "General Docket - At Issue (Ready for Trial)", + "fromUserId": "dabbad00-18d0-43ec-bafb-654e83405416", + "subject": "Test Status Report Order (Signed)", + "toSection": "colvinsChambers", + "gsi1pk": "message|32484c7f-4606-49fc-89f1-27ba1d5596be", + "caseTitle": "Tatum Craig, Wayne Obrien, Partnership Representative", + "isRead": false, + "messageId": "32484c7f-4606-49fc-89f1-27ba1d5596be", + "message": "Test", + "toUserId": "dabbad00-18d0-43ec-bafb-654e83405416", + "createdAt": "2024-07-10T21:38:18.175Z", + "entityName": "Message", + "parentMessageId": "32484c7f-4606-49fc-89f1-27ba1d5596be", + "sk": "message|32484c7f-4606-49fc-89f1-27ba1d5596be", + "docketNumberWithSuffix": "107-19L", + "from": "Colvin", + "to": "Colvin", + "pk": "case|107-19", + "fromSection": "colvinsChambers", + "docketNumber": "107-19", + "isCompleted": false + }, + { + "attachments": [ + { + "documentId": "49acedbf-978d-476c-aae9-42bb75595dd3" + } + ], + "isRepliedTo": false, + "caseStatus": "General Docket - At Issue (Ready for Trial)", + "fromUserId": "dabbad00-18d0-43ec-bafb-654e83405416", + "subject": "Test Status Report Order (Unsigned)", + "toSection": "colvinsChambers", + "gsi1pk": "message|34483b5b-29de-4ad4-8caa-59f71ad6d906", + "caseTitle": "Tatum Craig, Wayne Obrien, Partnership Representative", + "isRead": false, + "messageId": "34483b5b-29de-4ad4-8caa-59f71ad6d906", + "message": "Test", + "toUserId": "dabbad00-18d0-43ec-bafb-654e83405416", + "createdAt": "2024-07-10T21:37:51.875Z", + "entityName": "Message", + "parentMessageId": "34483b5b-29de-4ad4-8caa-59f71ad6d906", + "sk": "message|34483b5b-29de-4ad4-8caa-59f71ad6d906", + "docketNumberWithSuffix": "107-19L", + "from": "Colvin", + "to": "Colvin", + "pk": "case|107-19", + "fromSection": "colvinsChambers", + "docketNumber": "107-19", + "isCompleted": false + }, + { + "attachments": [ + { + "documentId": "178af2d2-fab1-445a-a729-d3da63517a0a" + } + ], + "isRepliedTo": false, + "caseStatus": "General Docket - At Issue (Ready for Trial)", + "fromUserId": "dabbad00-18d0-43ec-bafb-654e83405416", + "subject": "Status Report", + "toSection": "colvinsChambers", + "gsi1pk": "message|73d4365b-8b3a-4b01-9ca3-7087f7a6d4b5", + "caseTitle": "Tatum Craig, Wayne Obrien, Partnership Representative", + "isRead": false, + "messageId": "73d4365b-8b3a-4b01-9ca3-7087f7a6d4b5", + "message": "Test", + "toUserId": "dabbad00-18d0-43ec-bafb-654e83405416", + "createdAt": "2024-07-10T21:35:24.000Z", + "entityName": "Message", + "parentMessageId": "73d4365b-8b3a-4b01-9ca3-7087f7a6d4b5", + "sk": "message|73d4365b-8b3a-4b01-9ca3-7087f7a6d4b5", + "docketNumberWithSuffix": "107-19L", + "from": "Colvin", + "to": "Colvin", + "pk": "case|107-19", + "fromSection": "colvinsChambers", + "docketNumber": "107-19", + "isCompleted": false + }, { "role": "privatePractitioner", "representing": ["7805d1ab-18d0-43ec-bafb-654e83405416"], @@ -20463,6 +21011,37 @@ "sentByUserId": "1805d1ab-18d0-43ec-bafb-654e83405416", "completedBy": "Test Docketclerk" }, + { + "associatedJudge": "Chief Judge", + "caseStatus": "General Docket - At Issue (Ready for Trial)", + "gsi1pk": "work-item|da5fbd31-b1a4-4c40-a935-b9aa81bdfec1", + "caseTitle": "Tatum Craig, Wayne Obrien, Partnership Representative", + "section": "docket", + "workItemId": "da5fbd31-b1a4-4c40-a935-b9aa81bdfec1", + "assigneeId": null, + "sentBy": "Test IRS Practitioner", + "createdAt": "2024-06-28T19:54:22.467Z", + "highPriority": false, + "assigneeName": null, + "entityName": "WorkItem", + "sk": "work-item|da5fbd31-b1a4-4c40-a935-b9aa81bdfec1", + "docketNumberWithSuffix": "107-19L", + "docketEntry": { + "eventCode": "RPT", + "createdAt": "2024-06-28T19:54:22.466Z", + "documentType": "Status Report", + "filedBy": "Resp.", + "docketEntryId": "178af2d2-fab1-445a-a729-d3da63517a0a", + "documentTitle": "Status Report", + "isFileAttached": true, + "receivedAt": "2024-06-28T04:00:00.000Z", + "userId": "5805d1ab-18d0-43ec-bafb-654e83405416" + }, + "pk": "case|107-19", + "docketNumber": "107-19", + "sentByUserId": "5805d1ab-18d0-43ec-bafb-654e83405416", + "updatedAt": "2024-06-28T19:54:22.467Z" + }, { "associatedJudge": "Colvin", "procedureType": "Regular", @@ -39747,6 +40326,15 @@ "ttl": 1691602262, "userId": "5805d1ab-18d0-43ec-bafb-654e83405416" }, + { + "endpoint": "ws://localhost:3011", + "clientConnectionId": "0c35831c-5034-4080-a206-da84f916ffd5", + "sk": "connection|6cd9ca37-0f0a-4c6e-81fb-cd735f21bd4e", + "connectionId": "6cd9ca37-0f0a-4c6e-81fb-cd735f21bd4e", + "pk": "connection|6cd9ca37-0f0a-4c6e-81fb-cd735f21bd4e", + "ttl": 1720733638, + "userId": "dabbad00-18d0-43ec-bafb-654e83405416" + }, { "endpoint": "ws://localhost:3011", "clientConnectionId": "9a0f1572-ffb4-4d7f-b534-226b1b6da9f3", @@ -39792,6 +40380,15 @@ "ttl": 1703188700, "userId": "dabbad00-18d0-43ec-bafb-654e83405416" }, + { + "endpoint": "ws://localhost:3011", + "clientConnectionId": "39fdf0fe-bf77-4731-a8bf-12c2c46f6c7e", + "sk": "connection|9ec7e8db-e0b1-46f6-aa93-b86142446b8a", + "connectionId": "9ec7e8db-e0b1-46f6-aa93-b86142446b8a", + "pk": "connection|9ec7e8db-e0b1-46f6-aa93-b86142446b8a", + "ttl": 1719690823, + "userId": "5805d1ab-18d0-43ec-bafb-654e83405416" + }, { "endpoint": "ws://localhost:3011", "clientConnectionId": "9d800c29-039a-4586-941b-ff57f18e7fe4", @@ -39971,18 +40568,6 @@ "docketNumber": "102-67", "gsi1pk": "eligible-for-trial-case-catalog|102-67" }, - { - "sk": "LasVegasNevada-H-B-20190816132910-107-19", - "pk": "eligible-for-trial-case-catalog", - "docketNumber": "107-19", - "gsi1pk": "eligible-for-trial-case-catalog|107-19" - }, - { - "sk": "LasVegasNevada-R-B-20190816132910-107-19", - "pk": "eligible-for-trial-case-catalog", - "docketNumber": "107-19", - "gsi1pk": "eligible-for-trial-case-catalog|107-19" - }, { "sk": "WashingtonDistrictofColumbia-H-D-20210216115509-150-12", "pk": "eligible-for-trial-case-catalog", @@ -56680,6 +57265,52 @@ "ttl": 1691602262, "userId": "5805d1ab-18d0-43ec-bafb-654e83405416" }, + { + "endpoint": "ws://localhost:3011", + "clientConnectionId": "39fdf0fe-bf77-4731-a8bf-12c2c46f6c7e", + "gsi1pk": "connection", + "sk": "connection|9ec7e8db-e0b1-46f6-aa93-b86142446b8a", + "connectionId": "9ec7e8db-e0b1-46f6-aa93-b86142446b8a", + "pk": "user|5805d1ab-18d0-43ec-bafb-654e83405416", + "ttl": 1719690823, + "userId": "5805d1ab-18d0-43ec-bafb-654e83405416" + }, + { + "totalNumberOfChunks": 1, + "requestId": "0849ee89-b403-4d68-80d6-3284a06a69b0", + "sk": "request|0849ee89-b403-4d68-80d6-3284a06a69b0-0", + "chunk": "{\"headers\":{\"Access-Control-Expose-Headers\":\"X-Terminal-User\",\"Cache-Control\":\"max-age=0, private, no-cache, no-store, must-revalidate\",\"Content-Type\":\"application/json\",\"Pragma\":\"no-cache\",\"Vary\":\"Authorization\",\"X-Content-Type-Options\":\"nosniff\"},\"statusCode\":\"200\"}", + "index": 0, + "pk": "user|5805d1ab-18d0-43ec-bafb-654e83405416", + "ttl": 1719605467 + }, + { + "totalNumberOfChunks": 1, + "requestId": "70a6454e-1f10-451f-a46e-8b11112bce12", + "sk": "request|70a6454e-1f10-451f-a46e-8b11112bce12-0", + "chunk": "{\"headers\":{\"Access-Control-Expose-Headers\":\"X-Terminal-User\",\"Cache-Control\":\"max-age=0, private, no-cache, no-store, must-revalidate\",\"Content-Type\":\"application/json\",\"Pragma\":\"no-cache\",\"Vary\":\"Authorization\",\"X-Content-Type-Options\":\"nosniff\"},\"statusCode\":\"200\"}", + "index": 0, + "pk": "user|5805d1ab-18d0-43ec-bafb-654e83405416", + "ttl": 1719605424 + }, + { + "totalNumberOfChunks": 1, + "requestId": "b6c1e53e-4d92-42da-a19d-f83cf4e9e71c", + "sk": "request|b6c1e53e-4d92-42da-a19d-f83cf4e9e71c-0", + "chunk": "{\"headers\":{\"Access-Control-Expose-Headers\":\"X-Terminal-User\",\"Cache-Control\":\"max-age=0, private, no-cache, no-store, must-revalidate\",\"Content-Type\":\"application/json\",\"Pragma\":\"no-cache\",\"Vary\":\"Authorization\",\"X-Content-Type-Options\":\"nosniff\"},\"statusCode\":\"200\"}", + "index": 0, + "pk": "user|5805d1ab-18d0-43ec-bafb-654e83405416", + "ttl": 1719605420 + }, + { + "totalNumberOfChunks": 1, + "requestId": "b7dc846b-3582-44ac-a5ab-371bca0bc8ca", + "sk": "request|b7dc846b-3582-44ac-a5ab-371bca0bc8ca-0", + "chunk": "{\"headers\":{\"Access-Control-Expose-Headers\":\"X-Terminal-User\",\"Cache-Control\":\"max-age=0, private, no-cache, no-store, must-revalidate\",\"Content-Type\":\"application/json\",\"Pragma\":\"no-cache\",\"Vary\":\"Authorization\",\"X-Content-Type-Options\":\"nosniff\"},\"statusCode\":\"200\"}", + "index": 0, + "pk": "user|5805d1ab-18d0-43ec-bafb-654e83405416", + "ttl": 1719605470 + }, { "admissionsStatus": "Active", "lastName": "Practitioner", @@ -57694,6 +58325,16 @@ "ttl": 1700702315, "userId": "dabbad00-18d0-43ec-bafb-654e83405416" }, + { + "endpoint": "ws://localhost:3011", + "clientConnectionId": "0c35831c-5034-4080-a206-da84f916ffd5", + "gsi1pk": "connection", + "sk": "connection|6cd9ca37-0f0a-4c6e-81fb-cd735f21bd4e", + "connectionId": "6cd9ca37-0f0a-4c6e-81fb-cd735f21bd4e", + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720733638, + "userId": "dabbad00-18d0-43ec-bafb-654e83405416" + }, { "endpoint": "ws://localhost:3011", "clientConnectionId": "9a0f1572-ffb4-4d7f-b534-226b1b6da9f3", @@ -57774,6 +58415,141 @@ "ttl": 1696968894, "userId": "dabbad00-18d0-43ec-bafb-654e83405416" }, + { + "totalNumberOfChunks": 4, + "requestId": "44ec95b9-5c01-401c-86a8-f521ff629f50", + "sk": "request|44ec95b9-5c01-401c-86a8-f521ff629f50-0", + "chunk": "{\"body\":{\"entityName\":\"Case\",\"consolidatedCases\":[],\"petitioners\":[{\"entityName\":\"Petitioner\",\"additionalName\":\"Wayne Obrien\",\"address1\":\"343 Second Street\",\"address2\":\"Et et aliquip non si\",\"address3\":\"Veritatis vel tenetu\",\"city\":\"Rerum culpa consequ\",\"contactId\":\"7805d1ab-18d0-43ec-bafb-654e83405416\",\"contactType\":\"petitioner\",\"countryType\":\"domestic\",\"email\":\"petitioner@example.com\",\"isAddressSealed\":false,\"name\":\"Tatum Craig\",\"phone\":\"+1 (849) 773-8302\",\"postalCode\":\"82461\",\"sealedAndUnavailable\":false,\"serviceIndicator\":\"None\",\"state\":\"NM\"},{\"entityName\":\"Petitioner\",\"address1\":\"42 Lamb Sauce Blvd\",\"city\":\"Nashville\",\"contactId\":\"89d7d182-46da-4b96-b29b-260d15249c25\",\"contactType\":\"intervenor\",\"country\":\"USA\",\"countryType\":\"domestic\",\"email\":\"testuser@example.com\",\"isAddressSealed\":false,\"name\":\"Gordon Ramsay\",\"phone\":\"123-456-7890\",\"postalCode\":\"05198\",\"sealedAndUnavailable\":false,\"serviceIndicator\":\"None\",\"state\":\"AK\",\"title\":\"Intervenor\"},{\"entityName\":\"Petitioner\",\"address1\":\"1337 12th Ave\",\"city\":\"Flavortown\",\"contactId\":\"277ca24a-7be3-49e9-80d3-529a19a1a841\",\"contactType\":\"participant\",\"country\":\"USA\",\"countryType\":\"domestic\",\"email\":\"testuser@example.com\",\"isAddressSealed\":false,\"name\":\"Guy Fieri\",\"phone\":\"123-456-7890\",\"postalCode\":\"05198\",\"sealedAndUnavailable\":false,\"serviceIndicator\":\"None\",\"state\":\"AK\",\"title\":\"Partner Other Than Tax Matters Partner\"}],\"correspondence\":[],\"associatedJudge\":\"Chief Judge\",\"automaticBlocked\":true,\"automaticBlockedDate\":\"2024-06-28T19:54:22.477Z\",\"automaticBlockedReason\":\"Due Date\",\"caseStatusHistory\":[],\"qcCompleteForTrial\":{},\"noticeOfAttachments\":false,\"orderDesignatingPlaceOfTrial\":false,\"orderForAmendedPetition\":false,\"orderForAmendedPetitionAndFilingFee\":false,\"orderForFilingFee\":false,\"orderForCds\":false,\"orderForRatification\":false,\"orderToShowCause\":false,\"archivedDocketEntries\":[],\"statistics\":[],\"archivedCorrespondences\":[],\"docketEntries\":[{\"entityName\":\"DocketEntry\",\"stampData\":{},\"isDraft\":false,\"pending\":false,\"userId\":\"7805d1ab-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2019-08-16T17:29:10.132Z\",\"docketEntryId\":\"5bd2f4eb-e08a-41e4-8d18-13b9ffd4514c\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Petition\",\"documentType\":\"Petition\",\"eventCode\":\"P\",\"filedBy\":\"Tatum Craig, Wayne Obrien, Partnership Representative\",\"filedByRole\":\"petitioner\",\"filingDate\":\"2019-08-16T17:29:10.132Z\",\"index\":1,\"isFileAttached\":true,\"isOnDocketRecord\":true,\"isStricken\":false,\"numberOfPages\":1,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2019-08-16T04:00:00.000Z\",\"servedAt\":\"2019-08-16T17:30:10.526Z\",\"servedParties\":[{\"email\":\"petitioner@example.com\",\"name\":\"Tatum Craig\"}]},{\"entityName\":\"DocketEntry\",\"draftOrderState\":null,\"stampData\":{},\"isDraft\":false,\"pending\":false,\"userId\":\"7805d1ab-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2019-08-16T17:29:10.133Z\",\"docketEntryId\":\"35306555-83f2-4f61-9be6-438bd107e5eb\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Corporate Disclosure Statement\",\"documentType\":\"Corporate Disclosure Statement\",\"eventCode\":\"DISC\",\"filedBy\":\"Tatum Craig, Wayne Obrien, Partnership Representative\",\"filedByRole\":\"petitioner\",\"filingDate\":\"2019-08-16T17:29:10.133Z\",\"index\":3,\"isFileAttached\":true,\"isOnDocketRecord\":true,\"isStricken\":false,\"numberOfPages\":2,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2019-08-16T04:00:00.000Z\",\"servedAt\":\"2019-08-16T17:29:10.133Z\",\"servedParties\":[{\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\"},{\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\"}]},{\"entityName\":\"DocketEntry\",\"draftOrderState\":{\"eventCode\":\"ODJ\",\"documentTitle\":\"Order of Dismissal for Lack of Jurisdiction\",\"richText\":\"

    Testing

    \",\"documentType\":\"Order of Dismissal for Lack of Jurisdiction\",\"docketNumber\":\"107-19\"},\"stampData\":{},\"isDraft\":true,\"pending\":false,\"signedAt\":\"2019-10-07T14:29:30.288Z\",\"signedByUserId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"signedJudgeN", + "index": 0, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648354 + }, + { + "totalNumberOfChunks": 4, + "requestId": "44ec95b9-5c01-401c-86a8-f521ff629f50", + "sk": "request|44ec95b9-5c01-401c-86a8-f521ff629f50-1", + "chunk": "ame\":\"Ronald L. Buch\",\"userId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2019-10-07T14:29:30.288Z\",\"docketEntryId\":\"25100ec6-eeeb-4e88-872f-c99fad1fe6c7\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Order of Dismissal for Lack of Jurisdiction\",\"documentType\":\"Order of Dismissal for Lack of Jurisdiction\",\"eventCode\":\"ODJ\",\"filedBy\":\"Test Docketclerk\",\"filingDate\":\"2019-10-07T14:29:30.288Z\",\"isFileAttached\":true,\"isOnDocketRecord\":false,\"isStricken\":false,\"numberOfPages\":1,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2019-10-07T04:00:00.000Z\",\"relationship\":\"primaryDocument\"},{\"entityName\":\"DocketEntry\",\"draftOrderState\":null,\"stampData\":{},\"isDraft\":false,\"pending\":false,\"signedAt\":\"2020-07-06T17:06:04.552Z\",\"signedByUserId\":\"7b69a8b5-bcc4-4449-8994-08fda8d342e7\",\"signedJudgeName\":\"Chief Judge\",\"userId\":\"7805d1ab-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2020-09-25T19:27:16.956Z\",\"docketEntryId\":\"ce6f0641-a0ba-4f7b-a330-fb81c873aec8\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Request for Place of Trial at Las Vegas, Nevada\",\"documentType\":\"Request for Place of Trial\",\"eventCode\":\"RQT\",\"filedBy\":\"Migrated\",\"filedByRole\":\"petitioner\",\"filingDate\":\"2019-08-16T17:29:10.132Z\",\"index\":2,\"isFileAttached\":false,\"isOnDocketRecord\":true,\"isStricken\":false,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2020-09-25T04:00:00.000Z\",\"servedAt\":\"2020-09-25T19:27:16.956Z\",\"servedParties\":[{\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\"},{\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\"}]},{\"entityName\":\"DocketEntry\",\"editState\":\"{\\\"eventCode\\\":\\\"OST\\\",\\\"documentType\\\":\\\"Order of Service of Transcript (Bench Opinion)\\\",\\\"documentTitle\\\":\\\"Order of Service of Transcript (Bench Opinion) [Anything]\\\",\\\"scenario\\\":\\\"Type A\\\",\\\"attachments\\\":false,\\\"date\\\":null,\\\"generatedDocumentTitle\\\":\\\"Order of Service of Transcript (Bench Opinion) bench description\\\",\\\"searchText\\\":\\\"bench\\\",\\\"freeText\\\":\\\"bench description\\\",\\\"docketEntryId\\\":\\\"1a92894e-83a5-48ba-9994-3ada44235deb\\\",\\\"docketNumber\\\":\\\"107-19\\\"}\",\"draftOrderState\":null,\"stampData\":{},\"isDraft\":false,\"pending\":false,\"signedAt\":\"2021-12-15T21:25:12.139Z\",\"signedByUserId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"signedJudgeName\":\"Maurice B. Foley\",\"userId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"workItem\":{\"entityName\":\"WorkItem\",\"assigneeId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"assigneeName\":\"Test Docketclerk\",\"associatedJudge\":\"Chief Judge\",\"caseStatus\":\"General Docket - At Issue (Ready for Trial)\",\"caseTitle\":\"Tatum Craig, Wayne Obrien, Partnership Representative\",\"completedAt\":\"2021-12-15T21:25:25.326Z\",\"completedBy\":\"Test Docketclerk\",\"completedByUserId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"completedMessage\":\"completed\",\"createdAt\":\"2021-12-15T21:25:25.325Z\",\"docketEntry\":{\"createdAt\":\"2021-12-15T21:25:12.138Z\",\"docketEntryId\":\"1a92894e-83a5-48ba-9994-3ada44235deb\",\"documentTitle\":\"Order of Service of Transcript (Bench Opinion) bench description\",\"documentType\":\"Order of Service of Transcript (Bench Opinion)\",\"eventCode\":\"OST\",\"isFileAttached\":true,\"receivedAt\":\"2021-12-15T05:00:00.000Z\",\"servedAt\":\"2021-12-15T21:25:25.320Z\",\"userId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\"},\"docketNumber\":\"107-19\",\"docketNumberWithSuffix\":\"107-19L\",\"hideFromPendingMessages\":true,\"highPriority\":false,\"section\":\"docket\",\"sentBy\":\"Test Docketclerk\",\"sentBySection\":\"docket\",\"sentByUserId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"updatedAt\":\"2021-12-15T21:25:25.325Z\",\"workItemId\":\"39b3ac72-0173-4851-829b-e0878def646c\"},\"addToCoversheet\":false,\"attachments\":false,\"createdAt\":\"2021-12-15T21:25:12.138Z\",\"date\":null,\"docketEntryId\":\"1a92894e-83a5-48ba-9994-3ada44235deb\",\"docketNumber\":\"107-19\",\"documentIdBeforeSignature\":\"5c201e01-8753-4e2a-a74c-3dd7920e903c\",\"documentTitle\":\"Order of Service of Transcript (Bench Opinion) bench description\",\"documentType\":\"Order of Service of Transcript (Bench Opi", + "index": 1, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648354 + }, + { + "totalNumberOfChunks": 4, + "requestId": "44ec95b9-5c01-401c-86a8-f521ff629f50", + "sk": "request|44ec95b9-5c01-401c-86a8-f521ff629f50-2", + "chunk": "nion)\",\"eventCode\":\"OST\",\"filedByRole\":\"docketclerk\",\"filingDate\":\"2021-12-15T21:25:25.320Z\",\"freeText\":\"bench description\",\"index\":4,\"isFileAttached\":true,\"isOnDocketRecord\":true,\"isPendingService\":false,\"isStricken\":false,\"numberOfPages\":1,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2021-12-15T05:00:00.000Z\",\"relationship\":\"primaryDocument\",\"scenario\":\"Type A\",\"servedAt\":\"2021-12-15T21:25:25.320Z\",\"servedPartiesCode\":\"B\",\"servedParties\":[{\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\"},{\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\"}]},{\"entityName\":\"DocketEntry\",\"stampData\":{},\"isDraft\":false,\"pending\":false,\"userId\":\"5805d1ab-18d0-43ec-bafb-654e83405416\",\"workItem\":{\"entityName\":\"WorkItem\",\"assigneeId\":null,\"assigneeName\":null,\"associatedJudge\":\"Chief Judge\",\"caseStatus\":\"General Docket - At Issue (Ready for Trial)\",\"caseTitle\":\"Tatum Craig, Wayne Obrien, Partnership Representative\",\"createdAt\":\"2024-06-28T19:54:22.467Z\",\"docketEntry\":{\"createdAt\":\"2024-06-28T19:54:22.466Z\",\"docketEntryId\":\"178af2d2-fab1-445a-a729-d3da63517a0a\",\"documentTitle\":\"Status Report\",\"documentType\":\"Status Report\",\"eventCode\":\"RPT\",\"filedBy\":\"Resp.\",\"isFileAttached\":true,\"receivedAt\":\"2024-06-28T04:00:00.000Z\",\"userId\":\"5805d1ab-18d0-43ec-bafb-654e83405416\"},\"docketNumber\":\"107-19\",\"docketNumberWithSuffix\":\"107-19L\",\"highPriority\":false,\"section\":\"docket\",\"sentBy\":\"Test IRS Practitioner\",\"sentByUserId\":\"5805d1ab-18d0-43ec-bafb-654e83405416\",\"updatedAt\":\"2024-06-28T19:54:22.467Z\",\"workItemId\":\"da5fbd31-b1a4-4c40-a935-b9aa81bdfec1\"},\"addToCoversheet\":false,\"attachments\":false,\"certificateOfService\":false,\"createdAt\":\"2024-06-28T19:54:22.466Z\",\"docketEntryId\":\"178af2d2-fab1-445a-a729-d3da63517a0a\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Status Report\",\"documentType\":\"Status Report\",\"eventCode\":\"RPT\",\"filedBy\":\"Resp.\",\"filedByRole\":\"irsPractitioner\",\"filingDate\":\"2024-06-28T19:54:22.466Z\",\"hasSupportingDocuments\":false,\"index\":5,\"isFileAttached\":true,\"isOnDocketRecord\":true,\"isStricken\":false,\"numberOfPages\":2,\"redactionAcknowledgement\":true,\"filers\":[],\"partyIrsPractitioner\":true,\"processingStatus\":\"complete\",\"receivedAt\":\"2024-06-28T04:00:00.000Z\",\"relationship\":\"primaryDocument\",\"scenario\":\"Standard\",\"servedAt\":\"2024-06-28T19:54:22.468Z\",\"servedPartiesCode\":\"B\",\"servedParties\":[{\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\"},{\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\"}]},{\"entityName\":\"DocketEntry\",\"draftOrderState\":{\"orderType\":\"statusReport\",\"addedDocketNumbers\":[],\"docketEntryDescription\":\"Test Order Response\",\"dueDate\":\"2024-07-11\",\"jurisdiction\":\"retained\",\"richText\":\"

    On June 28, 2024, a status report was filed in this case (Index no. 5). For cause, it is

    ORDERED that the parties shall file a further status report by July 11, 2024. It is further

    ORDERED that this case is stricken from the trial session. It is further

    ORDERED that jurisdiction is retained by the undersigned. It is further

    ORDERED that Test

    \",\"issueOrder\":\"allCasesInGroup\",\"eventCode\":\"O\",\"additionalOrderText\":\"Test\",\"strickenFromTrialSessions\":true,\"freeText\":\"Test Order Response\",\"statusReportFilingDate\":\"2024-06-28\",\"statusReportIndex\":\"5\",\"documentTitle\":\"Test Order Response\",\"docketNumber\":\"107-19\"},\"stampData\":{},\"isDraft\":true,\"pending\":false,\"userId\":\"dabbad00-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2024-07-10T21:36:07.890Z\",\"docketEntryId\":\"49acedbf-978d-476c-aae9-42bb75595dd3\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Test Order Response\",\"eventCode\":\"O\",\"filedBy\":\"Colvin\",\"filedByRole\":\"judge\",\"filingDate\":\"2024-07-10T21:36:07.890Z\",\"freeText\":\"Test Order Response\",\"isFileAttached\":true,\"isOnDocketRecord\":false,\"isStricken\":false,\"filers\":[],\"processingStatus\":\"", + "index": 2, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648354 + }, + { + "totalNumberOfChunks": 4, + "requestId": "44ec95b9-5c01-401c-86a8-f521ff629f50", + "sk": "request|44ec95b9-5c01-401c-86a8-f521ff629f50-3", + "chunk": "complete\",\"receivedAt\":\"2024-07-10T04:00:00.000Z\",\"relationship\":\"primaryDocument\"},{\"entityName\":\"DocketEntry\",\"draftOrderState\":{\"additionalOrderText\":\"Test\",\"docketEntryDescription\":\"Test Status Report Order (Unsigned)\",\"dueDate\":\"2024-07-11\",\"issueOrder\":\"allCasesInGroup\",\"jurisdiction\":\"retained\",\"orderType\":\"statusReport\",\"strickenFromTrialSessions\":true,\"documentTitle\":\"Test Status Report Order (Unsigned)\",\"eventCode\":\"O\",\"richText\":\"

    On June 28, 2024, a status report was filed in this case (Index no. 5). For cause, it is

    ORDERED that the parties shall file a further status report by July 11, 2024. It is further

    ORDERED that this case is stricken from the trial session. It is further

    ORDERED that jurisdiction is retained by the undersigned. It is further

    ORDERED that Test

    \",\"statusReportFilingDate\":\"2024-06-28\",\"statusReportIndex\":\"5\",\"docketNumber\":\"107-19\",\"addedDocketNumbers\":[],\"freeText\":\"Test Status Report Order (Unsigned)\"},\"stampData\":{},\"isDraft\":true,\"pending\":false,\"userId\":\"dabbad00-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2024-07-10T21:36:34.809Z\",\"docketEntryId\":\"49acedbf-978d-476c-aae9-42bb75595dd3\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Test Status Report Order (Unsigned)\",\"eventCode\":\"O\",\"filedBy\":\"Colvin\",\"filedByRole\":\"judge\",\"filingDate\":\"2024-07-10T21:36:34.809Z\",\"freeText\":\"Test Status Report Order (Unsigned)\",\"isFileAttached\":true,\"isOnDocketRecord\":false,\"isStricken\":false,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2024-07-10T04:00:00.000Z\",\"relationship\":\"primaryDocument\"}],\"isSealed\":false,\"hearings\":[],\"privatePractitioners\":[{\"entityName\":\"PrivatePractitioner\",\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\",\"role\":\"privatePractitioner\",\"userId\":\"9805d1ab-18d0-43ec-bafb-654e83405416\",\"contact\":{\"address1\":\"234 Main St\",\"address2\":\"Apartment 4\",\"address3\":\"Under the stairs\",\"city\":\"Chicago\",\"countryType\":\"domestic\",\"phone\":\"+1 (555) 555-5555\",\"postalCode\":\"61234\",\"state\":\"IL\"},\"section\":\"privatePractitioner\",\"barNumber\":\"PT1234\",\"representing\":[\"7805d1ab-18d0-43ec-bafb-654e83405416\"],\"serviceIndicator\":\"Electronic\"}],\"irsPractitioners\":[{\"entityName\":\"IrsPractitioner\",\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\",\"role\":\"irsPractitioner\",\"userId\":\"5805d1ab-18d0-43ec-bafb-654e83405416\",\"contact\":{\"address1\":\"234 Main St\",\"address2\":\"Apartment 4\",\"address3\":\"Under the stairs\",\"city\":\"Chicago\",\"countryType\":\"domestic\",\"phone\":\"+1 (555) 555-5555\",\"postalCode\":\"61234\",\"state\":\"IL\"},\"section\":\"irsPractitioner\",\"barNumber\":\"RT6789\",\"serviceIndicator\":\"Electronic\"}],\"caseCaption\":\"Tatum Craig, Wayne Obrien, Partnership Representative, Petitioner(s)\",\"caseType\":\"CDP (Lien/Levy)\",\"createdAt\":\"2019-08-16T17:29:10.132Z\",\"docketNumber\":\"107-19\",\"docketNumberSuffix\":\"L\",\"filingType\":\"A business\",\"irsNoticeDate\":null,\"isPaper\":false,\"partyType\":\"Partnership (as a partnership representative under BBA)\",\"petitionPaymentStatus\":\"Not paid\",\"preferredTrialCity\":\"Las Vegas, Nevada\",\"procedureType\":\"Regular\",\"receivedAt\":\"2019-08-16T17:29:10.132Z\",\"status\":\"General Docket - At Issue (Ready for Trial)\",\"sortableDocketNumber\":2019000107,\"initialDocketNumberSuffix\":\"L\",\"initialCaption\":\"Tatum Craig, Wayne Obrien, Partnership Representative, Petitioner(s)\",\"hasPendingItems\":false,\"docketNumberWithSuffix\":\"107-19L\"},\"headers\":{\"Access-Control-Expose-Headers\":\"X-Terminal-User\",\"Cache-Control\":\"max-age=0, private, no-cache, no-store, must-revalidate\",\"Content-Type\":\"application/json\",\"Pragma\":\"no-cache\",\"Vary\":\"Authorization\",\"X-Content-Type-Options\":\"nosniff\"},\"statusCode\":\"200\"}", + "index": 3, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648354 + }, + { + "totalNumberOfChunks": 1, + "requestId": "4e1a341a-17a3-48cc-9489-b3b3f64bdd36", + "sk": "request|4e1a341a-17a3-48cc-9489-b3b3f64bdd36-0", + "chunk": "{\"headers\":{\"Access-Control-Expose-Headers\":\"X-Terminal-User\",\"Cache-Control\":\"max-age=0, private, no-cache, no-store, must-revalidate\",\"Content-Type\":\"application/json\",\"Pragma\":\"no-cache\",\"Vary\":\"Authorization\",\"X-Content-Type-Options\":\"nosniff\"},\"statusCode\":\"200\"}", + "index": 0, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648353 + }, + { + "totalNumberOfChunks": 1, + "requestId": "57a60dab-5faa-49dd-be69-1c9e34da8db5", + "sk": "request|57a60dab-5faa-49dd-be69-1c9e34da8db5-0", + "chunk": "{\"headers\":{\"Access-Control-Expose-Headers\":\"X-Terminal-User\",\"Cache-Control\":\"max-age=0, private, no-cache, no-store, must-revalidate\",\"Content-Type\":\"application/json\",\"Pragma\":\"no-cache\",\"Vary\":\"Authorization\",\"X-Content-Type-Options\":\"nosniff\"},\"statusCode\":\"200\"}", + "index": 0, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648326 + }, + { + "totalNumberOfChunks": 4, + "requestId": "89e423e1-d582-4b00-9e07-3ad6139faa3d", + "sk": "request|89e423e1-d582-4b00-9e07-3ad6139faa3d-0", + "chunk": "{\"body\":{\"entityName\":\"Case\",\"consolidatedCases\":[],\"petitioners\":[{\"entityName\":\"Petitioner\",\"additionalName\":\"Wayne Obrien\",\"address1\":\"343 Second Street\",\"address2\":\"Et et aliquip non si\",\"address3\":\"Veritatis vel tenetu\",\"city\":\"Rerum culpa consequ\",\"contactId\":\"7805d1ab-18d0-43ec-bafb-654e83405416\",\"contactType\":\"petitioner\",\"countryType\":\"domestic\",\"email\":\"petitioner@example.com\",\"isAddressSealed\":false,\"name\":\"Tatum Craig\",\"phone\":\"+1 (849) 773-8302\",\"postalCode\":\"82461\",\"sealedAndUnavailable\":false,\"serviceIndicator\":\"None\",\"state\":\"NM\"},{\"entityName\":\"Petitioner\",\"address1\":\"42 Lamb Sauce Blvd\",\"city\":\"Nashville\",\"contactId\":\"89d7d182-46da-4b96-b29b-260d15249c25\",\"contactType\":\"intervenor\",\"country\":\"USA\",\"countryType\":\"domestic\",\"email\":\"testuser@example.com\",\"isAddressSealed\":false,\"name\":\"Gordon Ramsay\",\"phone\":\"123-456-7890\",\"postalCode\":\"05198\",\"sealedAndUnavailable\":false,\"serviceIndicator\":\"None\",\"state\":\"AK\",\"title\":\"Intervenor\"},{\"entityName\":\"Petitioner\",\"address1\":\"1337 12th Ave\",\"city\":\"Flavortown\",\"contactId\":\"277ca24a-7be3-49e9-80d3-529a19a1a841\",\"contactType\":\"participant\",\"country\":\"USA\",\"countryType\":\"domestic\",\"email\":\"testuser@example.com\",\"isAddressSealed\":false,\"name\":\"Guy Fieri\",\"phone\":\"123-456-7890\",\"postalCode\":\"05198\",\"sealedAndUnavailable\":false,\"serviceIndicator\":\"None\",\"state\":\"AK\",\"title\":\"Partner Other Than Tax Matters Partner\"}],\"correspondence\":[],\"associatedJudge\":\"Chief Judge\",\"automaticBlocked\":true,\"automaticBlockedDate\":\"2024-06-28T19:54:22.477Z\",\"automaticBlockedReason\":\"Due Date\",\"caseStatusHistory\":[],\"qcCompleteForTrial\":{},\"noticeOfAttachments\":false,\"orderDesignatingPlaceOfTrial\":false,\"orderForAmendedPetition\":false,\"orderForAmendedPetitionAndFilingFee\":false,\"orderForFilingFee\":false,\"orderForCds\":false,\"orderForRatification\":false,\"orderToShowCause\":false,\"archivedDocketEntries\":[],\"statistics\":[],\"archivedCorrespondences\":[],\"docketEntries\":[{\"entityName\":\"DocketEntry\",\"stampData\":{},\"isDraft\":false,\"pending\":false,\"userId\":\"7805d1ab-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2019-08-16T17:29:10.132Z\",\"docketEntryId\":\"5bd2f4eb-e08a-41e4-8d18-13b9ffd4514c\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Petition\",\"documentType\":\"Petition\",\"eventCode\":\"P\",\"filedBy\":\"Tatum Craig, Wayne Obrien, Partnership Representative\",\"filedByRole\":\"petitioner\",\"filingDate\":\"2019-08-16T17:29:10.132Z\",\"index\":1,\"isFileAttached\":true,\"isOnDocketRecord\":true,\"isStricken\":false,\"numberOfPages\":1,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2019-08-16T04:00:00.000Z\",\"servedAt\":\"2019-08-16T17:30:10.526Z\",\"servedParties\":[{\"email\":\"petitioner@example.com\",\"name\":\"Tatum Craig\"}]},{\"entityName\":\"DocketEntry\",\"draftOrderState\":null,\"stampData\":{},\"isDraft\":false,\"pending\":false,\"userId\":\"7805d1ab-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2019-08-16T17:29:10.133Z\",\"docketEntryId\":\"35306555-83f2-4f61-9be6-438bd107e5eb\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Corporate Disclosure Statement\",\"documentType\":\"Corporate Disclosure Statement\",\"eventCode\":\"DISC\",\"filedBy\":\"Tatum Craig, Wayne Obrien, Partnership Representative\",\"filedByRole\":\"petitioner\",\"filingDate\":\"2019-08-16T17:29:10.133Z\",\"index\":3,\"isFileAttached\":true,\"isOnDocketRecord\":true,\"isStricken\":false,\"numberOfPages\":2,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2019-08-16T04:00:00.000Z\",\"servedAt\":\"2019-08-16T17:29:10.133Z\",\"servedParties\":[{\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\"},{\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\"}]},{\"entityName\":\"DocketEntry\",\"draftOrderState\":{\"eventCode\":\"ODJ\",\"documentTitle\":\"Order of Dismissal for Lack of Jurisdiction\",\"richText\":\"

    Testing

    \",\"documentType\":\"Order of Dismissal for Lack of Jurisdiction\",\"docketNumber\":\"107-19\"},\"stampData\":{},\"isDraft\":true,\"pending\":false,\"signedAt\":\"2019-10-07T14:29:30.288Z\",\"signedByUserId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"signedJudgeN", + "index": 0, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648327 + }, + { + "totalNumberOfChunks": 4, + "requestId": "89e423e1-d582-4b00-9e07-3ad6139faa3d", + "sk": "request|89e423e1-d582-4b00-9e07-3ad6139faa3d-1", + "chunk": "ame\":\"Ronald L. Buch\",\"userId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2019-10-07T14:29:30.288Z\",\"docketEntryId\":\"25100ec6-eeeb-4e88-872f-c99fad1fe6c7\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Order of Dismissal for Lack of Jurisdiction\",\"documentType\":\"Order of Dismissal for Lack of Jurisdiction\",\"eventCode\":\"ODJ\",\"filedBy\":\"Test Docketclerk\",\"filingDate\":\"2019-10-07T14:29:30.288Z\",\"isFileAttached\":true,\"isOnDocketRecord\":false,\"isStricken\":false,\"numberOfPages\":1,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2019-10-07T04:00:00.000Z\",\"relationship\":\"primaryDocument\"},{\"entityName\":\"DocketEntry\",\"draftOrderState\":null,\"stampData\":{},\"isDraft\":false,\"pending\":false,\"signedAt\":\"2020-07-06T17:06:04.552Z\",\"signedByUserId\":\"7b69a8b5-bcc4-4449-8994-08fda8d342e7\",\"signedJudgeName\":\"Chief Judge\",\"userId\":\"7805d1ab-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2020-09-25T19:27:16.956Z\",\"docketEntryId\":\"ce6f0641-a0ba-4f7b-a330-fb81c873aec8\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Request for Place of Trial at Las Vegas, Nevada\",\"documentType\":\"Request for Place of Trial\",\"eventCode\":\"RQT\",\"filedBy\":\"Migrated\",\"filedByRole\":\"petitioner\",\"filingDate\":\"2019-08-16T17:29:10.132Z\",\"index\":2,\"isFileAttached\":false,\"isOnDocketRecord\":true,\"isStricken\":false,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2020-09-25T04:00:00.000Z\",\"servedAt\":\"2020-09-25T19:27:16.956Z\",\"servedParties\":[{\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\"},{\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\"}]},{\"entityName\":\"DocketEntry\",\"editState\":\"{\\\"eventCode\\\":\\\"OST\\\",\\\"documentType\\\":\\\"Order of Service of Transcript (Bench Opinion)\\\",\\\"documentTitle\\\":\\\"Order of Service of Transcript (Bench Opinion) [Anything]\\\",\\\"scenario\\\":\\\"Type A\\\",\\\"attachments\\\":false,\\\"date\\\":null,\\\"generatedDocumentTitle\\\":\\\"Order of Service of Transcript (Bench Opinion) bench description\\\",\\\"searchText\\\":\\\"bench\\\",\\\"freeText\\\":\\\"bench description\\\",\\\"docketEntryId\\\":\\\"1a92894e-83a5-48ba-9994-3ada44235deb\\\",\\\"docketNumber\\\":\\\"107-19\\\"}\",\"draftOrderState\":null,\"stampData\":{},\"isDraft\":false,\"pending\":false,\"signedAt\":\"2021-12-15T21:25:12.139Z\",\"signedByUserId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"signedJudgeName\":\"Maurice B. Foley\",\"userId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"workItem\":{\"entityName\":\"WorkItem\",\"assigneeId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"assigneeName\":\"Test Docketclerk\",\"associatedJudge\":\"Chief Judge\",\"caseStatus\":\"General Docket - At Issue (Ready for Trial)\",\"caseTitle\":\"Tatum Craig, Wayne Obrien, Partnership Representative\",\"completedAt\":\"2021-12-15T21:25:25.326Z\",\"completedBy\":\"Test Docketclerk\",\"completedByUserId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"completedMessage\":\"completed\",\"createdAt\":\"2021-12-15T21:25:25.325Z\",\"docketEntry\":{\"createdAt\":\"2021-12-15T21:25:12.138Z\",\"docketEntryId\":\"1a92894e-83a5-48ba-9994-3ada44235deb\",\"documentTitle\":\"Order of Service of Transcript (Bench Opinion) bench description\",\"documentType\":\"Order of Service of Transcript (Bench Opinion)\",\"eventCode\":\"OST\",\"isFileAttached\":true,\"receivedAt\":\"2021-12-15T05:00:00.000Z\",\"servedAt\":\"2021-12-15T21:25:25.320Z\",\"userId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\"},\"docketNumber\":\"107-19\",\"docketNumberWithSuffix\":\"107-19L\",\"hideFromPendingMessages\":true,\"highPriority\":false,\"section\":\"docket\",\"sentBy\":\"Test Docketclerk\",\"sentBySection\":\"docket\",\"sentByUserId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"updatedAt\":\"2021-12-15T21:25:25.325Z\",\"workItemId\":\"39b3ac72-0173-4851-829b-e0878def646c\"},\"addToCoversheet\":false,\"attachments\":false,\"createdAt\":\"2021-12-15T21:25:12.138Z\",\"date\":null,\"docketEntryId\":\"1a92894e-83a5-48ba-9994-3ada44235deb\",\"docketNumber\":\"107-19\",\"documentIdBeforeSignature\":\"5c201e01-8753-4e2a-a74c-3dd7920e903c\",\"documentTitle\":\"Order of Service of Transcript (Bench Opinion) bench description\",\"documentType\":\"Order of Service of Transcript (Bench Opi", + "index": 1, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648327 + }, + { + "totalNumberOfChunks": 4, + "requestId": "89e423e1-d582-4b00-9e07-3ad6139faa3d", + "sk": "request|89e423e1-d582-4b00-9e07-3ad6139faa3d-2", + "chunk": "nion)\",\"eventCode\":\"OST\",\"filedByRole\":\"docketclerk\",\"filingDate\":\"2021-12-15T21:25:25.320Z\",\"freeText\":\"bench description\",\"index\":4,\"isFileAttached\":true,\"isOnDocketRecord\":true,\"isPendingService\":false,\"isStricken\":false,\"numberOfPages\":1,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2021-12-15T05:00:00.000Z\",\"relationship\":\"primaryDocument\",\"scenario\":\"Type A\",\"servedAt\":\"2021-12-15T21:25:25.320Z\",\"servedPartiesCode\":\"B\",\"servedParties\":[{\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\"},{\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\"}]},{\"entityName\":\"DocketEntry\",\"stampData\":{},\"isDraft\":false,\"pending\":false,\"userId\":\"5805d1ab-18d0-43ec-bafb-654e83405416\",\"workItem\":{\"entityName\":\"WorkItem\",\"assigneeId\":null,\"assigneeName\":null,\"associatedJudge\":\"Chief Judge\",\"caseStatus\":\"General Docket - At Issue (Ready for Trial)\",\"caseTitle\":\"Tatum Craig, Wayne Obrien, Partnership Representative\",\"createdAt\":\"2024-06-28T19:54:22.467Z\",\"docketEntry\":{\"createdAt\":\"2024-06-28T19:54:22.466Z\",\"docketEntryId\":\"178af2d2-fab1-445a-a729-d3da63517a0a\",\"documentTitle\":\"Status Report\",\"documentType\":\"Status Report\",\"eventCode\":\"RPT\",\"filedBy\":\"Resp.\",\"isFileAttached\":true,\"receivedAt\":\"2024-06-28T04:00:00.000Z\",\"userId\":\"5805d1ab-18d0-43ec-bafb-654e83405416\"},\"docketNumber\":\"107-19\",\"docketNumberWithSuffix\":\"107-19L\",\"highPriority\":false,\"section\":\"docket\",\"sentBy\":\"Test IRS Practitioner\",\"sentByUserId\":\"5805d1ab-18d0-43ec-bafb-654e83405416\",\"updatedAt\":\"2024-06-28T19:54:22.467Z\",\"workItemId\":\"da5fbd31-b1a4-4c40-a935-b9aa81bdfec1\"},\"addToCoversheet\":false,\"attachments\":false,\"certificateOfService\":false,\"createdAt\":\"2024-06-28T19:54:22.466Z\",\"docketEntryId\":\"178af2d2-fab1-445a-a729-d3da63517a0a\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Status Report\",\"documentType\":\"Status Report\",\"eventCode\":\"RPT\",\"filedBy\":\"Resp.\",\"filedByRole\":\"irsPractitioner\",\"filingDate\":\"2024-06-28T19:54:22.466Z\",\"hasSupportingDocuments\":false,\"index\":5,\"isFileAttached\":true,\"isOnDocketRecord\":true,\"isStricken\":false,\"numberOfPages\":2,\"redactionAcknowledgement\":true,\"filers\":[],\"partyIrsPractitioner\":true,\"processingStatus\":\"complete\",\"receivedAt\":\"2024-06-28T04:00:00.000Z\",\"relationship\":\"primaryDocument\",\"scenario\":\"Standard\",\"servedAt\":\"2024-06-28T19:54:22.468Z\",\"servedPartiesCode\":\"B\",\"servedParties\":[{\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\"},{\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\"}]},{\"entityName\":\"DocketEntry\",\"draftOrderState\":{\"additionalOrderText\":\"Test\",\"docketEntryDescription\":\"Test Order Response\",\"issueOrder\":\"allCasesInGroup\",\"orderType\":\"statusReport\",\"dueDate\":\"2024-07-11\",\"strickenFromTrialSessions\":true,\"jurisdiction\":\"retained\",\"documentTitle\":\"Test Order Response\",\"eventCode\":\"O\",\"richText\":\"

    On June 28, 2024, a status report was filed in this case (Index no. 5). For cause, it is

    ORDERED that the parties shall file a further status report by July 11, 2024. It is further

    ORDERED that this case is stricken from the trial session. It is further

    ORDERED that jurisdiction is retained by the undersigned. It is further

    ORDERED that Test

    \",\"statusReportFilingDate\":\"2024-06-28\",\"statusReportIndex\":\"5\",\"docketNumber\":\"107-19\",\"addedDocketNumbers\":[],\"freeText\":\"Test Order Response\"},\"stampData\":{},\"isDraft\":true,\"pending\":false,\"userId\":\"dabbad00-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2024-07-10T21:36:07.890Z\",\"docketEntryId\":\"49acedbf-978d-476c-aae9-42bb75595dd3\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Test Order Response\",\"eventCode\":\"O\",\"filedBy\":\"Colvin\",\"filedByRole\":\"judge\",\"filingDate\":\"2024-07-10T21:36:07.890Z\",\"freeText\":\"Test Order Response\",\"isFileAttached\":true,\"isOnDocketRecord\":false,\"isStricken\":false,\"filers\":[],\"processingStatus\":\"", + "index": 2, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648327 + }, + { + "totalNumberOfChunks": 4, + "requestId": "89e423e1-d582-4b00-9e07-3ad6139faa3d", + "sk": "request|89e423e1-d582-4b00-9e07-3ad6139faa3d-3", + "chunk": "complete\",\"receivedAt\":\"2024-07-10T04:00:00.000Z\",\"relationship\":\"primaryDocument\"}],\"isSealed\":false,\"hearings\":[],\"privatePractitioners\":[{\"entityName\":\"PrivatePractitioner\",\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\",\"role\":\"privatePractitioner\",\"userId\":\"9805d1ab-18d0-43ec-bafb-654e83405416\",\"contact\":{\"address1\":\"234 Main St\",\"address2\":\"Apartment 4\",\"address3\":\"Under the stairs\",\"city\":\"Chicago\",\"countryType\":\"domestic\",\"phone\":\"+1 (555) 555-5555\",\"postalCode\":\"61234\",\"state\":\"IL\"},\"section\":\"privatePractitioner\",\"barNumber\":\"PT1234\",\"representing\":[\"7805d1ab-18d0-43ec-bafb-654e83405416\"],\"serviceIndicator\":\"Electronic\"}],\"irsPractitioners\":[{\"entityName\":\"IrsPractitioner\",\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\",\"role\":\"irsPractitioner\",\"userId\":\"5805d1ab-18d0-43ec-bafb-654e83405416\",\"contact\":{\"address1\":\"234 Main St\",\"address2\":\"Apartment 4\",\"address3\":\"Under the stairs\",\"city\":\"Chicago\",\"countryType\":\"domestic\",\"phone\":\"+1 (555) 555-5555\",\"postalCode\":\"61234\",\"state\":\"IL\"},\"section\":\"irsPractitioner\",\"barNumber\":\"RT6789\",\"serviceIndicator\":\"Electronic\"}],\"caseCaption\":\"Tatum Craig, Wayne Obrien, Partnership Representative, Petitioner(s)\",\"caseType\":\"CDP (Lien/Levy)\",\"createdAt\":\"2019-08-16T17:29:10.132Z\",\"docketNumber\":\"107-19\",\"docketNumberSuffix\":\"L\",\"filingType\":\"A business\",\"irsNoticeDate\":null,\"isPaper\":false,\"partyType\":\"Partnership (as a partnership representative under BBA)\",\"petitionPaymentStatus\":\"Not paid\",\"preferredTrialCity\":\"Las Vegas, Nevada\",\"procedureType\":\"Regular\",\"receivedAt\":\"2019-08-16T17:29:10.132Z\",\"status\":\"General Docket - At Issue (Ready for Trial)\",\"sortableDocketNumber\":2019000107,\"initialDocketNumberSuffix\":\"L\",\"initialCaption\":\"Tatum Craig, Wayne Obrien, Partnership Representative, Petitioner(s)\",\"hasPendingItems\":false,\"docketNumberWithSuffix\":\"107-19L\"},\"headers\":{\"Access-Control-Expose-Headers\":\"X-Terminal-User\",\"Cache-Control\":\"max-age=0, private, no-cache, no-store, must-revalidate\",\"Content-Type\":\"application/json\",\"Pragma\":\"no-cache\",\"Vary\":\"Authorization\",\"X-Content-Type-Options\":\"nosniff\"},\"statusCode\":\"200\"}", + "index": 3, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648327 + }, + { + "totalNumberOfChunks": 4, + "requestId": "e76711a7-e964-470f-a41b-6be20c12e9e0", + "sk": "request|e76711a7-e964-470f-a41b-6be20c12e9e0-0", + "chunk": "{\"body\":{\"entityName\":\"Case\",\"consolidatedCases\":[],\"petitioners\":[{\"entityName\":\"Petitioner\",\"additionalName\":\"Wayne Obrien\",\"address1\":\"343 Second Street\",\"address2\":\"Et et aliquip non si\",\"address3\":\"Veritatis vel tenetu\",\"city\":\"Rerum culpa consequ\",\"contactId\":\"7805d1ab-18d0-43ec-bafb-654e83405416\",\"contactType\":\"petitioner\",\"countryType\":\"domestic\",\"email\":\"petitioner@example.com\",\"isAddressSealed\":false,\"name\":\"Tatum Craig\",\"phone\":\"+1 (849) 773-8302\",\"postalCode\":\"82461\",\"sealedAndUnavailable\":false,\"serviceIndicator\":\"None\",\"state\":\"NM\"},{\"entityName\":\"Petitioner\",\"address1\":\"42 Lamb Sauce Blvd\",\"city\":\"Nashville\",\"contactId\":\"89d7d182-46da-4b96-b29b-260d15249c25\",\"contactType\":\"intervenor\",\"country\":\"USA\",\"countryType\":\"domestic\",\"email\":\"testuser@example.com\",\"isAddressSealed\":false,\"name\":\"Gordon Ramsay\",\"phone\":\"123-456-7890\",\"postalCode\":\"05198\",\"sealedAndUnavailable\":false,\"serviceIndicator\":\"None\",\"state\":\"AK\",\"title\":\"Intervenor\"},{\"entityName\":\"Petitioner\",\"address1\":\"1337 12th Ave\",\"city\":\"Flavortown\",\"contactId\":\"277ca24a-7be3-49e9-80d3-529a19a1a841\",\"contactType\":\"participant\",\"country\":\"USA\",\"countryType\":\"domestic\",\"email\":\"testuser@example.com\",\"isAddressSealed\":false,\"name\":\"Guy Fieri\",\"phone\":\"123-456-7890\",\"postalCode\":\"05198\",\"sealedAndUnavailable\":false,\"serviceIndicator\":\"None\",\"state\":\"AK\",\"title\":\"Partner Other Than Tax Matters Partner\"}],\"correspondence\":[],\"associatedJudge\":\"Chief Judge\",\"automaticBlocked\":true,\"automaticBlockedDate\":\"2024-06-28T19:54:22.477Z\",\"automaticBlockedReason\":\"Due Date\",\"caseStatusHistory\":[],\"qcCompleteForTrial\":{},\"noticeOfAttachments\":false,\"orderDesignatingPlaceOfTrial\":false,\"orderForAmendedPetition\":false,\"orderForAmendedPetitionAndFilingFee\":false,\"orderForFilingFee\":false,\"orderForCds\":false,\"orderForRatification\":false,\"orderToShowCause\":false,\"archivedDocketEntries\":[],\"statistics\":[],\"archivedCorrespondences\":[],\"docketEntries\":[{\"entityName\":\"DocketEntry\",\"stampData\":{},\"isDraft\":false,\"pending\":false,\"userId\":\"7805d1ab-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2019-08-16T17:29:10.132Z\",\"docketEntryId\":\"5bd2f4eb-e08a-41e4-8d18-13b9ffd4514c\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Petition\",\"documentType\":\"Petition\",\"eventCode\":\"P\",\"filedBy\":\"Tatum Craig, Wayne Obrien, Partnership Representative\",\"filedByRole\":\"petitioner\",\"filingDate\":\"2019-08-16T17:29:10.132Z\",\"index\":1,\"isFileAttached\":true,\"isOnDocketRecord\":true,\"isStricken\":false,\"numberOfPages\":1,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2019-08-16T04:00:00.000Z\",\"servedAt\":\"2019-08-16T17:30:10.526Z\",\"servedParties\":[{\"email\":\"petitioner@example.com\",\"name\":\"Tatum Craig\"}]},{\"entityName\":\"DocketEntry\",\"draftOrderState\":null,\"stampData\":{},\"isDraft\":false,\"pending\":false,\"userId\":\"7805d1ab-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2019-08-16T17:29:10.133Z\",\"docketEntryId\":\"35306555-83f2-4f61-9be6-438bd107e5eb\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Corporate Disclosure Statement\",\"documentType\":\"Corporate Disclosure Statement\",\"eventCode\":\"DISC\",\"filedBy\":\"Tatum Craig, Wayne Obrien, Partnership Representative\",\"filedByRole\":\"petitioner\",\"filingDate\":\"2019-08-16T17:29:10.133Z\",\"index\":3,\"isFileAttached\":true,\"isOnDocketRecord\":true,\"isStricken\":false,\"numberOfPages\":2,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2019-08-16T04:00:00.000Z\",\"servedAt\":\"2019-08-16T17:29:10.133Z\",\"servedParties\":[{\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\"},{\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\"}]},{\"entityName\":\"DocketEntry\",\"draftOrderState\":{\"eventCode\":\"ODJ\",\"documentTitle\":\"Order of Dismissal for Lack of Jurisdiction\",\"richText\":\"

    Testing

    \",\"documentType\":\"Order of Dismissal for Lack of Jurisdiction\",\"docketNumber\":\"107-19\"},\"stampData\":{},\"isDraft\":true,\"pending\":false,\"signedAt\":\"2019-10-07T14:29:30.288Z\",\"signedByUserId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"signedJudgeN", + "index": 0, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648385 + }, + { + "totalNumberOfChunks": 4, + "requestId": "e76711a7-e964-470f-a41b-6be20c12e9e0", + "sk": "request|e76711a7-e964-470f-a41b-6be20c12e9e0-1", + "chunk": "ame\":\"Ronald L. Buch\",\"userId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2019-10-07T14:29:30.288Z\",\"docketEntryId\":\"25100ec6-eeeb-4e88-872f-c99fad1fe6c7\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Order of Dismissal for Lack of Jurisdiction\",\"documentType\":\"Order of Dismissal for Lack of Jurisdiction\",\"eventCode\":\"ODJ\",\"filedBy\":\"Test Docketclerk\",\"filingDate\":\"2019-10-07T14:29:30.288Z\",\"isFileAttached\":true,\"isOnDocketRecord\":false,\"isStricken\":false,\"numberOfPages\":1,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2019-10-07T04:00:00.000Z\",\"relationship\":\"primaryDocument\"},{\"entityName\":\"DocketEntry\",\"draftOrderState\":null,\"stampData\":{},\"isDraft\":false,\"pending\":false,\"signedAt\":\"2020-07-06T17:06:04.552Z\",\"signedByUserId\":\"7b69a8b5-bcc4-4449-8994-08fda8d342e7\",\"signedJudgeName\":\"Chief Judge\",\"userId\":\"7805d1ab-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2020-09-25T19:27:16.956Z\",\"docketEntryId\":\"ce6f0641-a0ba-4f7b-a330-fb81c873aec8\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Request for Place of Trial at Las Vegas, Nevada\",\"documentType\":\"Request for Place of Trial\",\"eventCode\":\"RQT\",\"filedBy\":\"Migrated\",\"filedByRole\":\"petitioner\",\"filingDate\":\"2019-08-16T17:29:10.132Z\",\"index\":2,\"isFileAttached\":false,\"isOnDocketRecord\":true,\"isStricken\":false,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2020-09-25T04:00:00.000Z\",\"servedAt\":\"2020-09-25T19:27:16.956Z\",\"servedParties\":[{\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\"},{\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\"}]},{\"entityName\":\"DocketEntry\",\"editState\":\"{\\\"eventCode\\\":\\\"OST\\\",\\\"documentType\\\":\\\"Order of Service of Transcript (Bench Opinion)\\\",\\\"documentTitle\\\":\\\"Order of Service of Transcript (Bench Opinion) [Anything]\\\",\\\"scenario\\\":\\\"Type A\\\",\\\"attachments\\\":false,\\\"date\\\":null,\\\"generatedDocumentTitle\\\":\\\"Order of Service of Transcript (Bench Opinion) bench description\\\",\\\"searchText\\\":\\\"bench\\\",\\\"freeText\\\":\\\"bench description\\\",\\\"docketEntryId\\\":\\\"1a92894e-83a5-48ba-9994-3ada44235deb\\\",\\\"docketNumber\\\":\\\"107-19\\\"}\",\"draftOrderState\":null,\"stampData\":{},\"isDraft\":false,\"pending\":false,\"signedAt\":\"2021-12-15T21:25:12.139Z\",\"signedByUserId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"signedJudgeName\":\"Maurice B. Foley\",\"userId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"workItem\":{\"entityName\":\"WorkItem\",\"assigneeId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"assigneeName\":\"Test Docketclerk\",\"associatedJudge\":\"Chief Judge\",\"caseStatus\":\"General Docket - At Issue (Ready for Trial)\",\"caseTitle\":\"Tatum Craig, Wayne Obrien, Partnership Representative\",\"completedAt\":\"2021-12-15T21:25:25.326Z\",\"completedBy\":\"Test Docketclerk\",\"completedByUserId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"completedMessage\":\"completed\",\"createdAt\":\"2021-12-15T21:25:25.325Z\",\"docketEntry\":{\"createdAt\":\"2021-12-15T21:25:12.138Z\",\"docketEntryId\":\"1a92894e-83a5-48ba-9994-3ada44235deb\",\"documentTitle\":\"Order of Service of Transcript (Bench Opinion) bench description\",\"documentType\":\"Order of Service of Transcript (Bench Opinion)\",\"eventCode\":\"OST\",\"isFileAttached\":true,\"receivedAt\":\"2021-12-15T05:00:00.000Z\",\"servedAt\":\"2021-12-15T21:25:25.320Z\",\"userId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\"},\"docketNumber\":\"107-19\",\"docketNumberWithSuffix\":\"107-19L\",\"hideFromPendingMessages\":true,\"highPriority\":false,\"section\":\"docket\",\"sentBy\":\"Test Docketclerk\",\"sentBySection\":\"docket\",\"sentByUserId\":\"1805d1ab-18d0-43ec-bafb-654e83405416\",\"updatedAt\":\"2021-12-15T21:25:25.325Z\",\"workItemId\":\"39b3ac72-0173-4851-829b-e0878def646c\"},\"addToCoversheet\":false,\"attachments\":false,\"createdAt\":\"2021-12-15T21:25:12.138Z\",\"date\":null,\"docketEntryId\":\"1a92894e-83a5-48ba-9994-3ada44235deb\",\"docketNumber\":\"107-19\",\"documentIdBeforeSignature\":\"5c201e01-8753-4e2a-a74c-3dd7920e903c\",\"documentTitle\":\"Order of Service of Transcript (Bench Opinion) bench description\",\"documentType\":\"Order of Service of Transcript (Bench Opi", + "index": 1, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648385 + }, + { + "totalNumberOfChunks": 4, + "requestId": "e76711a7-e964-470f-a41b-6be20c12e9e0", + "sk": "request|e76711a7-e964-470f-a41b-6be20c12e9e0-2", + "chunk": "nion)\",\"eventCode\":\"OST\",\"filedByRole\":\"docketclerk\",\"filingDate\":\"2021-12-15T21:25:25.320Z\",\"freeText\":\"bench description\",\"index\":4,\"isFileAttached\":true,\"isOnDocketRecord\":true,\"isPendingService\":false,\"isStricken\":false,\"numberOfPages\":1,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2021-12-15T05:00:00.000Z\",\"relationship\":\"primaryDocument\",\"scenario\":\"Type A\",\"servedAt\":\"2021-12-15T21:25:25.320Z\",\"servedPartiesCode\":\"B\",\"servedParties\":[{\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\"},{\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\"}]},{\"entityName\":\"DocketEntry\",\"stampData\":{},\"isDraft\":false,\"pending\":false,\"userId\":\"5805d1ab-18d0-43ec-bafb-654e83405416\",\"workItem\":{\"entityName\":\"WorkItem\",\"assigneeId\":null,\"assigneeName\":null,\"associatedJudge\":\"Chief Judge\",\"caseStatus\":\"General Docket - At Issue (Ready for Trial)\",\"caseTitle\":\"Tatum Craig, Wayne Obrien, Partnership Representative\",\"createdAt\":\"2024-06-28T19:54:22.467Z\",\"docketEntry\":{\"createdAt\":\"2024-06-28T19:54:22.466Z\",\"docketEntryId\":\"178af2d2-fab1-445a-a729-d3da63517a0a\",\"documentTitle\":\"Status Report\",\"documentType\":\"Status Report\",\"eventCode\":\"RPT\",\"filedBy\":\"Resp.\",\"isFileAttached\":true,\"receivedAt\":\"2024-06-28T04:00:00.000Z\",\"userId\":\"5805d1ab-18d0-43ec-bafb-654e83405416\"},\"docketNumber\":\"107-19\",\"docketNumberWithSuffix\":\"107-19L\",\"highPriority\":false,\"section\":\"docket\",\"sentBy\":\"Test IRS Practitioner\",\"sentByUserId\":\"5805d1ab-18d0-43ec-bafb-654e83405416\",\"updatedAt\":\"2024-06-28T19:54:22.467Z\",\"workItemId\":\"da5fbd31-b1a4-4c40-a935-b9aa81bdfec1\"},\"addToCoversheet\":false,\"attachments\":false,\"certificateOfService\":false,\"createdAt\":\"2024-06-28T19:54:22.466Z\",\"docketEntryId\":\"178af2d2-fab1-445a-a729-d3da63517a0a\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Status Report\",\"documentType\":\"Status Report\",\"eventCode\":\"RPT\",\"filedBy\":\"Resp.\",\"filedByRole\":\"irsPractitioner\",\"filingDate\":\"2024-06-28T19:54:22.466Z\",\"hasSupportingDocuments\":false,\"index\":5,\"isFileAttached\":true,\"isOnDocketRecord\":true,\"isStricken\":false,\"numberOfPages\":2,\"redactionAcknowledgement\":true,\"filers\":[],\"partyIrsPractitioner\":true,\"processingStatus\":\"complete\",\"receivedAt\":\"2024-06-28T04:00:00.000Z\",\"relationship\":\"primaryDocument\",\"scenario\":\"Standard\",\"servedAt\":\"2024-06-28T19:54:22.468Z\",\"servedPartiesCode\":\"B\",\"servedParties\":[{\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\"},{\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\"}]},{\"entityName\":\"DocketEntry\",\"draftOrderState\":{\"orderType\":\"statusReport\",\"addedDocketNumbers\":[],\"docketEntryDescription\":\"Test Status Report Order (Unsigned)\",\"dueDate\":\"2024-07-11\",\"jurisdiction\":\"retained\",\"richText\":\"

    On June 28, 2024, a status report was filed in this case (Index no. 5). For cause, it is

    ORDERED that the parties shall file a further status report by July 11, 2024. It is further

    ORDERED that this case is stricken from the trial session. It is further

    ORDERED that jurisdiction is retained by the undersigned. It is further

    ORDERED that Test

    \",\"issueOrder\":\"allCasesInGroup\",\"eventCode\":\"O\",\"additionalOrderText\":\"Test\",\"strickenFromTrialSessions\":true,\"freeText\":\"Test Status Report Order (Unsigned)\",\"statusReportFilingDate\":\"2024-06-28\",\"statusReportIndex\":\"5\",\"documentTitle\":\"Test Status Report Order (Unsigned)\",\"docketNumber\":\"107-19\"},\"stampData\":{},\"isDraft\":true,\"pending\":false,\"userId\":\"dabbad00-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2024-07-10T21:36:34.809Z\",\"docketEntryId\":\"49acedbf-978d-476c-aae9-42bb75595dd3\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Test Status Report Order (Unsigned)\",\"eventCode\":\"O\",\"filedBy\":\"Colvin\",\"filedByRole\":\"judge\",\"filingDate\":\"2024-07-10T21:36:34.809Z\",\"freeText\":\"Test Status Report Order (Unsigned)\",\"isFileAttached\":true,\"isOnDocketRecord\":fa", + "index": 2, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648385 + }, + { + "totalNumberOfChunks": 4, + "requestId": "e76711a7-e964-470f-a41b-6be20c12e9e0", + "sk": "request|e76711a7-e964-470f-a41b-6be20c12e9e0-3", + "chunk": "lse,\"isStricken\":false,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2024-07-10T04:00:00.000Z\",\"relationship\":\"primaryDocument\"},{\"entityName\":\"DocketEntry\",\"draftOrderState\":{\"additionalOrderText\":\"Test\",\"docketEntryDescription\":\"Test Status Report Order (Signed)\",\"issueOrder\":\"allCasesInGroup\",\"orderType\":\"statusReport\",\"dueDate\":\"2024-07-11\",\"strickenFromTrialSessions\":true,\"jurisdiction\":\"retained\",\"documentTitle\":\"Test Status Report Order (Signed)\",\"eventCode\":\"O\",\"richText\":\"

    On June 28, 2024, a status report was filed in this case (Index no. 5). For cause, it is

    ORDERED that the parties shall file a further status report by July 11, 2024. It is further

    ORDERED that this case is stricken from the trial session. It is further

    ORDERED that jurisdiction is retained by the undersigned. It is further

    ORDERED that Test

    \",\"statusReportFilingDate\":\"2024-06-28\",\"statusReportIndex\":\"5\",\"docketNumber\":\"107-19\",\"addedDocketNumbers\":[],\"freeText\":\"Test Status Report Order (Signed)\"},\"stampData\":{},\"isDraft\":true,\"pending\":false,\"userId\":\"dabbad00-18d0-43ec-bafb-654e83405416\",\"addToCoversheet\":false,\"createdAt\":\"2024-07-10T21:37:05.678Z\",\"docketEntryId\":\"61967538-5261-4bb9-b3b6-8072a536d007\",\"docketNumber\":\"107-19\",\"documentTitle\":\"Test Status Report Order (Signed)\",\"eventCode\":\"O\",\"filedBy\":\"Colvin\",\"filedByRole\":\"judge\",\"filingDate\":\"2024-07-10T21:37:05.678Z\",\"freeText\":\"Test Status Report Order (Signed)\",\"isFileAttached\":true,\"isOnDocketRecord\":false,\"isStricken\":false,\"filers\":[],\"processingStatus\":\"complete\",\"receivedAt\":\"2024-07-10T04:00:00.000Z\",\"relationship\":\"primaryDocument\"}],\"isSealed\":false,\"hearings\":[],\"privatePractitioners\":[{\"entityName\":\"PrivatePractitioner\",\"email\":\"privatePractitioner@example.com\",\"name\":\"Test Private Practitioner\",\"role\":\"privatePractitioner\",\"userId\":\"9805d1ab-18d0-43ec-bafb-654e83405416\",\"contact\":{\"address1\":\"234 Main St\",\"address2\":\"Apartment 4\",\"address3\":\"Under the stairs\",\"city\":\"Chicago\",\"countryType\":\"domestic\",\"phone\":\"+1 (555) 555-5555\",\"postalCode\":\"61234\",\"state\":\"IL\"},\"section\":\"privatePractitioner\",\"barNumber\":\"PT1234\",\"representing\":[\"7805d1ab-18d0-43ec-bafb-654e83405416\"],\"serviceIndicator\":\"Electronic\"}],\"irsPractitioners\":[{\"entityName\":\"IrsPractitioner\",\"email\":\"irspractitioner@example.com\",\"name\":\"Test IRS Practitioner\",\"role\":\"irsPractitioner\",\"userId\":\"5805d1ab-18d0-43ec-bafb-654e83405416\",\"contact\":{\"address1\":\"234 Main St\",\"address2\":\"Apartment 4\",\"address3\":\"Under the stairs\",\"city\":\"Chicago\",\"countryType\":\"domestic\",\"phone\":\"+1 (555) 555-5555\",\"postalCode\":\"61234\",\"state\":\"IL\"},\"section\":\"irsPractitioner\",\"barNumber\":\"RT6789\",\"serviceIndicator\":\"Electronic\"}],\"caseCaption\":\"Tatum Craig, Wayne Obrien, Partnership Representative, Petitioner(s)\",\"caseType\":\"CDP (Lien/Levy)\",\"createdAt\":\"2019-08-16T17:29:10.132Z\",\"docketNumber\":\"107-19\",\"docketNumberSuffix\":\"L\",\"filingType\":\"A business\",\"irsNoticeDate\":null,\"isPaper\":false,\"partyType\":\"Partnership (as a partnership representative under BBA)\",\"petitionPaymentStatus\":\"Not paid\",\"preferredTrialCity\":\"Las Vegas, Nevada\",\"procedureType\":\"Regular\",\"receivedAt\":\"2019-08-16T17:29:10.132Z\",\"status\":\"General Docket - At Issue (Ready for Trial)\",\"sortableDocketNumber\":2019000107,\"initialDocketNumberSuffix\":\"L\",\"initialCaption\":\"Tatum Craig, Wayne Obrien, Partnership Representative, Petitioner(s)\",\"hasPendingItems\":false,\"docketNumberWithSuffix\":\"107-19L\"},\"headers\":{\"Access-Control-Expose-Headers\":\"X-Terminal-User\",\"Cache-Control\":\"max-age=0, private, no-cache, no-store, must-revalidate\",\"Content-Type\":\"application/json\",\"Pragma\":\"no-cache\",\"Vary\":\"Authorization\",\"X-Content-Type-Options\":\"nosniff\"},\"statusCode\":\"200\"}", + "index": 3, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648385 + }, + { + "totalNumberOfChunks": 1, + "requestId": "f03c7d5e-9c13-4a3e-9dd6-13b50f737d0a", + "sk": "request|f03c7d5e-9c13-4a3e-9dd6-13b50f737d0a-0", + "chunk": "{\"headers\":{\"Access-Control-Expose-Headers\":\"X-Terminal-User\",\"Cache-Control\":\"max-age=0, private, no-cache, no-store, must-revalidate\",\"Content-Type\":\"application/json\",\"Pragma\":\"no-cache\",\"Vary\":\"Authorization\",\"X-Content-Type-Options\":\"nosniff\"},\"statusCode\":\"200\"}", + "index": 0, + "pk": "user|dabbad00-18d0-43ec-bafb-654e83405416", + "ttl": 1720648384 + }, { "judgeTitle": "Judge", "judgeFullName": "John O. Colvin", diff --git a/web-client/src/getConstants.ts b/web-client/src/getConstants.ts index 2b92999fbf8..63ca8ce7e4a 100644 --- a/web-client/src/getConstants.ts +++ b/web-client/src/getConstants.ts @@ -112,6 +112,8 @@ import { SINGLE_DOCKET_RECORD_ONLY_EVENT_CODES, STAMPED_DOCUMENTS_ALLOWLIST, STANDING_PRETRIAL_EVENT_CODES, + STATUS_REPORT_ORDER_DOCUMENTS_ALLOWLIST, + STATUS_REPORT_ORDER_OPTIONS, STATUS_TYPES_MANUAL_UPDATE, STATUS_TYPES_WITH_ASSOCIATED_JUDGE, STIPULATED_DECISION_EVENT_CODE, @@ -304,6 +306,8 @@ export const getConstants = () => ({ STATUS_OF_MATTER_OPTIONS: CaseWorksheet.STATUS_OF_MATTER_OPTIONS, STATUS_OF_MATTER_OPTIONS_DICTIONARY: DocketEntryWorksheet.STATUS_OF_MATTER_OPTIONS_DICTIONARY, + STATUS_REPORT_ORDER_DOCUMENTS_ALLOWLIST, + STATUS_REPORT_ORDER_OPTIONS, STATUS_TYPES: CASE_STATUS_TYPES, STATUS_TYPES_MANUAL_UPDATE, STATUS_TYPES_WITH_ASSOCIATED_JUDGE, diff --git a/web-client/src/presenter/actions/CaseCreation/updatedSetupFilesForCaseCreationAction.ts b/web-client/src/presenter/actions/CaseCreation/updatedSetupFilesForCaseCreationAction.ts index d8596eceeae..b2935977f42 100644 --- a/web-client/src/presenter/actions/CaseCreation/updatedSetupFilesForCaseCreationAction.ts +++ b/web-client/src/presenter/actions/CaseCreation/updatedSetupFilesForCaseCreationAction.ts @@ -14,7 +14,7 @@ export const updatedSetupFilesForCaseCreationAction = ({ requestForPlaceOfTrialFile, stinFile, } = petitionMetadata; - // need to do this elsewhere? + const attachmentsToPetition: File[] | undefined = hasIrsNotice ? (irsNotices ?.map(irsNotice => irsNotice.file) diff --git a/web-client/src/presenter/actions/CourtIssuedOrder/isEditingOrderAction.ts b/web-client/src/presenter/actions/CourtIssuedOrder/isEditingOrderAction.ts index 2fb2590d7e8..8ab8be2c31a 100644 --- a/web-client/src/presenter/actions/CourtIssuedOrder/isEditingOrderAction.ts +++ b/web-client/src/presenter/actions/CourtIssuedOrder/isEditingOrderAction.ts @@ -1,3 +1,4 @@ +import { isEmpty } from 'lodash'; import { state } from '@web-client/presenter/app.cerebral'; /** @@ -9,7 +10,7 @@ import { state } from '@web-client/presenter/app.cerebral'; */ export const isEditingOrderAction = ({ get, path }: ActionProps) => { const documentToEdit = get(state.documentToEdit); - if (documentToEdit) { + if (!isEmpty(documentToEdit)) { return path.yes(); } else { return path.no(); diff --git a/web-client/src/presenter/actions/FileDocument/getFileExternalDocumentAlertSuccessAction.ts b/web-client/src/presenter/actions/FileDocument/getFileExternalDocumentAlertSuccessAction.ts index 2a568d882f3..6dfa40fb602 100644 --- a/web-client/src/presenter/actions/FileDocument/getFileExternalDocumentAlertSuccessAction.ts +++ b/web-client/src/presenter/actions/FileDocument/getFileExternalDocumentAlertSuccessAction.ts @@ -1,3 +1,4 @@ +import { isEmpty } from 'lodash'; import { state } from '@web-client/presenter/app.cerebral'; /** @@ -55,15 +56,13 @@ export const getFileExternalDocumentAlertSuccessAction = ({ ); alertSuccess.message = `${noticeDocketEntry.documentTitle} saved.`; } - - if (documentToEdit) { + if (!isEmpty(documentToEdit)) { return { alertSuccess: { message: 'Changes saved.', }, }; } - if (props.printReceiptLink) { alertSuccess.linkUrl = props.printReceiptLink; alertSuccess.linkText = 'Print receipt.'; diff --git a/web-client/src/presenter/actions/FileDocument/getShouldGeneratePrintableFilingReceiptAction.test.ts b/web-client/src/presenter/actions/FileDocument/getShouldGeneratePrintableFilingReceiptAction.test.ts index 469f9c76bed..84c07e06aba 100644 --- a/web-client/src/presenter/actions/FileDocument/getShouldGeneratePrintableFilingReceiptAction.test.ts +++ b/web-client/src/presenter/actions/FileDocument/getShouldGeneratePrintableFilingReceiptAction.test.ts @@ -25,7 +25,7 @@ describe('getShouldGeneratePrintableFilingReceiptAction', () => { documentsFiled: {}, }, state: { - documentToEdit: {}, + documentToEdit: { docketEntryId: '1' }, }, }); @@ -38,6 +38,7 @@ describe('getShouldGeneratePrintableFilingReceiptAction', () => { presenter, }, props: {}, + state: { documentToEdit: {} }, }); expect(falseMock).toHaveBeenCalled(); diff --git a/web-client/src/presenter/actions/FileDocument/getShouldGeneratePrintableFilingReceiptAction.ts b/web-client/src/presenter/actions/FileDocument/getShouldGeneratePrintableFilingReceiptAction.ts index a82ce1e8395..4b9f09e459f 100644 --- a/web-client/src/presenter/actions/FileDocument/getShouldGeneratePrintableFilingReceiptAction.ts +++ b/web-client/src/presenter/actions/FileDocument/getShouldGeneratePrintableFilingReceiptAction.ts @@ -1,3 +1,4 @@ +import { isEmpty } from 'lodash'; import { state } from '@web-client/presenter/app.cerebral'; /** @@ -14,7 +15,8 @@ export const getShouldGeneratePrintableFilingReceiptAction = ({ path, props, }: ActionProps) => { - if (!get(state.documentToEdit) && props.documentsFiled) { + const documentToEdit = get(state.documentToEdit); + if (isEmpty(documentToEdit) && props.documentsFiled) { return path.true(); } diff --git a/web-client/src/presenter/actions/StartCase/setDefaultContactStateAction.ts b/web-client/src/presenter/actions/StartCase/setDefaultContactStateAction.ts index dd702f09f32..81e17352d99 100644 --- a/web-client/src/presenter/actions/StartCase/setDefaultContactStateAction.ts +++ b/web-client/src/presenter/actions/StartCase/setDefaultContactStateAction.ts @@ -38,16 +38,11 @@ export const setDefaultContactStateAction = ({ store.unset(state.form.useSameAsPrimary); store.unset(state.form.isSpouseDeceased); store.unset(state.form.hasSpouseConsent); - return; - } - - if (showContactSecondary) { - store.set(state.form.contactSecondary, {}); - store.set(state.form.hasSpouseConsent, false); - store.set(state.form.useSameAsPrimary, true); } else { + const useSameAsPrimary = showContactSecondary; + store.set(state.form.contactSecondary, {}); store.set(state.form.hasSpouseConsent, false); - store.set(state.form.useSameAsPrimary, false); + store.set(state.form.useSameAsPrimary, useSameAsPrimary); } }; diff --git a/web-client/src/presenter/actions/StartCase/updatePartyTypeActionUpdated.ts b/web-client/src/presenter/actions/StartCase/updatePartyTypeActionUpdated.ts index 9dc02416c6b..5eb0e1a1d0c 100644 --- a/web-client/src/presenter/actions/StartCase/updatePartyTypeActionUpdated.ts +++ b/web-client/src/presenter/actions/StartCase/updatePartyTypeActionUpdated.ts @@ -26,8 +26,7 @@ export const updatePartyTypeActionUpdated = ({ }; const handleFilingType = () => { - const { value } = props; - if (value === 'Myself' || value === 'Individual petitioner') { + if (props.value === 'Myself' || props.value === 'Individual petitioner') { updatePartyType(PARTY_TYPES.petitioner); } resetFormFields(); @@ -49,16 +48,15 @@ export const updatePartyTypeActionUpdated = ({ store.unset(state.form.minorIncompetentType); store.unset(state.form.partyType); - const { value } = props; - store.set(state.form.otherType, value); + store.set(state.form.otherType, props.value); - if (value === 'Deceased Spouse') { + if (props.value === 'Deceased Spouse') { updatePartyType(PARTY_TYPES.survivingSpouse); return; } - if (value === 'Donor' || value === 'Transferee') { - updatePartyType(value); + if (props.value === 'Donor' || props.value === 'Transferee') { + updatePartyType(props.value); } }; diff --git a/web-client/src/presenter/actions/StartCaseInternal/resetContactSecondaryAddressAction.test.ts b/web-client/src/presenter/actions/StartCaseInternal/resetContactSecondaryAddressAction.test.ts deleted file mode 100644 index 166cbaab0d6..00000000000 --- a/web-client/src/presenter/actions/StartCaseInternal/resetContactSecondaryAddressAction.test.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { resetContactSecondaryAddressAction } from '@web-client/presenter/actions/StartCaseInternal/resetContactSecondaryAddressAction'; -import { runAction } from '@web-client/presenter/test.cerebral'; - -describe('resetContactSecondaryAddressAction', () => { - it('should clear state correctly', async () => { - const results = await runAction(resetContactSecondaryAddressAction, { - state: { - form: { - contactSecondary: { - address1: 'TEST_address1', - address2: 'TEST_address2', - address3: 'TEST_address3', - city: 'TEST_city', - phone: 'TEST_phone', - placeOfLegalResidence: 'TEST_placeOfLegalResidence', - postalCode: 'TEST_postalCode', - state: 'TEST_state', - }, - }, - }, - }); - - const { contactSecondary } = results.state.form; - expect(contactSecondary).toEqual({}); - }); -}); diff --git a/web-client/src/presenter/actions/StartCaseInternal/resetContactSecondaryAddressAction.ts b/web-client/src/presenter/actions/StartCaseInternal/resetContactSecondaryAddressAction.ts deleted file mode 100644 index a592a4dc17f..00000000000 --- a/web-client/src/presenter/actions/StartCaseInternal/resetContactSecondaryAddressAction.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { state } from '@web-client/presenter/app.cerebral'; - -export const resetContactSecondaryAddressAction = ({ store }: ActionProps) => { - store.unset(state.form.contactSecondary.address1); - store.unset(state.form.contactSecondary.address2); - store.unset(state.form.contactSecondary.address3); - store.unset(state.form.contactSecondary.city); - store.unset(state.form.contactSecondary.phone); - store.unset(state.form.contactSecondary.placeOfLegalResidence); - store.unset(state.form.contactSecondary.postalCode); - store.unset(state.form.contactSecondary.state); -}; diff --git a/web-client/src/presenter/actions/StatusReportOrder/clearJurisdictionRadioAction.test.ts b/web-client/src/presenter/actions/StatusReportOrder/clearJurisdictionRadioAction.test.ts new file mode 100644 index 00000000000..5219495d99a --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/clearJurisdictionRadioAction.test.ts @@ -0,0 +1,41 @@ +import { STATUS_REPORT_ORDER_OPTIONS } from '@shared/business/entities/EntityConstants'; +import { clearJurisdictionRadioAction } from './clearJurisdictionRadioAction'; +import { runAction } from '@web-client/presenter/test.cerebral'; + +describe('clearJurisdictionRadioAction,', () => { + it("should unset the jurisdiction form property if the 'Case is stricken from the trial session' checkbox is unselected", async () => { + const result = await runAction(clearJurisdictionRadioAction, { + props: { + key: 'strickenFromTrialSessions', + value: false, + }, + state: { + form: { + jurisdiction: + STATUS_REPORT_ORDER_OPTIONS.jurisdictionOptions.retained, + }, + }, + }); + + expect(result.state.form).toEqual({}); + }); + + it("should not unset the jurisdiction form property if the 'Case is stricken from the trial session' checkbox is selected", async () => { + const result = await runAction(clearJurisdictionRadioAction, { + props: { + key: 'strickenFromTrialSessions', + value: true, + }, + state: { + form: { + jurisdiction: + STATUS_REPORT_ORDER_OPTIONS.jurisdictionOptions.retained, + }, + }, + }); + + expect(result.state.form).toEqual({ + jurisdiction: STATUS_REPORT_ORDER_OPTIONS.jurisdictionOptions.retained, + }); + }); +}); diff --git a/web-client/src/presenter/actions/StatusReportOrder/clearJurisdictionRadioAction.ts b/web-client/src/presenter/actions/StatusReportOrder/clearJurisdictionRadioAction.ts new file mode 100644 index 00000000000..e03d9e5e09f --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/clearJurisdictionRadioAction.ts @@ -0,0 +1,13 @@ +import { state } from '@web-client/presenter/app.cerebral'; + +/** + * sets the state.form to the props.value passed in + * @param {object} providers the providers object + * @param {object} providers.store the cerebral store + * @param {object} providers.props the cerebral props object + */ +export const clearJurisdictionRadioAction = ({ props, store }: ActionProps) => { + if (props.key === 'strickenFromTrialSessions' && !props.value) { + store.unset(state.form.jurisdiction); + } +}; diff --git a/web-client/src/presenter/actions/StatusReportOrder/clearStatusReportOrderFormAction.test.ts b/web-client/src/presenter/actions/StatusReportOrder/clearStatusReportOrderFormAction.test.ts new file mode 100644 index 00000000000..74a982507ce --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/clearStatusReportOrderFormAction.test.ts @@ -0,0 +1,29 @@ +import { STATUS_REPORT_ORDER_OPTIONS } from '@shared/business/entities/EntityConstants'; +import { clearStatusReportOrderFormAction } from './clearStatusReportOrderFormAction'; +import { runAction } from '@web-client/presenter/test.cerebral'; + +describe('clearStatusReportOrderFormAction,', () => { + it('should clear form state', async () => { + const result = await runAction(clearStatusReportOrderFormAction, { + state: { + form: { + additionalOrderText: 'Test', + docketEntryDescription: 'Order Test', + dueDate: '07/04/2024', + issueOrder: + STATUS_REPORT_ORDER_OPTIONS.issueOrderOptions.allCasesInGroup, + jurisdiction: + STATUS_REPORT_ORDER_OPTIONS.jurisdictionOptions.retained, + orderType: STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + strickenFromTrialSessions: 'true', + }, + }, + }); + + expect(result.state.form).toEqual({ + additionalOrderText: '', + docketEntryDescription: 'Order', + issueOrder: STATUS_REPORT_ORDER_OPTIONS.issueOrderOptions.allCasesInGroup, + }); + }); +}); diff --git a/web-client/src/presenter/actions/StatusReportOrder/clearStatusReportOrderFormAction.ts b/web-client/src/presenter/actions/StatusReportOrder/clearStatusReportOrderFormAction.ts new file mode 100644 index 00000000000..1dde6571f0e --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/clearStatusReportOrderFormAction.ts @@ -0,0 +1,15 @@ +import { STATUS_REPORT_ORDER_OPTIONS } from '@shared/business/entities/EntityConstants'; +import { state } from '@web-client/presenter/app.cerebral'; + +export const clearStatusReportOrderFormAction = ({ store }: ActionProps) => { + store.unset(state.form.orderType); + store.unset(state.form.dueDate); + store.unset(state.form.strickenFromTrialSessions); + store.unset(state.form.jurisdiction); + store.set(state.form.additionalOrderText, ''); + store.set(state.form.docketEntryDescription, 'Order'); + store.set( + state.form.issueOrder, + STATUS_REPORT_ORDER_OPTIONS.issueOrderOptions.allCasesInGroup, + ); +}; diff --git a/web-client/src/presenter/actions/StatusReportOrder/formatStatusReportFilingDateAction.test.ts b/web-client/src/presenter/actions/StatusReportOrder/formatStatusReportFilingDateAction.test.ts new file mode 100644 index 00000000000..ccfc54e7e5e --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/formatStatusReportFilingDateAction.test.ts @@ -0,0 +1,31 @@ +import { FORMATS } from '@shared/business/utilities/DateHandler'; +import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; +import { formatStatusReportFilingDateAction } from './formatStatusReportFilingDateAction'; +import { presenter } from '@web-client/presenter/presenter-mock'; +import { runAction } from '@web-client/presenter/test.cerebral'; + +describe('formatStatusReportFilingDateAction,', () => { + beforeAll(() => { + presenter.providers.applicationContext = applicationContext; + }); + + it('should take in status report filing date and output formatted version', async () => { + const statusReportFilingDate = '2024-07-04'; + const statusReportFilingDateFormatted = applicationContext + .getUtilities() + .formatDateString(statusReportFilingDate, FORMATS.YYYYMMDD); + + const result = await runAction(formatStatusReportFilingDateAction, { + modules: { + presenter, + }, + props: { + statusReportFilingDate, + }, + }); + + expect(result.output).toEqual({ + statusReportFilingDate: statusReportFilingDateFormatted, + }); + }); +}); diff --git a/web-client/src/presenter/actions/StatusReportOrder/formatStatusReportFilingDateAction.ts b/web-client/src/presenter/actions/StatusReportOrder/formatStatusReportFilingDateAction.ts new file mode 100644 index 00000000000..c6e97c6ec5b --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/formatStatusReportFilingDateAction.ts @@ -0,0 +1,12 @@ +import { FORMATS } from '@shared/business/utilities/DateHandler'; + +export const formatStatusReportFilingDateAction = ({ + applicationContext, + props, +}: ActionProps) => { + const formattedStatusReportFilingDate = applicationContext + .getUtilities() + .formatDateString(props.statusReportFilingDate, FORMATS.YYYYMMDD); + + return { statusReportFilingDate: formattedStatusReportFilingDate }; +}; diff --git a/web-client/src/presenter/actions/StatusReportOrder/getStatusReportOrderDocketNumbersToDisplayAction.test.ts b/web-client/src/presenter/actions/StatusReportOrder/getStatusReportOrderDocketNumbersToDisplayAction.test.ts new file mode 100644 index 00000000000..c5a2563484a --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/getStatusReportOrderDocketNumbersToDisplayAction.test.ts @@ -0,0 +1,97 @@ +import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; +import { getStatusReportOrderDocketNumbersToDisplayAction } from './getStatusReportOrderDocketNumbersToDisplayAction'; +import { presenter } from '@web-client/presenter/presenter-mock'; +import { runAction } from '@web-client/presenter/test.cerebral'; + +describe('getStatusReportOrderDocketNumbersToDisplayAction,', () => { + beforeAll(() => { + presenter.providers.applicationContext = applicationContext; + }); + + it("should use the case's docket number as the docket number to display when the case is not a lead case", async () => { + const docketNumber = '1234-ABC'; + const result = await runAction( + getStatusReportOrderDocketNumbersToDisplayAction, + { + modules: { + presenter, + }, + state: { + caseDetail: { + consolidatedCases: [], + docketNumber, + leadDocketNumber: null, + }, + }, + }, + ); + + const expectedResult = [docketNumber]; + + expect(result.state.statusReportOrder.docketNumbersToDisplay).toEqual( + expectedResult, + ); + }); + + it('should use the case numbers associated with the case as the docket numbers to display when the case is a lead case', async () => { + const docketNumber = '1234-ABC'; + const leadDocketNumber = '1234-ABC'; + + const result = await runAction( + getStatusReportOrderDocketNumbersToDisplayAction, + { + modules: { + presenter, + }, + state: { + caseDetail: { + consolidatedCases: [ + { docketNumber: '1234-ABC' }, + { docketNumber: '2345-BCD' }, + { docketNumber: '3456-CDE' }, + ], + docketNumber, + leadDocketNumber, + }, + }, + }, + ); + + const expectedResult = ['1234-ABC', '2345-BCD', '3456-CDE']; + + expect(result.state.statusReportOrder.docketNumbersToDisplay).toEqual( + expectedResult, + ); + }); + + it('should sort the case numbers associated with the lead case', async () => { + const docketNumber = '1234-ABC'; + const leadDocketNumber = '1234-ABC'; + + const result = await runAction( + getStatusReportOrderDocketNumbersToDisplayAction, + { + modules: { + presenter, + }, + state: { + caseDetail: { + consolidatedCases: [ + { docketNumber: '3456-CDE' }, + { docketNumber: '2345-BCD' }, + { docketNumber: '1234-ABC' }, + ], + docketNumber, + leadDocketNumber, + }, + }, + }, + ); + + const expectedResult = ['1234-ABC', '2345-BCD', '3456-CDE']; + + expect(result.state.statusReportOrder.docketNumbersToDisplay).toEqual( + expectedResult, + ); + }); +}); diff --git a/web-client/src/presenter/actions/StatusReportOrder/getStatusReportOrderDocketNumbersToDisplayAction.ts b/web-client/src/presenter/actions/StatusReportOrder/getStatusReportOrderDocketNumbersToDisplayAction.ts new file mode 100644 index 00000000000..077ae988ba5 --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/getStatusReportOrderDocketNumbersToDisplayAction.ts @@ -0,0 +1,21 @@ +import { state } from '@web-client/presenter/app.cerebral'; + +export const getStatusReportOrderDocketNumbersToDisplayAction = ({ + get, + store, +}: ActionProps) => { + const caseDetail = get(state.caseDetail); + const isLeadCase = caseDetail.leadDocketNumber === caseDetail.docketNumber; + + let docketNumbersToDisplay = [caseDetail.docketNumber]; + + if (isLeadCase) { + const docketNumbers = caseDetail.consolidatedCases.map(c => c.docketNumber); + docketNumbersToDisplay = docketNumbers.sort(); + } + + store.set( + state.statusReportOrder.docketNumbersToDisplay, + docketNumbersToDisplay, + ); +}; diff --git a/web-client/src/presenter/actions/StatusReportOrder/getStatusReportOrderPdfUrlAction.test.ts b/web-client/src/presenter/actions/StatusReportOrder/getStatusReportOrderPdfUrlAction.test.ts new file mode 100644 index 00000000000..39c8488a76c --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/getStatusReportOrderPdfUrlAction.test.ts @@ -0,0 +1,166 @@ +import { STATUS_REPORT_ORDER_OPTIONS } from '@shared/business/entities/EntityConstants'; +import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; +import { getStatusReportOrderPdfUrlAction } from './getStatusReportOrderPdfUrlAction'; +import { presenter } from '../../presenter-mock'; +import { runAction } from '@web-client/presenter/test.cerebral'; + +describe('getPdfUrlAction', () => { + let createObjectURLStub; + + beforeAll(() => { + global.File = jest.fn(); + createObjectURLStub = jest.fn(); + + presenter.providers.applicationContext = applicationContext; + presenter.providers.router = { + createObjectURL: createObjectURLStub, + }; + }); + + it('generates a pdf url for a non-lead case', async () => { + const docketNumber = '1234-ABC'; + const mockPdf = { url: 'www.example.com' }; + applicationContext + .getUseCases() + .createCourtIssuedOrderPdfFromHtmlInteractor.mockReturnValue(mockPdf); + + const result = await runAction(getStatusReportOrderPdfUrlAction, { + modules: { + presenter, + }, + props: { + contentHtml: '

    hi

    ', + documentTitle: 'Test Title', + eventCode: '0', + }, + state: { + caseDetail: { + docketNumber, + }, + form: { + issueOrder: null, + }, + statusReportOrder: { + docketNumbersToDisplay: [docketNumber], + }, + }, + }); + + expect( + applicationContext.getUseCases() + .createCourtIssuedOrderPdfFromHtmlInteractor, + ).toHaveBeenCalled(); + expect(result.output.pdfUrl).toBe(mockPdf.url); + + const args = + applicationContext.getUseCases() + .createCourtIssuedOrderPdfFromHtmlInteractor.mock.calls[0][1]; + expect(args).toEqual( + expect.objectContaining({ + contentHtml: '

    hi

    ', + docketNumber, + documentTitle: 'Test Title', + eventCode: '0', + }), + ); + }); + + it('generates a pdf url for a lead case with all cases in group selected', async () => { + const docketNumbers = ['1234-ABC', '2345-BCD', '3456-CDE']; + const mockPdf = { url: 'www.example.com' }; + applicationContext + .getUseCases() + .createCourtIssuedOrderPdfFromHtmlInteractor.mockReturnValue(mockPdf); + + const result = await runAction(getStatusReportOrderPdfUrlAction, { + modules: { + presenter, + }, + props: { + contentHtml: '

    hi

    ', + documentTitle: 'Test Title', + eventCode: '0', + }, + state: { + caseDetail: { + docketNumber: '1234-ABC', + }, + form: { + issueOrder: 'allCasesInGroup', + }, + statusReportOrder: { + docketNumbersToDisplay: docketNumbers, + }, + }, + }); + + expect( + applicationContext.getUseCases() + .createCourtIssuedOrderPdfFromHtmlInteractor, + ).toHaveBeenCalled(); + expect(result.output.pdfUrl).toBe(mockPdf.url); + + const args = + applicationContext.getUseCases() + .createCourtIssuedOrderPdfFromHtmlInteractor.mock.calls[0][1]; + + expect(args).toEqual( + expect.objectContaining({ + addedDocketNumbers: docketNumbers, + contentHtml: '

    hi

    ', + documentTitle: 'Test Title', + eventCode: '0', + }), + ); + }); + + it('generates a pdf url for a lead case with just the lead case selected', async () => { + const docketNumber = '1234-ABC'; + const mockPdf = { url: 'www.example.com' }; + applicationContext + .getUseCases() + .createCourtIssuedOrderPdfFromHtmlInteractor.mockReturnValue(mockPdf); + + const result = await runAction(getStatusReportOrderPdfUrlAction, { + modules: { + presenter, + }, + props: { + contentHtml: '

    hi

    ', + documentTitle: 'Test Title', + eventCode: '0', + }, + state: { + caseDetail: { + docketNumber, + }, + form: { + issueOrder: + STATUS_REPORT_ORDER_OPTIONS.issueOrderOptions.justThisCase, + }, + statusReportOrder: { + docketNumbersToDisplay: [docketNumber], + }, + }, + }); + + expect( + applicationContext.getUseCases() + .createCourtIssuedOrderPdfFromHtmlInteractor, + ).toHaveBeenCalled(); + expect(result.output.pdfUrl).toBe(mockPdf.url); + + const args = + applicationContext.getUseCases() + .createCourtIssuedOrderPdfFromHtmlInteractor.mock.calls[0][1]; + + expect(args).toEqual( + expect.objectContaining({ + addedDocketNumbers: [], + contentHtml: '

    hi

    ', + documentTitle: 'Test Title', + eventCode: '0', + }), + ); + }); +}); diff --git a/web-client/src/presenter/actions/StatusReportOrder/getStatusReportOrderPdfUrlAction.ts b/web-client/src/presenter/actions/StatusReportOrder/getStatusReportOrderPdfUrlAction.ts new file mode 100644 index 00000000000..b6f48de3717 --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/getStatusReportOrderPdfUrlAction.ts @@ -0,0 +1,37 @@ +import { STATUS_REPORT_ORDER_OPTIONS } from '@shared/business/entities/EntityConstants'; +import { state } from '@web-client/presenter/app.cerebral'; + +export const getStatusReportOrderPdfUrlAction = async ({ + applicationContext, + get, + props, +}: ActionProps<{ + documentTitle: string; + contentHtml: string; + eventCode: string; +}>): Promise<{ pdfUrl: string }> => { + const { contentHtml, documentTitle, eventCode } = props; + const docketNumber = get(state.caseDetail.docketNumber); + const docketNumbersToDisplay = get( + state.statusReportOrder.docketNumbersToDisplay, + ); + const issueOrder = get(state.form.issueOrder); + + const addedDocketNumbers = + !!issueOrder && + issueOrder === STATUS_REPORT_ORDER_OPTIONS.issueOrderOptions.allCasesInGroup + ? docketNumbersToDisplay + : []; + + const { url } = await applicationContext + .getUseCases() + .createCourtIssuedOrderPdfFromHtmlInteractor(applicationContext, { + addedDocketNumbers, + contentHtml, + docketNumber, + documentTitle, + eventCode, + }); + + return { pdfUrl: url }; +}; diff --git a/web-client/src/presenter/actions/StatusReportOrder/isEditStatusReportOrderAction.test.ts b/web-client/src/presenter/actions/StatusReportOrder/isEditStatusReportOrderAction.test.ts new file mode 100644 index 00000000000..10c0d596412 --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/isEditStatusReportOrderAction.test.ts @@ -0,0 +1,40 @@ +import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; +import { isEditStatusReportOrderAction } from './isEditStatusReportOrderAction'; +import { presenter } from '@web-client/presenter/presenter-mock'; +import { runAction } from '@web-client/presenter/test.cerebral'; + +describe('isEditStatusReportOrderAction,', () => { + const mockEditPath = jest.fn(); + const mockCreatePath = jest.fn(); + + presenter.providers.path = { + create: mockCreatePath, + edit: mockEditPath, + }; + + presenter.providers.applicationContext = applicationContext; + + it('should use create path when new status report order', async () => { + await runAction(isEditStatusReportOrderAction, { + modules: { + presenter, + }, + props: { + isEditing: true, + }, + }); + + expect(mockEditPath).toHaveBeenCalled(); + }); + + it('should use edit path when existing status report order', async () => { + await runAction(isEditStatusReportOrderAction, { + modules: { + presenter, + }, + props: {}, + }); + + expect(mockCreatePath).toHaveBeenCalled(); + }); +}); diff --git a/web-client/src/presenter/actions/StatusReportOrder/isEditStatusReportOrderAction.ts b/web-client/src/presenter/actions/StatusReportOrder/isEditStatusReportOrderAction.ts new file mode 100644 index 00000000000..27964ed9461 --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/isEditStatusReportOrderAction.ts @@ -0,0 +1,6 @@ +export const isEditStatusReportOrderAction = ({ path, props }: ActionProps) => { + if (props.isEditing) { + return path.edit({ docketEntryIdToEdit: props.docketEntryId }); + } + return path.create(); +}; diff --git a/web-client/src/presenter/actions/StatusReportOrder/isStatusReportOrderAction.test.ts b/web-client/src/presenter/actions/StatusReportOrder/isStatusReportOrderAction.test.ts new file mode 100644 index 00000000000..1f0a1427aaf --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/isStatusReportOrderAction.test.ts @@ -0,0 +1,71 @@ +import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; +import { isStatusReportOrderAction } from './isStatusReportOrderAction'; +import { presenter } from '@web-client/presenter/presenter-mock'; +import { runAction } from '@web-client/presenter/test.cerebral'; + +describe('isStatusReportOrderAction,', () => { + const mockIsStatusReportOrderPath = jest.fn(); + const mockIsNotStatusReportOrderPath = jest.fn(); + + presenter.providers.path = { + isNotStatusReportOrder: mockIsNotStatusReportOrderPath, + isStatusReportOrder: mockIsStatusReportOrderPath, + }; + + presenter.providers.applicationContext = applicationContext; + + it('should use status report order path when document is status report order with correct permissions', async () => { + await runAction(isStatusReportOrderAction, { + modules: { + presenter, + }, + state: { + documentToEdit: { + draftOrderState: { + docketEntryDescription: 'Order', + }, + }, + permissions: { + STATUS_REPORT_ORDER: true, + }, + }, + }); + + expect(mockIsStatusReportOrderPath).toHaveBeenCalled(); + }); + + it('should not use status report order path when document is status report order with incorrect permissions', async () => { + await runAction(isStatusReportOrderAction, { + modules: { + presenter, + }, + state: { + documentToEdit: { + draftOrderState: { + docketEntryDescription: 'Order', + }, + }, + permissions: { + STATUS_REPORT_ORDER: false, + }, + }, + }); + + expect(mockIsNotStatusReportOrderPath).toHaveBeenCalled(); + }); + + it('should use status report order path when document is not status report order with correct permissions', async () => { + await runAction(isStatusReportOrderAction, { + modules: { + presenter, + }, + state: { + permissions: { + STATUS_REPORT_ORDER: true, + }, + }, + }); + + expect(mockIsNotStatusReportOrderPath).toHaveBeenCalled(); + }); +}); diff --git a/web-client/src/presenter/actions/StatusReportOrder/isStatusReportOrderAction.ts b/web-client/src/presenter/actions/StatusReportOrder/isStatusReportOrderAction.ts new file mode 100644 index 00000000000..bd2393b08f9 --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/isStatusReportOrderAction.ts @@ -0,0 +1,19 @@ +import { isEmpty } from 'lodash'; +import { state } from '@web-client/presenter/app.cerebral'; + +export const isStatusReportOrderAction = ({ get, path }) => { + const documentToEdit = get(state.documentToEdit); + const docketEntryDescription = get(state.form.docketEntryDescription); + const isStatusReportOrder = + (!isEmpty(documentToEdit) && + !!documentToEdit.draftOrderState.docketEntryDescription) || + !!docketEntryDescription; + + const permissions = get(state.permissions); + + if (isStatusReportOrder && permissions.STATUS_REPORT_ORDER) { + return path.isStatusReportOrder(); + } + + return path.isNotStatusReportOrder(); +}; diff --git a/web-client/src/presenter/actions/StatusReportOrder/prepareStatusReportOrderAction.test.ts b/web-client/src/presenter/actions/StatusReportOrder/prepareStatusReportOrderAction.test.ts new file mode 100644 index 00000000000..7a34d623f8c --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/prepareStatusReportOrderAction.test.ts @@ -0,0 +1,178 @@ +import { FORMATS } from '@shared/business/utilities/DateHandler'; +import { STATUS_REPORT_ORDER_OPTIONS } from '@shared/business/entities/EntityConstants'; +import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; +import { prepareStatusReportOrderAction } from './prepareStatusReportOrderAction'; +import { presenter } from '@web-client/presenter/presenter-mock'; +import { runAction } from '@web-client/presenter/test.cerebral'; + +describe('prepareStatusReportOrderAction,', () => { + beforeAll(() => { + presenter.providers.applicationContext = applicationContext; + }); + + const statusReportFilingDate = '2024-07-04'; + const dueDate = '2024-08-04'; + const statusReportFilingDateFormatted = applicationContext + .getUtilities() + .formatDateString(statusReportFilingDate, FORMATS.MONTH_DAY_YEAR); + const dueDateFormatted = applicationContext + .getUtilities() + .formatDateString(dueDate, FORMATS.MONTH_DAY_YEAR); + const statusReportIndex = 4; + const expectedFiledLine = `

    On ${statusReportFilingDateFormatted}, a status report was filed (Index no. ${statusReportIndex}). For cause, it is

    `; + + it('prepare status report with no options selected', async () => { + const result = await runAction(prepareStatusReportOrderAction, { + modules: { + presenter, + }, + state: { + caseDetail: {}, + form: { + additionalOrderText: undefined, + docketEntryDescription: 'Order', + dueDate: undefined, + jurisdiction: undefined, + orderType: undefined, + strickenFromTrialSessions: undefined, + }, + statusReportOrder: { + statusReportFilingDate, + statusReportIndex, + }, + }, + }); + + expect(result.state.form.documentTitle).toEqual('Order'); + expect(result.state.form.eventCode).toEqual('O'); + expect(result.state.form.richText).toEqual(expectedFiledLine); + }); + + it('prepare status report with all options selected', async () => { + const additionalOrderText = 'Test Additional Order Text'; + const jurisdiction = + STATUS_REPORT_ORDER_OPTIONS.jurisdictionOptions.retained; + const orderType = STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport; + const strickenFromTrialSessions = true; + const expectedFullText = `

    On ${statusReportFilingDateFormatted}, a status report was filed (Index no. 4). For cause, it is

    ORDERED that the parties shall file a further status report by ${dueDateFormatted}. It is further

    ORDERED that this case is stricken from the trial session. It is further

    ORDERED that jurisdiction is retained by the undersigned. It is further

    ORDERED that Test Additional Order Text

    `; + + const result = await runAction(prepareStatusReportOrderAction, { + modules: { + presenter, + }, + state: { + caseDetail: {}, + form: { + additionalOrderText, + dueDate, + jurisdiction, + orderType, + strickenFromTrialSessions, + }, + statusReportOrder: { + statusReportFilingDate, + statusReportIndex, + }, + }, + }); + + expect(result.state.form.richText).toEqual(expectedFullText); + }); + + it.each([ + [ + STATUS_REPORT_ORDER_OPTIONS.issueOrderOptions.allCasesInGroup, + `

    On ${statusReportFilingDateFormatted}, a status report was filed (Lead case index no. ${statusReportIndex}). For cause, it is

    `, + ], + [ + STATUS_REPORT_ORDER_OPTIONS.issueOrderOptions.justThisCase, + `

    On ${statusReportFilingDateFormatted}, a status report was filed (Index no. 4). For cause, it is

    `, + ], + ])( + 'should have correct output for lead case with issue order %s', + async (input, output) => { + const result = await runAction(prepareStatusReportOrderAction, { + modules: { + presenter, + }, + state: { + caseDetail: { + docketNumber: '101-01', + leadDocketNumber: '101-01', + }, + form: { + issueOrder: input, + }, + statusReportOrder: { + statusReportFilingDate, + statusReportIndex, + }, + }, + }); + + expect(result.state.form.richText).toBe(output); + }, + ); + + it.each([ + [ + STATUS_REPORT_ORDER_OPTIONS.jurisdictionOptions.retained, + `

    On ${statusReportFilingDateFormatted}, a status report was filed (Index no. 4). For cause, it is

    ORDERED that jurisdiction is retained by the undersigned.

    `, + ], + [ + STATUS_REPORT_ORDER_OPTIONS.jurisdictionOptions.restored, + `

    On ${statusReportFilingDateFormatted}, a status report was filed (Index no. 4). For cause, it is

    ORDERED that this case is restored to the general docket.

    `, + ], + ])( + 'should have correct output for jurisdiction %s', + async (input, output) => { + const result = await runAction(prepareStatusReportOrderAction, { + modules: { + presenter, + }, + state: { + caseDetail: {}, + form: { + jurisdiction: input, + }, + statusReportOrder: { + statusReportFilingDate, + statusReportIndex, + }, + }, + }); + + expect(result.state.form.richText).toBe(output); + }, + ); + + it.each([ + [ + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + `

    On ${statusReportFilingDateFormatted}, a status report was filed (Index no. 4). For cause, it is

    ORDERED that the parties shall file a further status report by ${dueDateFormatted}.

    `, + ], + [ + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.stipulatedDecision, + `

    On ${statusReportFilingDateFormatted}, a status report was filed (Index no. 4). For cause, it is

    ORDERED that the parties shall file a status report or proposed stipulated decision by ${dueDateFormatted}.

    `, + ], + ])('should have correct output for order type %s', async (input, output) => { + const result = await runAction(prepareStatusReportOrderAction, { + modules: { + presenter, + }, + state: { + caseDetail: {}, + form: { + dueDate, + orderType: input, + }, + statusReportOrder: { + statusReportFilingDate, + statusReportIndex, + }, + }, + }); + + expect(result.state.form.richText).toBe(output); + }); +}); diff --git a/web-client/src/presenter/actions/StatusReportOrder/prepareStatusReportOrderAction.ts b/web-client/src/presenter/actions/StatusReportOrder/prepareStatusReportOrderAction.ts new file mode 100644 index 00000000000..0e1000a1dd0 --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/prepareStatusReportOrderAction.ts @@ -0,0 +1,89 @@ +import { FORMATS } from '@shared/business/utilities/DateHandler'; +import { STATUS_REPORT_ORDER_OPTIONS } from '@shared/business/entities/EntityConstants'; +import { state } from '@web-client/presenter/app.cerebral'; + +export const prepareStatusReportOrderAction = ({ + applicationContext, + get, + store, +}: ActionProps) => { + const { + additionalOrderText, + dueDate, + issueOrder, + jurisdiction, + orderType, + strickenFromTrialSessions, + } = get(state.form); + const caseDetail = get(state.caseDetail); + const { statusReportFilingDate, statusReportIndex } = get( + state.statusReportOrder, + ); + + const isLeadCase = caseDetail.leadDocketNumber === caseDetail.docketNumber; + const hasOrderType = !!orderType; + const hasStrickenFromTrialSessions = !!strickenFromTrialSessions; + const hasJurisdiction = !!jurisdiction; + const hasAdditionalOrderText = !!additionalOrderText; + + const dueDateFormatted = applicationContext + .getUtilities() + .formatDateString(dueDate, FORMATS.MONTH_DAY_YEAR); + + const statusReportFilingDateFormatted = applicationContext + .getUtilities() + .formatDateString(statusReportFilingDate, FORMATS.MONTH_DAY_YEAR); + + const filedLine = + isLeadCase && + issueOrder === STATUS_REPORT_ORDER_OPTIONS.issueOrderOptions.allCasesInGroup + ? `

    On ${statusReportFilingDateFormatted}, a status report was filed (Lead case index no. ${statusReportIndex}). For cause, it is

    ` + : `

    On ${statusReportFilingDateFormatted}, a status report was filed (Index no. ${statusReportIndex}). For cause, it is

    `; + + const orderTypeLine = + hasOrderType && + orderType === STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport + ? `

    ORDERED that the parties shall file a further status report by ${dueDateFormatted}.

    ` + : hasOrderType + ? `

    ORDERED that the parties shall file a status report or proposed stipulated decision by ${dueDateFormatted}.

    ` + : ''; + + const strickenLine = hasStrickenFromTrialSessions + ? '

    ORDERED that this case is stricken from the trial session.

    ' + : ''; + + const jurisdictionLine = + hasJurisdiction && + jurisdiction === STATUS_REPORT_ORDER_OPTIONS.jurisdictionOptions.retained + ? '

    ORDERED that jurisdiction is retained by the undersigned.

    ' + : hasJurisdiction + ? '

    ORDERED that this case is restored to the general docket.

    ' + : ''; + + const additionalTextLine = hasAdditionalOrderText + ? `

    ORDERED that ${additionalOrderText}

    ` + : ''; + + const linesWithText = [ + orderTypeLine, + strickenLine, + jurisdictionLine, + additionalTextLine, + ].filter(line => line); + + const richText = + filedLine + + linesWithText + .map((line, index) => { + const isLastLine = index === linesWithText.length - 1; + return isLastLine ? line : line.replace('

    ', ' It is further

    '); + }) + .join(''); + + store.set(state.form.documentTitle, get(state.form.docketEntryDescription)); + store.set(state.form.eventCode, 'O'); + store.set(state.form.richText, richText); + store.set(state.form.statusReportFilingDate, statusReportFilingDate); + store.set(state.form.statusReportIndex, statusReportIndex); + store.set(state.form.parentMessageId, get(state.parentMessageId)); +}; diff --git a/web-client/src/presenter/actions/StatusReportOrder/setEditStatusReportOrderFormAction.test.ts b/web-client/src/presenter/actions/StatusReportOrder/setEditStatusReportOrderFormAction.test.ts new file mode 100644 index 00000000000..073374db4c4 --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/setEditStatusReportOrderFormAction.test.ts @@ -0,0 +1,42 @@ +import { STATUS_REPORT_ORDER_OPTIONS } from '@shared/business/entities/EntityConstants'; +import { runAction } from '@web-client/presenter/test.cerebral'; +import { setEditStatusReportOrderFormAction } from './setEditStatusReportOrderFormAction'; + +describe('setEditStatusReportOrderFormAction,', () => { + it('sets the form state from docketToEdit and create url based on case docket number and docketEntryIdToEdit', async () => { + const result = await runAction(setEditStatusReportOrderFormAction, { + props: { + caseDetail: { + docketNumber: '1', + }, + docketEntryIdToEdit: '107-19', + }, + state: { + documentToEdit: { + draftOrderState: { + additionalOrderText: 'Test', + docketEntryDescription: 'Order', + dueDate: '07/04/2024', + jurisdiction: + STATUS_REPORT_ORDER_OPTIONS.jurisdictionOptions.retained, + orderType: + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + strickenFromTrialSessions: 'true', + }, + }, + }, + }); + + expect(result.state.form).toEqual({ + additionalOrderText: 'Test', + docketEntryDescription: 'Order', + dueDate: '07/04/2024', + jurisdiction: STATUS_REPORT_ORDER_OPTIONS.jurisdictionOptions.retained, + orderType: STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + strickenFromTrialSessions: 'true', + }); + expect(result.output).toEqual({ + path: '/case-detail/1/documents/107-19/status-report-order-edit', + }); + }); +}); diff --git a/web-client/src/presenter/actions/StatusReportOrder/setEditStatusReportOrderFormAction.ts b/web-client/src/presenter/actions/StatusReportOrder/setEditStatusReportOrderFormAction.ts new file mode 100644 index 00000000000..191b0386576 --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/setEditStatusReportOrderFormAction.ts @@ -0,0 +1,30 @@ +import { state } from '@web-client/presenter/app.cerebral'; + +export const setEditStatusReportOrderFormAction = ({ + get, + props, + store, +}: ActionProps): { path: string } => { + const { caseDetail, docketEntryIdToEdit } = props; + + const documentToEdit = get(state.documentToEdit); + const pathUrl = props.parentMessageId + ? `/messages/${caseDetail.docketNumber}/message-detail/${props.parentMessageId}/${docketEntryIdToEdit}/status-report-order-edit` + : `/case-detail/${caseDetail.docketNumber}/documents/${docketEntryIdToEdit}/status-report-order-edit`; + + store.set(state.form, { + additionalOrderText: documentToEdit.draftOrderState.additionalOrderText, + docketEntryDescription: + documentToEdit.draftOrderState.docketEntryDescription, + dueDate: documentToEdit.draftOrderState.dueDate, + issueOrder: documentToEdit.draftOrderState.issueOrder, + jurisdiction: documentToEdit.draftOrderState.jurisdiction, + orderType: documentToEdit.draftOrderState.orderType, + strickenFromTrialSessions: + documentToEdit.draftOrderState.strickenFromTrialSessions, + }); + + return { + path: pathUrl, + }; +}; diff --git a/web-client/src/presenter/actions/StatusReportOrder/setStatusReportOrderFormAction.test.ts b/web-client/src/presenter/actions/StatusReportOrder/setStatusReportOrderFormAction.test.ts new file mode 100644 index 00000000000..50666e9e8eb --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/setStatusReportOrderFormAction.test.ts @@ -0,0 +1,37 @@ +import { runAction } from '@web-client/presenter/test.cerebral'; +import { setStatusReportOrderFormAction } from './setStatusReportOrderFormAction'; + +describe('setStatusReportOrderFormAction,', () => { + it('sets the statusReportOrderR state from props', async () => { + const result = await runAction(setStatusReportOrderFormAction, { + props: { + statusReportFilingDate: '2024-07-04', + statusReportIndex: 4, + }, + state: {}, + }); + + expect(result.state.statusReportOrder.statusReportFilingDate).toEqual( + '2024-07-04', + ); + expect(result.state.statusReportOrder.statusReportIndex).toEqual(4); + }); + + it('sets the statusReportOrder state from documentToEdit', async () => { + const result = await runAction(setStatusReportOrderFormAction, { + state: { + documentToEdit: { + draftOrderState: { + statusReportFilingDate: '2024-07-04', + statusReportIndex: 4, + }, + }, + }, + }); + + expect(result.state.statusReportOrder.statusReportFilingDate).toEqual( + '2024-07-04', + ); + expect(result.state.statusReportOrder.statusReportIndex).toEqual(4); + }); +}); diff --git a/web-client/src/presenter/actions/StatusReportOrder/setStatusReportOrderFormAction.ts b/web-client/src/presenter/actions/StatusReportOrder/setStatusReportOrderFormAction.ts new file mode 100644 index 00000000000..b1285531018 --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/setStatusReportOrderFormAction.ts @@ -0,0 +1,22 @@ +import { state } from '@web-client/presenter/app.cerebral'; + +export const setStatusReportOrderFormAction = ({ + get, + props, + store, +}: ActionProps) => { + const documentToEdit = get(state.documentToEdit); + const statusReportFilingDate = + props.statusReportFilingDate || + documentToEdit.draftOrderState.statusReportFilingDate; + + const statusReportIndex = + props.statusReportIndex || documentToEdit.draftOrderState.statusReportIndex; + + store.set( + state.statusReportOrder.statusReportFilingDate, + statusReportFilingDate, + ); + + store.set(state.statusReportOrder.statusReportIndex, statusReportIndex); +}; diff --git a/web-client/src/presenter/actions/StatusReportOrder/setStatusReportOrderPathAction.ts b/web-client/src/presenter/actions/StatusReportOrder/setStatusReportOrderPathAction.ts new file mode 100644 index 00000000000..d87be04c635 --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/setStatusReportOrderPathAction.ts @@ -0,0 +1,12 @@ +import qs from 'qs'; + +export const setStatusReportOrderPathAction = ({ props }: ActionProps) => { + const { statusReportFilingDate, statusReportIndex } = props; + + const queryString = qs.stringify({ + statusReportFilingDate, + statusReportIndex, + }); + + return { path: `${props.path}?${queryString}` }; +}; diff --git a/web-client/src/presenter/actions/StatusReportOrder/validateStatusReportOrderFormAction.test.ts b/web-client/src/presenter/actions/StatusReportOrder/validateStatusReportOrderFormAction.test.ts new file mode 100644 index 00000000000..ca9c7258cc1 --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/validateStatusReportOrderFormAction.test.ts @@ -0,0 +1,103 @@ +import { FORMATS, formatNow } from '@shared/business/utilities/DateHandler'; +import { STATUS_REPORT_ORDER_OPTIONS } from '@shared/business/entities/EntityConstants'; +import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; +import { presenter } from '@web-client/presenter/presenter-mock'; +import { runAction } from '@web-client/presenter/test.cerebral'; +import { validateStatusReportOrderFormAction } from './validateStatusReportOrderFormAction'; + +describe('validateStatusReportOrderFormAction,', () => { + const mockSuccessPath = jest.fn(); + const mockErrorPath = jest.fn(); + + presenter.providers.path = { + error: mockErrorPath, + success: mockSuccessPath, + }; + + presenter.providers.applicationContext = applicationContext; + + it('should validate successfully when no errors', async () => { + const today = formatNow(FORMATS.YYYYMMDD); + + await runAction(validateStatusReportOrderFormAction, { + modules: { + presenter, + }, + state: { + form: { + additionalOrderText: 'Test', + docketEntryDescription: 'Order', + dueDate: today, + issueOrder: + STATUS_REPORT_ORDER_OPTIONS.issueOrderOptions.justThisCase, + jurisdiction: + STATUS_REPORT_ORDER_OPTIONS.jurisdictionOptions.retained, + orderType: STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + strickenFromTrialSessions: 'true', + }, + }, + }); + + expect(mockSuccessPath).toHaveBeenCalled(); + }); + + it('should validate with error when missing docket entry description, invalid due date, and missing jurisdiction', async () => { + await runAction(validateStatusReportOrderFormAction, { + modules: { + presenter, + }, + state: { + form: { + additionalOrderText: 'Test', + dueDate: 'bb-bb-bbbb', + issueOrder: + STATUS_REPORT_ORDER_OPTIONS.issueOrderOptions.justThisCase, + orderType: STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + strickenFromTrialSessions: 'true', + }, + }, + }); + + expect(mockErrorPath).toHaveBeenCalledWith({ + alertError: { + title: 'Errors were found. Please correct your form and resubmit.', + }, + errors: { + docketEntryDescription: 'Enter a docket entry description', + dueDate: 'Enter a valid date', + jurisdiction: + 'Jurisdiction is required since case is stricken from the trial session', + }, + }); + }); + + it('should validate with error when due date is past', async () => { + await runAction(validateStatusReportOrderFormAction, { + modules: { + presenter, + }, + state: { + form: { + additionalOrderText: 'Test', + docketEntryDescription: 'Order', + dueDate: '2024-07-03', + issueOrder: + STATUS_REPORT_ORDER_OPTIONS.issueOrderOptions.justThisCase, + jurisdiction: + STATUS_REPORT_ORDER_OPTIONS.jurisdictionOptions.retained, + orderType: STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + strickenFromTrialSessions: 'true', + }, + }, + }); + + expect(mockErrorPath).toHaveBeenCalledWith({ + alertError: { + title: 'Errors were found. Please correct your form and resubmit.', + }, + errors: { + dueDate: 'Due date cannot be prior to today. Enter a valid date.', + }, + }); + }); +}); diff --git a/web-client/src/presenter/actions/StatusReportOrder/validateStatusReportOrderFormAction.ts b/web-client/src/presenter/actions/StatusReportOrder/validateStatusReportOrderFormAction.ts new file mode 100644 index 00000000000..36971087724 --- /dev/null +++ b/web-client/src/presenter/actions/StatusReportOrder/validateStatusReportOrderFormAction.ts @@ -0,0 +1,38 @@ +import { StatusReportOrderForm as StatusReportOrderForm } from '@shared/business/entities/StatusReportOrderForm'; +import { state } from '@web-client/presenter/app.cerebral'; + +export const validateStatusReportOrderFormAction = ({ + get, + path, +}: ActionProps) => { + const { + additionalOrderText, + docketEntryDescription, + dueDate, + issueOrder, + jurisdiction, + orderType, + strickenFromTrialSessions, + } = get(state.form); + + const errors = new StatusReportOrderForm({ + additionalOrderText, + docketEntryDescription, + dueDate, + issueOrder, + jurisdiction, + orderType, + strickenFromTrialSessions, + }).getFormattedValidationErrors(); + + if (!errors) { + return path.success(); + } else { + return path.error({ + alertError: { + title: 'Errors were found. Please correct your form and resubmit.', + }, + errors, + }); + } +}; diff --git a/web-client/src/presenter/actions/addAnotherIrsNoticeToFormAction.ts b/web-client/src/presenter/actions/addAnotherIrsNoticeToFormAction.ts index b7267248088..89535d4ca57 100644 --- a/web-client/src/presenter/actions/addAnotherIrsNoticeToFormAction.ts +++ b/web-client/src/presenter/actions/addAnotherIrsNoticeToFormAction.ts @@ -6,11 +6,14 @@ export const addAnotherIrsNoticeToFormAction = ({ get, store, }: ActionProps) => { - const data = get(state.irsNoticeUploadFormInfo); - if (data.length >= 5) return; - data.push({ + const irsNoticeUploadFormInfo = get(state.irsNoticeUploadFormInfo); + + const MAX_NUMBER_OF_IRS_NOTICE = 5; + if (irsNoticeUploadFormInfo.length >= MAX_NUMBER_OF_IRS_NOTICE) return; + + irsNoticeUploadFormInfo.push({ key: applicationContext.getUniqueId(), todayDate: applicationContext.getUtilities().formatNow(FORMATS.YYYYMMDD), }); - store.set(state.irsNoticeUploadFormInfo, data); + store.set(state.irsNoticeUploadFormInfo, irsNoticeUploadFormInfo); }; diff --git a/web-client/src/presenter/actions/cancelUploadsAction.test.ts b/web-client/src/presenter/actions/cancelUploadsAction.test.ts deleted file mode 100644 index fbfbf953d60..00000000000 --- a/web-client/src/presenter/actions/cancelUploadsAction.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { cancelUploadsAction } from './cancelUploadsAction'; -import { presenter } from '../presenter-mock'; -import { runAction } from '@web-client/presenter/test.cerebral'; - -describe('cancelUploadsAction', () => { - it('should change the window location', async () => { - const externalRoute = jest.fn(); - presenter.providers.router = { externalRoute }; - - await runAction(cancelUploadsAction, { - modules: { - presenter, - }, - }); - - expect(externalRoute.mock.calls[0][0]).toEqual('/'); - }); -}); diff --git a/web-client/src/presenter/actions/cancelUploadsAction.ts b/web-client/src/presenter/actions/cancelUploadsAction.ts deleted file mode 100644 index 46cb6b5991f..00000000000 --- a/web-client/src/presenter/actions/cancelUploadsAction.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Cancels all uploads in progress, returning to dashboard. - */ -export const cancelUploadsAction = ({ router }: ActionProps) => { - // go back to dashboard - router.externalRoute('/'); -}; diff --git a/web-client/src/presenter/actions/checkDocumentTypeAction.test.ts b/web-client/src/presenter/actions/checkDocumentTypeAction.test.ts new file mode 100644 index 00000000000..5ae4ff3b857 --- /dev/null +++ b/web-client/src/presenter/actions/checkDocumentTypeAction.test.ts @@ -0,0 +1,94 @@ +import { checkDocumentTypeAction } from '@web-client/presenter/actions/checkDocumentTypeAction'; +import { runAction } from '@web-client/presenter/test.cerebral'; + +describe('checkDocumentTypeAction', () => { + const pathDocumentTypeMiscellaneousStub = jest.fn(); + const pathDocumentTypeOrderStub = jest.fn(); + + const mockDocketNumber = '123-45'; + const mockDocketEntryId = '67890'; + const mockParentMessageId = 'abcdef'; + const propsBase = { + caseDetail: { docketNumber: mockDocketNumber }, + docketEntryIdToEdit: mockDocketEntryId, + }; + + const presenter = { + providers: { + path: { + documentTypeMiscellaneous: pathDocumentTypeMiscellaneousStub, + documentTypeOrder: pathDocumentTypeOrderStub, + }, + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should return the correct path for Miscellaneous document type without parentMessageId', async () => { + const props = { + ...propsBase, + documentType: 'Miscellaneous', + }; + + await runAction(checkDocumentTypeAction, { + modules: { presenter }, + props, + }); + + expect(pathDocumentTypeMiscellaneousStub).toHaveBeenCalledWith({ + path: `/case-detail/${mockDocketNumber}/edit-upload-court-issued/${mockDocketEntryId}`, + }); + }); + + it('should return the correct path for Miscellaneous document type with parentMessageId', async () => { + const props = { + ...propsBase, + documentType: 'Miscellaneous', + parentMessageId: mockParentMessageId, + }; + + await runAction(checkDocumentTypeAction, { + modules: { presenter }, + props, + }); + + expect(pathDocumentTypeMiscellaneousStub).toHaveBeenCalledWith({ + path: `/case-detail/${mockDocketNumber}/edit-upload-court-issued/${mockDocketEntryId}/${mockParentMessageId}`, + }); + }); + + it('should return the correct path for Order document type without parentMessageId', async () => { + const props = { + ...propsBase, + documentType: 'Order', + }; + + await runAction(checkDocumentTypeAction, { + modules: { presenter }, + props, + }); + + expect(pathDocumentTypeOrderStub).toHaveBeenCalledWith({ + path: `/case-detail/${mockDocketNumber}/edit-order/${mockDocketEntryId}`, + }); + }); + + it('should return the correct path for Order document type with parentMessageId', async () => { + const props = { + ...propsBase, + documentType: 'Order', + parentMessageId: mockParentMessageId, + }; + + await runAction(checkDocumentTypeAction, { + modules: { presenter }, + props, + }); + + expect(pathDocumentTypeOrderStub).toHaveBeenCalledWith({ + path: `/case-detail/${mockDocketNumber}/edit-order/${mockDocketEntryId}/${mockParentMessageId}`, + }); + }); +}); diff --git a/web-client/src/presenter/actions/checkDocumentTypeAction.ts b/web-client/src/presenter/actions/checkDocumentTypeAction.ts new file mode 100644 index 00000000000..f911f2a97a4 --- /dev/null +++ b/web-client/src/presenter/actions/checkDocumentTypeAction.ts @@ -0,0 +1,15 @@ +export const checkDocumentTypeAction = ({ path, props }: ActionProps) => { + const parentMessageId = props.parentMessageId + ? `/${props.parentMessageId}` + : ''; + + if (props.documentType === 'Miscellaneous') { + return path.documentTypeMiscellaneous({ + path: `/case-detail/${props.caseDetail.docketNumber}/edit-upload-court-issued/${props.docketEntryIdToEdit}${parentMessageId}`, + }); + } + + return path.documentTypeOrder({ + path: `/case-detail/${props.caseDetail.docketNumber}/edit-order/${props.docketEntryIdToEdit}${parentMessageId}`, + }); +}; diff --git a/web-client/src/presenter/actions/formatPetitionAction.test.ts b/web-client/src/presenter/actions/formatPetitionAction.test.ts index 26491da04bf..3da96571ddd 100644 --- a/web-client/src/presenter/actions/formatPetitionAction.test.ts +++ b/web-client/src/presenter/actions/formatPetitionAction.test.ts @@ -6,21 +6,22 @@ import { runAction } from '@web-client/presenter/test.cerebral'; describe('formatPetitionAction', () => { const PROPS = { - step1Data: { + createPetitionStep1Data: { contactPrimary: {}, }, - step2Data: {}, - step3Data: { + createPetitionStep2Data: {}, + createPetitionStep3Data: { caseType: CASE_TYPES_MAP.cdp, irsNotices: [ { + caseType: CASE_TYPES_MAP.cdp, noticeIssuedDate: 'TEST_noticeIssuedDate', taxYear: 'TEST_taxYear', }, ], }, - step4Data: {}, - step5Data: {}, + createPetitionStep4Data: {}, + createPetitionStep5Data: {}, }; const TEST_CASE_CAPTION = 'TEST_CASE_CAPTION'; @@ -52,7 +53,6 @@ describe('formatPetitionAction', () => { expect(results.state.petitionFormatted).toEqual({ caseCaption: 'TEST_CASE_CAPTION', caseCaptionExtension: '', - caseDescription: 'Collection (Lien/Levy)', caseTitle: 'TEST_CASE_CAPTION', caseType: CASE_TYPES_MAP.cdp, contactPrimary: { @@ -60,12 +60,13 @@ describe('formatPetitionAction', () => { }, irsNotices: [ { + caseType: CASE_TYPES_MAP.cdp, noticeIssuedDate: 'TEST_noticeIssuedDate', + originalCaseType: CASE_TYPES_MAP.cdp, taxYear: 'TEST_taxYear', }, ], - noticeIssuedDate: 'TEST_noticeIssuedDate', - taxYear: 'TEST_taxYear', + originalCaseType: CASE_TYPES_MAP.cdp, }); }); @@ -87,7 +88,6 @@ describe('formatPetitionAction', () => { expect(results.state.petitionFormatted).toEqual({ caseCaption: '', caseCaptionExtension: '', - caseDescription: 'Collection (Lien/Levy)', caseTitle: '', caseType: CASE_TYPES_MAP.cdp, contactPrimary: { @@ -95,22 +95,24 @@ describe('formatPetitionAction', () => { }, irsNotices: [ { + caseType: CASE_TYPES_MAP.cdp, noticeIssuedDate: 'TEST_noticeIssuedDate', + originalCaseType: CASE_TYPES_MAP.cdp, taxYear: 'TEST_taxYear', }, ], - noticeIssuedDate: 'TEST_noticeIssuedDate', - taxYear: 'TEST_taxYear', + originalCaseType: CASE_TYPES_MAP.cdp, }); }); it('should update caseType if caseType is a disclosure', async () => { const propsWithDisclosure = { ...PROPS, - step3Data: { + createPetitionStep3Data: { caseType: 'Disclosure1', irsNotices: [ { + caseType: 'Disclosure1', noticeIssuedDate: 'TEST_noticeIssuedDate', taxYear: 'TEST_taxYear', }, @@ -137,19 +139,20 @@ describe('formatPetitionAction', () => { }, irsNotices: [ { + caseType: CASE_TYPES_MAP.disclosure, noticeIssuedDate: 'TEST_noticeIssuedDate', + originalCaseType: 'Disclosure1', taxYear: 'TEST_taxYear', }, ], - noticeIssuedDate: 'TEST_noticeIssuedDate', - taxYear: 'TEST_taxYear', + originalCaseType: 'Disclosure1', }); }); it('should set noticeIssuedDate and taxYear as undefined if there is no irsNotice', async () => { const propsWithoutIrsNotice = { ...PROPS, - step3Data: { + createPetitionStep3Data: { caseType: CASE_TYPES_MAP.deficiency, irsNotices: [], }, @@ -167,15 +170,13 @@ describe('formatPetitionAction', () => { expect(results.state.petitionFormatted).toEqual({ caseCaption: 'TEST_CASE_CAPTION', caseCaptionExtension: '', - caseDescription: 'Deficiency', caseTitle: 'TEST_CASE_CAPTION', caseType: CASE_TYPES_MAP.deficiency, contactPrimary: { email: 'TEST_EMAIL', }, irsNotices: [], - noticeIssuedDate: undefined, - taxYear: undefined, + originalCaseType: CASE_TYPES_MAP.deficiency, }); }); }); diff --git a/web-client/src/presenter/actions/formatPetitionAction.ts b/web-client/src/presenter/actions/formatPetitionAction.ts index 6da456f301b..d71ab160909 100644 --- a/web-client/src/presenter/actions/formatPetitionAction.ts +++ b/web-client/src/presenter/actions/formatPetitionAction.ts @@ -1,7 +1,4 @@ -import { - CASE_TYPE_DESCRIPTIONS_WITHOUT_IRS_NOTICE, - CASE_TYPE_DESCRIPTIONS_WITH_IRS_NOTICE, -} from '@shared/business/entities/EntityConstants'; +import { CASE_TYPES_MAP } from '@shared/business/entities/EntityConstants'; import { getCaseCaptionMeta } from '@shared/business/utilities/getCaseCaptionMeta'; import { state } from '@web-client/presenter/app.cerebral'; @@ -11,11 +8,11 @@ export const formatPetitionAction = ({ store, }: ActionProps) => { const petitionInfo = { - ...props.step1Data, - ...props.step2Data, - ...props.step3Data, - ...props.step4Data, - ...props.step5Data, + ...props.createPetitionStep1Data, + ...props.createPetitionStep2Data, + ...props.createPetitionStep3Data, + ...props.createPetitionStep4Data, + ...props.createPetitionStep5Data, }; const caseCaption = @@ -27,37 +24,35 @@ export const formatPetitionAction = ({ caseCaption, }); - const caseDescription = petitionInfo.hasIrsNotice - ? CASE_TYPE_DESCRIPTIONS_WITH_IRS_NOTICE[petitionInfo.caseType] - : CASE_TYPE_DESCRIPTIONS_WITHOUT_IRS_NOTICE[petitionInfo.caseType]; - - const { CASE_TYPES_MAP } = applicationContext.getConstants(); - const disclosureCaseTypes = ['Disclosure1', 'Disclosure2']; - - if (disclosureCaseTypes.includes(petitionInfo.caseType)) { - petitionInfo.caseType = CASE_TYPES_MAP.disclosure; - } + petitionInfo.originalCaseType = petitionInfo.caseType; + petitionInfo.caseType = formatCaseType(petitionInfo.caseType); const { contactPrimary, irsNotices } = petitionInfo; const user = applicationContext.getCurrentUser(); contactPrimary.email = user.email; - let noticeIssuedDate; - let taxYear; - - if (irsNotices[0]) { - ({ noticeIssuedDate, taxYear } = irsNotices[0]); - } + const irsNoticesWithCaseTypes = irsNotices.map(irsNotice => { + return { + ...irsNotice, + caseType: formatCaseType(irsNotice.caseType), + originalCaseType: irsNotice.caseType, + }; + }); store.set(state.petitionFormatted, { ...petitionInfo, caseCaption, caseCaptionExtension, - caseDescription, caseTitle, contactPrimary, - noticeIssuedDate, - taxYear, + irsNotices: irsNoticesWithCaseTypes, }); }; + +function formatCaseType(caseType: string) { + if (caseType === 'Disclosure1' || caseType === 'Disclosure2') { + return CASE_TYPES_MAP.disclosure; + } + return caseType; +} diff --git a/web-client/src/presenter/actions/formatPetitionFactsAndReasonsAction.test.ts b/web-client/src/presenter/actions/formatPetitionFactsAndReasonsAction.test.ts new file mode 100644 index 00000000000..a9267bfeb10 --- /dev/null +++ b/web-client/src/presenter/actions/formatPetitionFactsAndReasonsAction.test.ts @@ -0,0 +1,35 @@ +import { formatPetitionFactsAndReasonsAction } from '@web-client/presenter/actions/formatPetitionFactsAndReasonsAction'; +import { runAction } from '@web-client/presenter/test.cerebral'; + +describe('formatPetitionFactsAndReasonsAction', () => { + it('should filter empty reasons and facts', async () => { + const results = await runAction(formatPetitionFactsAndReasonsAction, { + state: { + form: { + petitionFacts: ['fact1', '', 'fact2', 'fact3'], + petitionReasons: ['reason1', '', 'reason2', ''], + }, + }, + }); + + const { petitionFacts, petitionReasons } = results.state.form; + + expect(petitionFacts).toEqual(['fact1', 'fact2', 'fact3']); + expect(petitionReasons).toEqual(['reason1', 'reason2']); + }); + + it('should default reasons and facts when no values are present', async () => { + const results = await runAction(formatPetitionFactsAndReasonsAction, { + state: { + form: { + petitionFacts: ['', '', '', ''], + petitionReasons: ['', ''], + }, + }, + }); + + const { petitionFacts, petitionReasons } = results.state.form; + expect(petitionFacts).toEqual(['']); + expect(petitionReasons).toEqual(['']); + }); +}); diff --git a/web-client/src/presenter/actions/formatPetitionFactsAndReasonsAction.ts b/web-client/src/presenter/actions/formatPetitionFactsAndReasonsAction.ts new file mode 100644 index 00000000000..3c1411c8953 --- /dev/null +++ b/web-client/src/presenter/actions/formatPetitionFactsAndReasonsAction.ts @@ -0,0 +1,19 @@ +import { state } from '@web-client/presenter/app.cerebral'; + +export const formatPetitionFactsAndReasonsAction = ({ + get, + store, +}: ActionProps) => { + const { petitionFacts, petitionReasons } = get(state.form); + + const filteredPetitionReasons = filterAndDefault(petitionReasons); + const filteredPetitionFacts = filterAndDefault(petitionFacts); + + store.set(state.form.petitionReasons, filteredPetitionReasons); + store.set(state.form.petitionFacts, filteredPetitionFacts); +}; + +function filterAndDefault(arr) { + const filteredArr = arr.filter(r => !!r.trim()); + return filteredArr.length > 0 ? filteredArr : ['']; +} diff --git a/web-client/src/presenter/actions/generatePetitionPdfAction.test.ts b/web-client/src/presenter/actions/generatePetitionPdfAction.test.ts index 370f8865bbb..3d3c37ce2b9 100644 --- a/web-client/src/presenter/actions/generatePetitionPdfAction.test.ts +++ b/web-client/src/presenter/actions/generatePetitionPdfAction.test.ts @@ -1,27 +1,20 @@ -import { FORMATS } from '@shared/business/utilities/DateHandler'; -import { PETITION_TYPES } from '@web-client/presenter/actions/setupPetitionStateAction'; +import { PETITION_TYPES } from '@shared/business/entities/EntityConstants'; import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; import { generatePetitionPdfAction } from '@web-client/presenter/actions/generatePetitionPdfAction'; import { presenter } from '../presenter-mock'; import { runAction } from '@web-client/presenter/test.cerebral'; describe('generatePetitionPdfAction', () => { - beforeAll(() => { + beforeEach(() => { applicationContext .getUseCases() - .generatePetitionPdfInteractor.mockImplementation( - () => - new Promise(resolve => - resolve({ - fileId: 'TEST_FILE_ID', - url: 'TEST_URL', - }), - ), - ); - - applicationContext - .getUtilities() - .formatDateString.mockImplementation(() => 'RESULTS_formatDateString'); + .generatePetitionPdfInteractor.mockImplementation(() => { + return new Promise(resolve => + resolve({ + fileId: 'TEST_FILE_ID', + }), + ); + }); presenter.providers.applicationContext = applicationContext; }); @@ -33,18 +26,34 @@ describe('generatePetitionPdfAction', () => { }, state: { petitionFormatted: { - petitionType: 'NOT AUTO GENERATED', + petitionType: PETITION_TYPES.userUploaded, }, }, }); - const generatePetitionPdfInteractorCalls = applicationContext.getUseCases().generatePetitionPdfInteractor.mock.calls; + expect(generatePetitionPdfInteractorCalls.length).toEqual(0); expect(results.output).toEqual(undefined); }); + it('should throw an error if data is invalid', async () => { + await expect( + runAction(generatePetitionPdfAction, { + modules: { + presenter, + }, + state: { + petitionFormatted: { + petitionType: PETITION_TYPES.autoGenerated, + testData: 'test', + }, + }, + }), + ).rejects.toThrow('Petition PDF generation failed due to invalid data.'); + }); + it('should generate the petition and save id in state when petition is auto generated', async () => { const results = await runAction(generatePetitionPdfAction, { modules: { @@ -52,29 +61,87 @@ describe('generatePetitionPdfAction', () => { }, state: { petitionFormatted: { - noticeIssuedDate: 'TEST_noticeIssuedDate', + caseCaptionExtension: 'TEST_caseCaptionExtension', + caseTitle: 'TEST_caseTitle', + contactPrimary: {}, + hasIrsNotice: true, + hasUploadedIrsNotice: true, + originalCaseType: 'Deficiency', + petitionFacts: ['TEST_petitionFacts'], petitionFileId: undefined, petitionProp: 'TEST_PROP', + petitionReasons: ['TEST_petitionReasons'], petitionType: PETITION_TYPES.autoGenerated, + preferredTrialCity: 'TEST_preferredTrialCity', + procedureType: 'Regular', }, }, }); const generatePetitionPdfInteractorCalls = applicationContext.getUseCases().generatePetitionPdfInteractor.mock.calls; + expect(generatePetitionPdfInteractorCalls.length).toEqual(1); expect(generatePetitionPdfInteractorCalls[0][1]).toEqual({ - noticeIssuedDate: 'RESULTS_formatDateString', - petitionFileId: undefined, - petitionProp: 'TEST_PROP', - petitionType: 'autoGenerated', + caseCaptionExtension: 'TEST_caseCaptionExtension', + caseTitle: 'TEST_caseTitle', + contactPrimary: {}, + entityName: 'GeneratePetitionPdf', + hasIrsNotice: true, + hasUploadedIrsNotice: true, + originalCaseType: 'Deficiency', + petitionFacts: ['TEST_petitionFacts'], + petitionReasons: ['TEST_petitionReasons'], + preferredTrialCity: 'TEST_preferredTrialCity', + procedureType: 'Regular', }); - const formatDateStringCalls = - applicationContext.getUtilities().formatDateString.mock.calls; - expect(formatDateStringCalls.length).toEqual(1); - expect(formatDateStringCalls[0][0]).toEqual('TEST_noticeIssuedDate'); - expect(formatDateStringCalls[0][1]).toEqual(FORMATS.MMDDYY); + expect(results.state.petitionFormatted.petitionFileId).toEqual( + 'TEST_FILE_ID', + ); + }); + + it('should generate the petition for disclosure case types', async () => { + const results = await runAction(generatePetitionPdfAction, { + modules: { + presenter, + }, + state: { + petitionFormatted: { + caseCaptionExtension: 'TEST_caseCaptionExtension', + caseTitle: 'TEST_caseTitle', + contactPrimary: {}, + hasIrsNotice: true, + hasUploadedIrsNotice: true, + originalCaseType: 'Disclosure1', + petitionFacts: ['TEST_petitionFacts'], + petitionFileId: undefined, + petitionProp: 'TEST_PROP', + petitionReasons: ['TEST_petitionReasons'], + petitionType: PETITION_TYPES.autoGenerated, + preferredTrialCity: 'TEST_preferredTrialCity', + procedureType: 'Regular', + }, + }, + }); + + const generatePetitionPdfInteractorCalls = + applicationContext.getUseCases().generatePetitionPdfInteractor.mock.calls; + + expect(generatePetitionPdfInteractorCalls.length).toEqual(1); + expect(generatePetitionPdfInteractorCalls[0][1]).toEqual({ + caseCaptionExtension: 'TEST_caseCaptionExtension', + caseTitle: 'TEST_caseTitle', + contactPrimary: {}, + entityName: 'GeneratePetitionPdf', + hasIrsNotice: true, + hasUploadedIrsNotice: true, + originalCaseType: 'Disclosure1', + petitionFacts: ['TEST_petitionFacts'], + petitionReasons: ['TEST_petitionReasons'], + preferredTrialCity: 'TEST_preferredTrialCity', + procedureType: 'Regular', + }); expect(results.state.petitionFormatted.petitionFileId).toEqual( 'TEST_FILE_ID', diff --git a/web-client/src/presenter/actions/generatePetitionPdfAction.ts b/web-client/src/presenter/actions/generatePetitionPdfAction.ts index 264d038abe9..da19e716799 100644 --- a/web-client/src/presenter/actions/generatePetitionPdfAction.ts +++ b/web-client/src/presenter/actions/generatePetitionPdfAction.ts @@ -1,5 +1,5 @@ -import { FORMATS } from '@shared/business/utilities/DateHandler'; -import { PETITION_TYPES } from '@web-client/presenter/actions/setupPetitionStateAction'; +import { GeneratePetitionPdf } from '@shared/business/entities/startCase/GeneratePetitionPdf'; +import { PETITION_TYPES } from '@shared/business/entities/EntityConstants'; import { state } from '@web-client/presenter/app.cerebral'; export const generatePetitionPdfAction = async ({ @@ -11,17 +11,21 @@ export const generatePetitionPdfAction = async ({ const { petitionType } = petition; - if (petitionType === PETITION_TYPES.autoGenerated) { - const { fileId } = await applicationContext - .getUseCases() - .generatePetitionPdfInteractor(applicationContext, { - ...petition, - // do this in interactor - noticeIssuedDate: applicationContext - .getUtilities() - .formatDateString(petition.noticeIssuedDate || '', FORMATS.MMDDYY), - }); + if (petitionType !== PETITION_TYPES.autoGenerated) return; - store.set(state.petitionFormatted.petitionFileId, fileId); + const generatePetitionPdfEntity = new GeneratePetitionPdf(petition); + const errors = generatePetitionPdfEntity.getFormattedValidationErrors(); + if (errors) { + throw Error( + `Petition PDF generation failed due to invalid data. ${JSON.stringify(errors)}`, + ); } + + const generatePetitionPdfData = generatePetitionPdfEntity.toRawObject(); + + const { fileId } = await applicationContext + .getUseCases() + .generatePetitionPdfInteractor(applicationContext, generatePetitionPdfData); + + store.set(state.petitionFormatted.petitionFileId, fileId); }; diff --git a/web-client/src/presenter/actions/generatePetitionPreviewPdfUrlAction.test.ts b/web-client/src/presenter/actions/generatePetitionPreviewPdfUrlAction.test.ts index e3ee7768153..04349ee66e4 100644 --- a/web-client/src/presenter/actions/generatePetitionPreviewPdfUrlAction.test.ts +++ b/web-client/src/presenter/actions/generatePetitionPreviewPdfUrlAction.test.ts @@ -55,11 +55,15 @@ describe('generatePetitionPreviewPdfUrlAction', () => { corporateDisclosureFile: b64File, hasIrsNotice: true, irsNotices: [{ file: b64File }], + petitionFile: b64File, stinFile: b64File, }, }, }); + expect(result.state.petitionFormatted.petitionFileUrl).toEqual( + 'fakePdfUri', + ); expect(result.state.petitionFormatted.stinFileUrl).toEqual('fakePdfUri'); expect(result.state.petitionFormatted.corporateDisclosureFileUrl).toEqual( 'fakePdfUri', diff --git a/web-client/src/presenter/actions/generatePetitionPreviewPdfUrlAction.ts b/web-client/src/presenter/actions/generatePetitionPreviewPdfUrlAction.ts index 332a83069d0..adc27194377 100644 --- a/web-client/src/presenter/actions/generatePetitionPreviewPdfUrlAction.ts +++ b/web-client/src/presenter/actions/generatePetitionPreviewPdfUrlAction.ts @@ -6,41 +6,29 @@ export const generatePetitionPreviewPdfUrlAction = async ({ store, }: ActionProps) => { const petitionFormatted = get(state.petitionFormatted); - if (petitionFormatted.corporateDisclosureFile) { - const url = await generatePdfUrl( - petitionFormatted.corporateDisclosureFile, - applicationContext, - ); - store.set(state.petitionFormatted.corporateDisclosureFileUrl, url); - } - if (petitionFormatted.stinFile) { - const url = await generatePdfUrl( - petitionFormatted.stinFile, - applicationContext, - ); - store.set(state.petitionFormatted.stinFileUrl, url); - } + const KEYS = ['corporateDisclosureFile', 'stinFile', 'petitionFile']; + for (let index = 0; index < KEYS.length; index++) { + const key = KEYS[index]; + if (!petitionFormatted[key]) continue; - if (petitionFormatted.petitionFile) { const url = await generatePdfUrl( - petitionFormatted.petitionFile, + petitionFormatted[key], applicationContext, ); - store.set(state.petitionFormatted.petitionFileUrl, url); - } - if (petitionFormatted.hasIrsNotice && petitionFormatted.irsNotices?.length) { - petitionFormatted.irsNotices.forEach(async (irsNotice, index) => { - if (irsNotice.file) { - const url = await generatePdfUrl(irsNotice.file, applicationContext); - store.set( - state.petitionFormatted.irsNotices![index].irsNoticeFileUrl, - url, - ); - } - }); + const stateKey = `${key}Url`; + store.set(state.petitionFormatted[stateKey], url); } + + if (!petitionFormatted.hasIrsNotice || !petitionFormatted.irsNotices?.length) + return; + + petitionFormatted.irsNotices.forEach(async (irsNotice, index) => { + if (!irsNotice.file) return; + const url = await generatePdfUrl(irsNotice.file, applicationContext); + store.set(state.petitionFormatted.irsNotices![index].irsNoticeFileUrl, url); + }); }; function generatePdfUrl(file, applicationContext) { diff --git a/web-client/src/presenter/actions/getStep1DataAction.test.ts b/web-client/src/presenter/actions/getCreatePetitionStep1DataAction.test.ts similarity index 87% rename from web-client/src/presenter/actions/getStep1DataAction.test.ts rename to web-client/src/presenter/actions/getCreatePetitionStep1DataAction.test.ts index 7b6d4728e8f..82663538546 100644 --- a/web-client/src/presenter/actions/getStep1DataAction.test.ts +++ b/web-client/src/presenter/actions/getCreatePetitionStep1DataAction.test.ts @@ -1,8 +1,8 @@ import { CONTACT_TYPES } from '@shared/business/entities/EntityConstants'; -import { getStep1DataAction } from '@web-client/presenter/actions/getStep1DataAction'; +import { getCreatePetitionStep1DataAction } from '@web-client/presenter/actions/getCreatePetitionStep1DataAction'; import { runAction } from '@web-client/presenter/test.cerebral'; -describe('getStep1DataAction', () => { +describe('getCreatePetitionStep1DataAction', () => { const STATE_FORM = { businessType: 'TEST_businessType', corporateDisclosureFile: 'TEST_corporateDisclosureFile', @@ -19,7 +19,7 @@ describe('getStep1DataAction', () => { }; it('should fetch step 2 related data from state.form when useSameAsPrimary is true', async () => { - const results = await runAction(getStep1DataAction, { + const results = await runAction(getCreatePetitionStep1DataAction, { state: { form: { ...STATE_FORM, @@ -43,8 +43,8 @@ describe('getStep1DataAction', () => { }, }); - const { step1Data } = results.output; - expect(step1Data).toEqual({ + const { createPetitionStep1Data } = results.output; + expect(createPetitionStep1Data).toEqual({ businessType: 'TEST_businessType', contactPrimary: { address1: 'TEST_PRIMARY_address1', @@ -87,7 +87,7 @@ describe('getStep1DataAction', () => { }); it('should fetch step 2 related data from state.form when useSameAsPrimary is false', async () => { - const results = await runAction(getStep1DataAction, { + const results = await runAction(getCreatePetitionStep1DataAction, { state: { form: { ...STATE_FORM, @@ -110,8 +110,8 @@ describe('getStep1DataAction', () => { }, }); - const { step1Data } = results.output; - expect(step1Data).toEqual({ + const { createPetitionStep1Data } = results.output; + expect(createPetitionStep1Data).toEqual({ businessType: 'TEST_businessType', contactPrimary: { address2: 'TEST_PRIMARY_address2', @@ -145,7 +145,7 @@ describe('getStep1DataAction', () => { }); it('should set contact type for secondary contact when a secondary contact is present', async () => { - const results = await runAction(getStep1DataAction, { + const results = await runAction(getCreatePetitionStep1DataAction, { state: { form: { ...STATE_FORM, @@ -167,14 +167,14 @@ describe('getStep1DataAction', () => { }, }, }); - const { step1Data } = results.output; - expect(step1Data.contactSecondary.contactType).toEqual( + const { createPetitionStep1Data } = results.output; + expect(createPetitionStep1Data.contactSecondary.contactType).toEqual( CONTACT_TYPES.secondary, ); }); it('should not set contact type for secondary contact when a secondary contact is not present', async () => { - const results = await runAction(getStep1DataAction, { + const results = await runAction(getCreatePetitionStep1DataAction, { state: { form: { ...STATE_FORM, @@ -186,7 +186,7 @@ describe('getStep1DataAction', () => { }, }, }); - const { step1Data } = results.output; - expect(step1Data.contactSecondary).toBeUndefined(); + const { createPetitionStep1Data } = results.output; + expect(createPetitionStep1Data.contactSecondary).toBeUndefined(); }); }); diff --git a/web-client/src/presenter/actions/getStep1DataAction.ts b/web-client/src/presenter/actions/getCreatePetitionStep1DataAction.ts similarity index 91% rename from web-client/src/presenter/actions/getStep1DataAction.ts rename to web-client/src/presenter/actions/getCreatePetitionStep1DataAction.ts index e11775eedd8..9e9af25988d 100644 --- a/web-client/src/presenter/actions/getStep1DataAction.ts +++ b/web-client/src/presenter/actions/getCreatePetitionStep1DataAction.ts @@ -2,7 +2,7 @@ import { CONTACT_TYPES } from '@shared/business/entities/EntityConstants'; import { pick } from 'lodash'; import { state } from '@web-client/presenter/app.cerebral'; -export const getStep1DataAction = ({ get }: ActionProps) => { +export const getCreatePetitionStep1DataAction = ({ get }: ActionProps) => { const { businessType, contactPrimary, @@ -28,7 +28,7 @@ export const getStep1DataAction = ({ get }: ActionProps) => { } : contactSecondary; - const step1Data = { + const createPetitionStep1Data = { businessType, contactPrimary: { ...contactPrimary, @@ -64,6 +64,6 @@ export const getStep1DataAction = ({ get }: ActionProps) => { }; return { - step1Data, + createPetitionStep1Data, }; }; diff --git a/web-client/src/presenter/actions/getStep2DataAction.test.ts b/web-client/src/presenter/actions/getCreatePetitionStep2DataAction.test.ts similarity index 73% rename from web-client/src/presenter/actions/getStep2DataAction.test.ts rename to web-client/src/presenter/actions/getCreatePetitionStep2DataAction.test.ts index 774e7101030..52f51abd9ee 100644 --- a/web-client/src/presenter/actions/getStep2DataAction.test.ts +++ b/web-client/src/presenter/actions/getCreatePetitionStep2DataAction.test.ts @@ -1,9 +1,9 @@ -import { getStep2DataAction } from '@web-client/presenter/actions/getStep2DataAction'; +import { getCreatePetitionStep2DataAction } from '@web-client/presenter/actions/getCreatePetitionStep2DataAction'; import { runAction } from '@web-client/presenter/test.cerebral'; -describe('getStep2DataAction', () => { +describe('getCreatePetitionStep2DataAction', () => { it('should fetch Petition Information related data from state.form', async () => { - const results = await runAction(getStep2DataAction, { + const results = await runAction(getCreatePetitionStep2DataAction, { state: { form: { petitionFacts: 'TEST_petitionFacts', @@ -20,8 +20,8 @@ describe('getStep2DataAction', () => { }, }); - const { step2Data } = results.output; - expect(step2Data).toEqual({ + const { createPetitionStep2Data } = results.output; + expect(createPetitionStep2Data).toEqual({ petitionFacts: 'TEST_petitionFacts', petitionFile: 'TEST_petitionFile', petitionFileSize: 'TEST_petitionFileSize', diff --git a/web-client/src/presenter/actions/getStep2DataAction.ts b/web-client/src/presenter/actions/getCreatePetitionStep2DataAction.ts similarity index 73% rename from web-client/src/presenter/actions/getStep2DataAction.ts rename to web-client/src/presenter/actions/getCreatePetitionStep2DataAction.ts index 2cf71534917..df7622ce0d5 100644 --- a/web-client/src/presenter/actions/getStep2DataAction.ts +++ b/web-client/src/presenter/actions/getCreatePetitionStep2DataAction.ts @@ -1,6 +1,6 @@ import { state } from '@web-client/presenter/app.cerebral'; -export const getStep2DataAction = ({ get }: ActionProps) => { +export const getCreatePetitionStep2DataAction = ({ get }: ActionProps) => { const { petitionFacts, petitionFile, @@ -10,7 +10,7 @@ export const getStep2DataAction = ({ get }: ActionProps) => { petitionType, } = get(state.form); - const step2Data = { + const createPetitionStep2Data = { petitionFacts, petitionFile, petitionFileSize, @@ -20,6 +20,6 @@ export const getStep2DataAction = ({ get }: ActionProps) => { }; return { - step2Data, + createPetitionStep2Data, }; }; diff --git a/web-client/src/presenter/actions/getStep3DataAction.test.ts b/web-client/src/presenter/actions/getCreatePetitionStep3DataAction.test.ts similarity index 78% rename from web-client/src/presenter/actions/getStep3DataAction.test.ts rename to web-client/src/presenter/actions/getCreatePetitionStep3DataAction.test.ts index d1b957000e5..165dc6abd4b 100644 --- a/web-client/src/presenter/actions/getStep3DataAction.test.ts +++ b/web-client/src/presenter/actions/getCreatePetitionStep3DataAction.test.ts @@ -1,9 +1,9 @@ -import { getStep3DataAction } from '@web-client/presenter/actions/getStep3DataAction'; +import { getCreatePetitionStep3DataAction } from '@web-client/presenter/actions/getCreatePetitionStep3DataAction'; import { runAction } from '@web-client/presenter/test.cerebral'; -describe('getStep3DataAction', () => { +describe('getCreatePetitionStep3DataAction', () => { it('should fetch step 3 related data from state.form when user has IRS notice', async () => { - const results = await runAction(getStep3DataAction, { + const results = await runAction(getCreatePetitionStep3DataAction, { state: { form: { caseType: 'ROOT_LEVEL_CASE_TYPE', @@ -24,8 +24,8 @@ describe('getStep3DataAction', () => { }, }); - const { step3Data } = results.output; - expect(step3Data).toEqual({ + const { createPetitionStep3Data } = results.output; + expect(createPetitionStep3Data).toEqual({ caseType: 'IRS_NOTICE_CASE_TYPE', hasIrsNotice: 'TEST_hasIrsNotice', hasUploadedIrsNotice: true, @@ -45,7 +45,7 @@ describe('getStep3DataAction', () => { }); it('should fetch step 3 related data from state.form when user does not have IRS notice', async () => { - const results = await runAction(getStep3DataAction, { + const results = await runAction(getCreatePetitionStep3DataAction, { state: { form: { caseType: 'ROOT_LEVEL_CASE_TYPE', @@ -58,8 +58,8 @@ describe('getStep3DataAction', () => { }, }); - const { step3Data } = results.output; - expect(step3Data).toEqual({ + const { createPetitionStep3Data } = results.output; + expect(createPetitionStep3Data).toEqual({ caseType: 'ROOT_LEVEL_CASE_TYPE', hasIrsNotice: false, hasUploadedIrsNotice: false, diff --git a/web-client/src/presenter/actions/getStep3DataAction.ts b/web-client/src/presenter/actions/getCreatePetitionStep3DataAction.ts similarity index 88% rename from web-client/src/presenter/actions/getStep3DataAction.ts rename to web-client/src/presenter/actions/getCreatePetitionStep3DataAction.ts index 2b919f2acdb..0a20664d222 100644 --- a/web-client/src/presenter/actions/getStep3DataAction.ts +++ b/web-client/src/presenter/actions/getCreatePetitionStep3DataAction.ts @@ -4,7 +4,7 @@ import { } from '@shared/business/utilities/DateHandler'; import { state } from '@web-client/presenter/app.cerebral'; -export const getStep3DataAction = ({ +export const getCreatePetitionStep3DataAction = ({ get, }: ActionProps<{ selectedPage: number }>) => { const { caseType, hasIrsNotice, irsNoticesRedactionAcknowledgement } = get( @@ -21,7 +21,7 @@ export const getStep3DataAction = ({ }; }); - const step3Data = { + const createPetitionStep3Data = { caseType: hasIrsNotice ? irsNotices[0].caseType : caseType, hasIrsNotice, hasUploadedIrsNotice, @@ -30,6 +30,6 @@ export const getStep3DataAction = ({ }; return { - step3Data, + createPetitionStep3Data, }; }; diff --git a/web-client/src/presenter/actions/getStep4DataAction.test.ts b/web-client/src/presenter/actions/getCreatePetitionStep4DataAction.test.ts similarity index 56% rename from web-client/src/presenter/actions/getStep4DataAction.test.ts rename to web-client/src/presenter/actions/getCreatePetitionStep4DataAction.test.ts index 6c136cd19f2..17c358e0cff 100644 --- a/web-client/src/presenter/actions/getStep4DataAction.test.ts +++ b/web-client/src/presenter/actions/getCreatePetitionStep4DataAction.test.ts @@ -1,9 +1,9 @@ -import { getStep4DataAction } from '@web-client/presenter/actions/getStep4DataAction'; +import { getCreatePetitionStep4DataAction } from '@web-client/presenter/actions/getCreatePetitionStep4DataAction'; import { runAction } from '@web-client/presenter/test.cerebral'; -describe('getStep4DataAction', () => { +describe('getCreatePetitionStep4DataAction', () => { it('should fetch step 4 related data from state.form', async () => { - const results = await runAction(getStep4DataAction, { + const results = await runAction(getCreatePetitionStep4DataAction, { state: { form: { preferredTrialCity: 'TEST_preferredTrialCity', @@ -13,8 +13,8 @@ describe('getStep4DataAction', () => { }, }); - const { step4Data } = results.output; - expect(step4Data).toEqual({ + const { createPetitionStep4Data } = results.output; + expect(createPetitionStep4Data).toEqual({ preferredTrialCity: 'TEST_preferredTrialCity', procedureType: 'TEST_procedureType', }); diff --git a/web-client/src/presenter/actions/getStep4DataAction.ts b/web-client/src/presenter/actions/getCreatePetitionStep4DataAction.ts similarity index 68% rename from web-client/src/presenter/actions/getStep4DataAction.ts rename to web-client/src/presenter/actions/getCreatePetitionStep4DataAction.ts index 27a5051f588..5b9fea35e98 100644 --- a/web-client/src/presenter/actions/getStep4DataAction.ts +++ b/web-client/src/presenter/actions/getCreatePetitionStep4DataAction.ts @@ -1,16 +1,16 @@ import { state } from '@web-client/presenter/app.cerebral'; -export const getStep4DataAction = ({ +export const getCreatePetitionStep4DataAction = ({ get, }: ActionProps<{ selectedPage: number }>) => { const { preferredTrialCity, procedureType } = get(state.form); - const step4Data = { + const createPetitionStep4Data = { preferredTrialCity, procedureType, }; return { - step4Data, + createPetitionStep4Data, }; }; diff --git a/web-client/src/presenter/actions/getStep5DataAction.test.ts b/web-client/src/presenter/actions/getCreatePetitionStep5DataAction.test.ts similarity index 52% rename from web-client/src/presenter/actions/getStep5DataAction.test.ts rename to web-client/src/presenter/actions/getCreatePetitionStep5DataAction.test.ts index f8e0339d0d2..e1f03f2b806 100644 --- a/web-client/src/presenter/actions/getStep5DataAction.test.ts +++ b/web-client/src/presenter/actions/getCreatePetitionStep5DataAction.test.ts @@ -1,9 +1,9 @@ -import { getStep5DataAction } from '@web-client/presenter/actions/getStep5DataAction'; +import { getCreatePetitionStep5DataAction } from '@web-client/presenter/actions/getCreatePetitionStep5DataAction'; import { runAction } from '@web-client/presenter/test.cerebral'; -describe('getStep5DataAction', () => { +describe('getCreatePetitionStep5DataAction', () => { it('should fetch step 5 related data from state.form', async () => { - const results = await runAction(getStep5DataAction, { + const results = await runAction(getCreatePetitionStep5DataAction, { state: { form: { stinFile: 'TEST_stinFile', @@ -12,8 +12,8 @@ describe('getStep5DataAction', () => { }, }); - const { step5Data } = results.output; - expect(step5Data).toEqual({ + const { createPetitionStep5Data } = results.output; + expect(createPetitionStep5Data).toEqual({ stinFile: 'TEST_stinFile', stinFileSize: 'TEST_stinFileSize', }); diff --git a/web-client/src/presenter/actions/getStep5DataAction.ts b/web-client/src/presenter/actions/getCreatePetitionStep5DataAction.ts similarity index 66% rename from web-client/src/presenter/actions/getStep5DataAction.ts rename to web-client/src/presenter/actions/getCreatePetitionStep5DataAction.ts index e2af6eebc4a..4b207a1fea7 100644 --- a/web-client/src/presenter/actions/getStep5DataAction.ts +++ b/web-client/src/presenter/actions/getCreatePetitionStep5DataAction.ts @@ -1,16 +1,16 @@ import { state } from '@web-client/presenter/app.cerebral'; -export const getStep5DataAction = ({ +export const getCreatePetitionStep5DataAction = ({ get, }: ActionProps<{ selectedPage: number }>) => { const { stinFile, stinFileSize } = get(state.form); - const step5Data = { + const createPetitionStep5Data = { stinFile, stinFileSize, }; return { - step5Data, + createPetitionStep5Data, }; }; diff --git a/web-client/src/presenter/actions/saveAndSubmitCaseAction.test.ts b/web-client/src/presenter/actions/saveAndSubmitCaseAction.test.ts index 7f08384e37e..ecd812683b2 100644 --- a/web-client/src/presenter/actions/saveAndSubmitCaseAction.test.ts +++ b/web-client/src/presenter/actions/saveAndSubmitCaseAction.test.ts @@ -1,4 +1,4 @@ -import { PETITION_TYPES } from '@web-client/presenter/actions/setupPetitionStateAction'; +import { PETITION_TYPES } from '@shared/business/entities/EntityConstants'; import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; import { presenter } from '@web-client/presenter/presenter-mock'; import { runAction } from '@web-client/presenter/test.cerebral'; diff --git a/web-client/src/presenter/actions/saveAndSubmitCaseAction.ts b/web-client/src/presenter/actions/saveAndSubmitCaseAction.ts index 710de9c7ec4..e73f44f1131 100644 --- a/web-client/src/presenter/actions/saveAndSubmitCaseAction.ts +++ b/web-client/src/presenter/actions/saveAndSubmitCaseAction.ts @@ -2,8 +2,8 @@ import { ElectronicCreatedCaseType } from '@shared/business/useCases/createCaseI import { FileUploadProgressType, FileUploadProgressValueType, + PETITION_TYPES, } from '@shared/business/entities/EntityConstants'; -import { PETITION_TYPES } from '@web-client/presenter/actions/setupPetitionStateAction'; import { state } from '@web-client/presenter/app.cerebral'; export const saveAndSubmitCaseAction = async ({ diff --git a/web-client/src/presenter/actions/setFormValueAction.test.ts b/web-client/src/presenter/actions/setFormValueAction.test.ts index a7e3b305b2b..edf4aa1ff9e 100644 --- a/web-client/src/presenter/actions/setFormValueAction.test.ts +++ b/web-client/src/presenter/actions/setFormValueAction.test.ts @@ -55,6 +55,18 @@ describe('setFormValueAction', () => { expect(result.state.form.appleType).toEqual(undefined); }); + it('sets the state.form[props.key] if the passed in props.value is empty string and allowEmptyString is set to true', async () => { + const result = await runAction(setFormValueAction, { + props: { + allowEmptyString: true, + key: 'appleType', + value: '', + }, + state: { form: { appleType: 'Fuji' } }, + }); + expect(result.state.form.appleType).toEqual(''); + }); + it('unsets the state.form[props.key] if the passed in props.value is null', async () => { const result = await runAction(setFormValueAction, { props: { diff --git a/web-client/src/presenter/actions/setFormValueAction.ts b/web-client/src/presenter/actions/setFormValueAction.ts index 80ebbbac6d9..45b851cd412 100644 --- a/web-client/src/presenter/actions/setFormValueAction.ts +++ b/web-client/src/presenter/actions/setFormValueAction.ts @@ -1,13 +1,23 @@ import { state } from '@web-client/presenter/app.cerebral'; -export const setFormValueAction = ({ props, store }: ActionProps) => { - if (props.value !== '' && props.value !== null) { - if (props.index || props.index === 0) { - store.set(state.form[props.key][props.index], props.value); - } else { - store.set(state.form[props.key], props.value); - } - } else { - store.unset(state.form[props.key]); +export const setFormValueAction = ({ + props, + store, +}: ActionProps<{ + allowEmptyString?: boolean; + index?: number; + key: string; + value: any; +}>) => { + const { allowEmptyString, index, key, value } = props; + + if ((!allowEmptyString && value === '') || value === null) { + return store.unset(state.form[key]); + } + + if (typeof index === 'number') { + return store.set(state.form[key][index], value); } + + store.set(state.form[key], value); }; diff --git a/web-client/src/presenter/actions/setPetitionFormValueAction.test.ts b/web-client/src/presenter/actions/setPetitionFormValueAction.test.ts deleted file mode 100644 index 5630321ed8e..00000000000 --- a/web-client/src/presenter/actions/setPetitionFormValueAction.test.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { runAction } from '@web-client/presenter/test.cerebral'; -import { setPetitionFormValueAction } from '@web-client/presenter/actions/setPetitionFormValueAction'; - -describe('setPetitionFormValueAction', () => { - const KEY = 'KEY'; - - it('should set state properly when value is truthy and index is a number', async () => { - const { state } = await runAction(setPetitionFormValueAction, { - props: { - index: 0, - key: KEY, - value: 'TEST_VALUE', - }, - state: { - form: { - [KEY]: [], - }, - }, - }); - - expect(state.form[KEY]).toEqual(['TEST_VALUE']); - }); - - it('should set state properly when value is truthy and index is a string', async () => { - const { state } = await runAction(setPetitionFormValueAction, { - props: { - index: 'prop1', - key: KEY, - value: 'TEST_VALUE', - }, - state: { - form: { - [KEY]: {}, - }, - }, - }); - - expect(state.form[KEY]).toEqual({ prop1: 'TEST_VALUE' }); - }); - - it('should set state properly when value is truthy and index is undefined', async () => { - const { state } = await runAction(setPetitionFormValueAction, { - props: { - index: undefined, - key: KEY, - value: 'TEST_VALUE', - }, - state: { - form: { - [KEY]: undefined, - }, - }, - }); - - expect(state.form[KEY]).toEqual('TEST_VALUE'); - }); - - it('should unset state correctly if the value is null', async () => { - const { state } = await runAction(setPetitionFormValueAction, { - props: { - index: undefined, - key: KEY, - value: null, - }, - state: { - form: { - [KEY]: 'PREVIOUS VALUE', - }, - }, - }); - - expect(state.form[KEY]).toEqual(undefined); - }); -}); diff --git a/web-client/src/presenter/actions/setPetitionFormValueAction.ts b/web-client/src/presenter/actions/setPetitionFormValueAction.ts deleted file mode 100644 index 6c45f410b7c..00000000000 --- a/web-client/src/presenter/actions/setPetitionFormValueAction.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { state } from '@web-client/presenter/app.cerebral'; - -export const setPetitionFormValueAction = ({ - props, - store, -}: ActionProps<{ index: number; key: string; value: any }>) => { - const { index, key, value } = props; - if (value !== null) { - if (index || index === 0) { - store.set(state.form[key][index], value); - } else { - store.set(state.form[key], value); - } - } else { - store.unset(state.form[key]); - } -}; diff --git a/web-client/src/presenter/actions/setupPetitionStateAction.test.ts b/web-client/src/presenter/actions/setupPetitionStateAction.test.ts index ec2231f6206..0a738949b3c 100644 --- a/web-client/src/presenter/actions/setupPetitionStateAction.test.ts +++ b/web-client/src/presenter/actions/setupPetitionStateAction.test.ts @@ -1,8 +1,6 @@ -import { - PETITION_TYPES, - setupPetitionStateAction, -} from '@web-client/presenter/actions/setupPetitionStateAction'; +import { PETITION_TYPES } from '@shared/business/entities/EntityConstants'; import { runAction } from '@web-client/presenter/test.cerebral'; +import { setupPetitionStateAction } from '@web-client/presenter/actions/setupPetitionStateAction'; describe('setupPetitionStateAction', () => { it('should setup state correctly', async () => { diff --git a/web-client/src/presenter/actions/setupPetitionStateAction.ts b/web-client/src/presenter/actions/setupPetitionStateAction.ts index fdcb6b1e05f..8a2b0de2290 100644 --- a/web-client/src/presenter/actions/setupPetitionStateAction.ts +++ b/web-client/src/presenter/actions/setupPetitionStateAction.ts @@ -1,12 +1,6 @@ -// import { COUNTRY_TYPES } from '@shared/business/entities/EntityConstants'; +import { PETITION_TYPES } from '@shared/business/entities/EntityConstants'; import { state } from '@web-client/presenter/app.cerebral'; -// use GENERATION_TYPES instead? either way, this should be in entityConstants -export const PETITION_TYPES = { - autoGenerated: 'autoGenerated', - userUploaded: 'userUploaded', -}; - export type InitialPetitionFormState = { petitionFacts: string[]; petitionReasons: string[]; @@ -15,7 +9,6 @@ export type InitialPetitionFormState = { }; export const setupPetitionStateAction = ({ store }: ActionProps) => { - // should this live in state? const initialPetitionForm: InitialPetitionFormState = { filingType: undefined, petitionFacts: [''], diff --git a/web-client/src/presenter/actions/shouldUnsetParentMessageIdAction.test.ts b/web-client/src/presenter/actions/shouldUnsetParentMessageIdAction.test.ts new file mode 100644 index 00000000000..5a2bd6b75be --- /dev/null +++ b/web-client/src/presenter/actions/shouldUnsetParentMessageIdAction.test.ts @@ -0,0 +1,42 @@ +import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; +import { presenter } from '@web-client/presenter/presenter-mock'; +import { runAction } from '@web-client/presenter/test.cerebral'; +import { shouldUnsetParentMessageIdAction } from './shouldUnsetParentMessageIdAction'; + +describe('shouldUnsetParentMessageIdAction,', () => { + const mockYesPath = jest.fn(); + const mockNoPath = jest.fn(); + + presenter.providers.path = { + no: mockNoPath, + yes: mockYesPath, + }; + + presenter.providers.applicationContext = applicationContext; + + it('should not unset parent message id when it exists in props', async () => { + await runAction(shouldUnsetParentMessageIdAction, { + modules: { + presenter, + }, + props: { + parentMessageId: 'test', + }, + state: {}, + }); + + expect(mockNoPath).toHaveBeenCalled(); + }); + + it('should unset parent message id when it does not exist in props', async () => { + await runAction(shouldUnsetParentMessageIdAction, { + modules: { + presenter, + }, + props: {}, + state: {}, + }); + + expect(mockYesPath).toHaveBeenCalled(); + }); +}); diff --git a/web-client/src/presenter/actions/shouldUnsetParentMessageIdAction.ts b/web-client/src/presenter/actions/shouldUnsetParentMessageIdAction.ts new file mode 100644 index 00000000000..c7eab6f6ef4 --- /dev/null +++ b/web-client/src/presenter/actions/shouldUnsetParentMessageIdAction.ts @@ -0,0 +1,7 @@ +export const shouldUnsetParentMessageIdAction = ({ + path, + props, +}: ActionProps) => { + if (!props.parentMessageId) return path.yes(); + return path.no(); +}; diff --git a/web-client/src/presenter/actions/unsetDocumentToEditAction.ts b/web-client/src/presenter/actions/unsetDocumentToEditAction.ts index 54b1c0950d8..e1c55f7df66 100644 --- a/web-client/src/presenter/actions/unsetDocumentToEditAction.ts +++ b/web-client/src/presenter/actions/unsetDocumentToEditAction.ts @@ -5,6 +5,8 @@ import { state } from '@web-client/presenter/app.cerebral'; * @param {object} providers the providers object * @param {object} providers.store the cerebral store */ -export const unsetDocumentToEditAction = ({ store }: ActionProps) => { - store.unset(state.documentToEdit); +export const unsetDocumentToEditAction = ({ props, store }: ActionProps) => { + if (!props.isEditing) { + store.unset(state.documentToEdit); + } }; diff --git a/web-client/src/presenter/actions/unsetParentMessageIdAction.test.ts b/web-client/src/presenter/actions/unsetParentMessageIdAction.test.ts new file mode 100644 index 00000000000..624f7bca55e --- /dev/null +++ b/web-client/src/presenter/actions/unsetParentMessageIdAction.test.ts @@ -0,0 +1,12 @@ +import { runAction } from '@web-client/presenter/test.cerebral'; +import { unsetParentMessageIdAction } from './unsetParentMessageIdAction'; + +describe('unsetParentMessageIdAction,', () => { + it('should unset parent message id', async () => { + const result = await runAction(unsetParentMessageIdAction, { + state: { parentMessageId: 'test' }, + }); + + expect(result.state.parentMessageId).toBeUndefined(); + }); +}); diff --git a/web-client/src/presenter/actions/unsetParentMessageIdAction.ts b/web-client/src/presenter/actions/unsetParentMessageIdAction.ts new file mode 100644 index 00000000000..bb166f7979f --- /dev/null +++ b/web-client/src/presenter/actions/unsetParentMessageIdAction.ts @@ -0,0 +1,5 @@ +import { state } from '@web-client/presenter/app.cerebral'; + +export const unsetParentMessageIdAction = ({ store }: ActionProps) => { + store.unset(state.parentMessageId); +}; diff --git a/web-client/src/presenter/actions/updateIrsNoticeUploadedFileAction.test.ts b/web-client/src/presenter/actions/updateIrsNoticeUploadedFileAction.test.ts new file mode 100644 index 00000000000..4b000a9ad46 --- /dev/null +++ b/web-client/src/presenter/actions/updateIrsNoticeUploadedFileAction.test.ts @@ -0,0 +1,112 @@ +import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; +import { presenter } from '@web-client/presenter/presenter-mock'; +import { runAction } from '@web-client/presenter/test.cerebral'; +import { updateIrsNoticeIndexPropertyAction } from '@web-client/presenter/actions/updateIrsNoticeUploadedFileAction'; + +describe('updateIrsNoticeIndexPropertyAction', () => { + presenter.providers.applicationContext = applicationContext; + + it('should set an initial value of irs notice info', async () => { + const results = await runAction(updateIrsNoticeIndexPropertyAction, { + modules: { + presenter, + }, + props: { + key: 0, + property: 'caseType', + toFormat: undefined, + value: 'CDP (Lien/Levy)', + }, + }); + + expect(results.state.irsNoticeUploadFormInfo).toEqual({ + 0: { caseType: 'CDP (Lien/Levy)' }, + }); + }); + + it('should update an existing property on irs notice info', async () => { + const results = await runAction(updateIrsNoticeIndexPropertyAction, { + modules: { + presenter, + }, + props: { + key: 0, + property: 'caseType', + toFormat: undefined, + value: 'Deficiency', + }, + state: { + 0: { caseType: 'CDP (Lien/Levy)', taxYear: '2023' }, + }, + }); + + expect(results.state.irsNoticeUploadFormInfo).toEqual({ + 0: { caseType: 'Deficiency' }, + }); + }); + + it('should add a new entry to irs notice info', async () => { + const results = await runAction(updateIrsNoticeIndexPropertyAction, { + modules: { + presenter, + }, + props: { + key: 1, + property: 'caseType', + toFormat: undefined, + value: 'Deficiency', + }, + state: { + irsNoticeUploadFormInfo: { + 0: { caseType: 'CDP (Lien/Levy)', taxYear: '2023' }, + }, + }, + }); + expect(results.state.irsNoticeUploadFormInfo).toEqual({ + 0: { caseType: 'CDP (Lien/Levy)', taxYear: '2023' }, + 1: { caseType: 'Deficiency' }, + }); + }); + + it('should remove a property from an existing irs notice info', async () => { + const results = await runAction(updateIrsNoticeIndexPropertyAction, { + modules: { + presenter, + }, + props: { + key: 1, + property: 'taxYear', + toFormat: undefined, + value: undefined, + }, + state: { + irsNoticeUploadFormInfo: { + 0: { caseType: 'CDP (Lien/Levy)', taxYear: '2023' }, + 1: { caseType: 'CDP (Lien/Levy)', taxYear: '2024' }, + }, + }, + }); + expect(results.state.irsNoticeUploadFormInfo).toEqual({ + 0: { caseType: 'CDP (Lien/Levy)', taxYear: '2023' }, + 1: { caseType: 'CDP (Lien/Levy)' }, + }); + }); + + it('should format and set a date property correctly', async () => { + const results = await runAction(updateIrsNoticeIndexPropertyAction, { + modules: { + presenter, + }, + props: { + key: '0', + property: 'noticeIssuedDate', + toFormat: "yyyy-MM-dd'T'HH:mm:ss.SSSZZ", + value: '07/30/2024', + }, + }); + + expect(results.state.irsNoticeUploadFormInfo).toEqual({ + 0: { noticeIssuedDate: '2024-07-30T00:00:00.000-04:00' }, + }); + }); +}); diff --git a/web-client/src/presenter/actions/updatedValidatePetitionAction.ts b/web-client/src/presenter/actions/updatedValidatePetitionAction.ts index 4e5ca9a2b48..de2ad753ef2 100644 --- a/web-client/src/presenter/actions/updatedValidatePetitionAction.ts +++ b/web-client/src/presenter/actions/updatedValidatePetitionAction.ts @@ -4,7 +4,7 @@ export const updatedValidatePetitionAction = ({ applicationContext, get, path, -}: ActionProps) => { +}: ActionProps<{}, IApplicationContext>) => { const petition = get(state.petitionFormatted); const errors = applicationContext @@ -13,9 +13,7 @@ export const updatedValidatePetitionAction = ({ petition, }); - if (!errors) { - return path.success(); - } else { + if (errors) { return path.error({ alertError: { title: 'Errors were found. Please correct your form and resubmit.', @@ -23,4 +21,6 @@ export const updatedValidatePetitionAction = ({ errors, }); } + + return path.success(); }; diff --git a/web-client/src/presenter/actions/validateUploadPetitionStep1Action.test.ts b/web-client/src/presenter/actions/validateUploadPetitionStep1Action.test.ts index 514812415fb..12f40ae75f4 100644 --- a/web-client/src/presenter/actions/validateUploadPetitionStep1Action.test.ts +++ b/web-client/src/presenter/actions/validateUploadPetitionStep1Action.test.ts @@ -28,7 +28,7 @@ describe('validateUploadPetitionStep1Action', () => { presenter, }, props: { - step1Data: { + createPetitionStep1Data: { countryType: COUNTRY_TYPES.DOMESTIC, filingType: FILING_TYPES[ROLES.petitioner][0], partyType: PARTY_TYPES.petitioner, @@ -46,7 +46,7 @@ describe('validateUploadPetitionStep1Action', () => { presenter, }, props: { - step1Data: {}, + createPetitionStep1Data: {}, }, }); diff --git a/web-client/src/presenter/actions/validateUploadPetitionStep1Action.ts b/web-client/src/presenter/actions/validateUploadPetitionStep1Action.ts index 6f2d0ac0bf4..d1d612f2c8b 100644 --- a/web-client/src/presenter/actions/validateUploadPetitionStep1Action.ts +++ b/web-client/src/presenter/actions/validateUploadPetitionStep1Action.ts @@ -3,33 +3,33 @@ import { UploadPetitionStep1 } from '@shared/business/entities/startCase/UploadP export const validateUploadPetitionStep1Action = ({ path, props, -}: ActionProps<{ step1Data: any }>) => { - const { step1Data } = props; +}: ActionProps<{ createPetitionStep1Data: any }>) => { + const { createPetitionStep1Data } = props; const errors = new UploadPetitionStep1( - step1Data, + createPetitionStep1Data, ).getFormattedValidationErrors(); - if (!errors) { - return path.success(); - } + if (errors) { + const errorDisplayOrder = [ + 'name', + 'secondaryName', + 'inCareOf', + 'title', + 'address1', + 'city', + 'state', + 'postalCode', + 'placeOfLegalResidence', + 'phone', + 'paperPetitionEmail', + ]; - const errorDisplayOrder = [ - 'name', - 'secondaryName', - 'inCareOf', - 'title', - 'address1', - 'city', - 'state', - 'postalCode', - 'placeOfLegalResidence', - 'phone', - 'paperPetitionEmail', - ]; + return path.error({ + errorDisplayOrder, + errors, + }); + } - return path.error({ - errorDisplayOrder, - errors, - }); + return path.success(); }; diff --git a/web-client/src/presenter/actions/validateUploadPetitionStep2Action.test.ts b/web-client/src/presenter/actions/validateUploadPetitionStep2Action.test.ts index eb565732433..5b2f0ed39ae 100644 --- a/web-client/src/presenter/actions/validateUploadPetitionStep2Action.test.ts +++ b/web-client/src/presenter/actions/validateUploadPetitionStep2Action.test.ts @@ -1,4 +1,4 @@ -import { PETITION_TYPES } from '@web-client/presenter/actions/setupPetitionStateAction'; +import { PETITION_TYPES } 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'; @@ -23,7 +23,7 @@ describe('validateUploadPetitionStep2Action', () => { presenter, }, props: { - step2Data: { + createPetitionStep2Data: { petitionFacts: ['Fact goes here'], petitionReasons: ['Reason goes here'], petitionType: PETITION_TYPES.autoGenerated, @@ -48,7 +48,7 @@ describe('validateUploadPetitionStep2Action', () => { presenter, }, props: { - step2Data: { + createPetitionStep2Data: { petitionFacts: [''], petitionFile: {}, petitionFileSize: 1, @@ -79,7 +79,7 @@ describe('validateUploadPetitionStep2Action', () => { presenter, }, props: { - step2Data: { + createPetitionStep2Data: { petitionFacts: [''], petitionReasons: [''], petitionType: PETITION_TYPES.autoGenerated, @@ -97,46 +97,4 @@ describe('validateUploadPetitionStep2Action', () => { expect(mockErrorPath.mock.calls.length).toEqual(1); expect(mockSuccessPath).not.toHaveBeenCalled(); }); - - it('should filter out empty petition facts or reasons, except for the first one, and set them on state', async () => { - const { state } = await runAction(validateUploadPetitionStep2Action, { - modules: { - presenter, - }, - props: { - step2Data: { - petitionFacts: ['Fact goes here', '', 'Second fact here'], - petitionReasons: [ - 'Reason goes here', - '', - '', - '', - 'Second reason here', - ], - petitionType: PETITION_TYPES.autoGenerated, - }, - }, - state: { - form: { - petitionFacts: ['Fact goes here', '', 'Second fact here'], - petitionReasons: [ - 'Reason goes here', - '', - '', - '', - 'Second reason here', - ], - petitionType: PETITION_TYPES.autoGenerated, - }, - }, - }); - expect(state.form).toEqual({ - petitionFacts: ['Fact goes here', 'Second fact here'], - petitionReasons: ['Reason goes here', 'Second reason here'], - petitionType: PETITION_TYPES.autoGenerated, - }); - - expect(mockSuccessPath.mock.calls.length).toEqual(1); - expect(mockErrorPath).not.toHaveBeenCalled(); - }); }); diff --git a/web-client/src/presenter/actions/validateUploadPetitionStep2Action.ts b/web-client/src/presenter/actions/validateUploadPetitionStep2Action.ts index 47acd95e921..1d02e50ccf9 100644 --- a/web-client/src/presenter/actions/validateUploadPetitionStep2Action.ts +++ b/web-client/src/presenter/actions/validateUploadPetitionStep2Action.ts @@ -1,32 +1,20 @@ import { UploadPetitionStep2 } from '@shared/business/entities/startCase/UploadPetitionStep2'; -import { state } from '@web-client/presenter/app.cerebral'; export const validateUploadPetitionStep2Action = ({ path, props, - store, -}: ActionProps<{ step2Data: any }>) => { - const { step2Data } = props; +}: ActionProps<{ createPetitionStep2Data: any }>) => { + const { createPetitionStep2Data } = props; - // move this logic to new action? - step2Data.petitionReasons = (arr => (arr.length > 0 ? arr : ['']))( - step2Data.petitionReasons.filter(r => r.length >= 1), - ); - - step2Data.petitionFacts = (arr => (arr.length > 0 ? arr : ['']))( - step2Data.petitionFacts.filter(r => r.length >= 1), - ); - - store.set(state.form.petitionReasons, step2Data.petitionReasons); - store.set(state.form.petitionFacts, step2Data.petitionFacts); - - let errors = new UploadPetitionStep2( - step2Data, + const errors = new UploadPetitionStep2( + createPetitionStep2Data, ).getFormattedValidationErrors(); + if (errors) { return path.error({ errors, }); } + return path.success(); }; diff --git a/web-client/src/presenter/actions/validateUploadPetitionStep3Action.test.ts b/web-client/src/presenter/actions/validateUploadPetitionStep3Action.test.ts index 1d155b07d70..641856331ff 100644 --- a/web-client/src/presenter/actions/validateUploadPetitionStep3Action.test.ts +++ b/web-client/src/presenter/actions/validateUploadPetitionStep3Action.test.ts @@ -23,7 +23,7 @@ describe('validateUploadPetitionStep3Action', () => { presenter, }, props: { - step3Data: { + createPetitionStep3Data: { caseType: CASE_TYPES_MAP.cdp, hasIrsNotice: false, hasUploadedIrsNotice: false, @@ -41,7 +41,7 @@ describe('validateUploadPetitionStep3Action', () => { presenter, }, props: { - step3Data: {}, + createPetitionStep3Data: {}, }, }); diff --git a/web-client/src/presenter/actions/validateUploadPetitionStep3Action.ts b/web-client/src/presenter/actions/validateUploadPetitionStep3Action.ts index 718852bf10b..16bec84bbdc 100644 --- a/web-client/src/presenter/actions/validateUploadPetitionStep3Action.ts +++ b/web-client/src/presenter/actions/validateUploadPetitionStep3Action.ts @@ -3,16 +3,18 @@ import { UploadPetitionStep3 } from '@shared/business/entities/startCase/UploadP export const validateUploadPetitionStep3Action = ({ path, props, -}: ActionProps<{ step3Data: any }>) => { - const { step3Data } = props; +}: ActionProps<{ createPetitionStep3Data: any }>) => { + const { createPetitionStep3Data } = props; const errors = new UploadPetitionStep3( - step3Data, + createPetitionStep3Data, ).getFormattedValidationErrors(); - return errors - ? path.error({ - errors, - }) - : path.success(); + if (errors) { + return path.error({ + errors, + }); + } + + return path.success(); }; diff --git a/web-client/src/presenter/actions/validateUploadPetitionStep4Action.test.ts b/web-client/src/presenter/actions/validateUploadPetitionStep4Action.test.ts index 8d07a07ad5a..52fa70d7bca 100644 --- a/web-client/src/presenter/actions/validateUploadPetitionStep4Action.test.ts +++ b/web-client/src/presenter/actions/validateUploadPetitionStep4Action.test.ts @@ -26,7 +26,7 @@ describe('validateUploadPetitionStep4Action', () => { presenter, }, props: { - step4Data: { + createPetitionStep4Data: { preferredTrialCity: TRIAL_CITY_STRINGS[0], procedureType: PROCEDURE_TYPES_MAP.regular, }, @@ -43,7 +43,7 @@ describe('validateUploadPetitionStep4Action', () => { presenter, }, props: { - step4Data: {}, + createPetitionStep4Data: {}, }, }); diff --git a/web-client/src/presenter/actions/validateUploadPetitionStep4Action.ts b/web-client/src/presenter/actions/validateUploadPetitionStep4Action.ts index d2d16ab4896..bfdb645a81c 100644 --- a/web-client/src/presenter/actions/validateUploadPetitionStep4Action.ts +++ b/web-client/src/presenter/actions/validateUploadPetitionStep4Action.ts @@ -3,16 +3,18 @@ import { UploadPetitionStep4 } from '@shared/business/entities/startCase/UploadP export const validateUploadPetitionStep4Action = ({ path, props, -}: ActionProps<{ step4Data: any }>) => { - const { step4Data } = props; +}: ActionProps<{ createPetitionStep4Data: any }>) => { + const { createPetitionStep4Data } = props; const errors = new UploadPetitionStep4( - step4Data, + createPetitionStep4Data, ).getFormattedValidationErrors(); - return errors - ? path.error({ - errors, - }) - : path.success(); + if (errors) { + return path.error({ + errors, + }); + } + + return path.success(); }; diff --git a/web-client/src/presenter/actions/validateUploadPetitionStep5Action.test.ts b/web-client/src/presenter/actions/validateUploadPetitionStep5Action.test.ts index 1fc8dbb5307..e4371f4ba0f 100644 --- a/web-client/src/presenter/actions/validateUploadPetitionStep5Action.test.ts +++ b/web-client/src/presenter/actions/validateUploadPetitionStep5Action.test.ts @@ -22,7 +22,7 @@ describe('validateUploadPetitionStep5Action', () => { presenter, }, props: { - step5Data: { + createPetitionStep5Data: { stinFile: {}, stinFileSize: 1, }, @@ -39,7 +39,7 @@ describe('validateUploadPetitionStep5Action', () => { presenter, }, props: { - step5Data: {}, + createPetitionStep5Data: {}, }, }); diff --git a/web-client/src/presenter/actions/validateUploadPetitionStep5Action.ts b/web-client/src/presenter/actions/validateUploadPetitionStep5Action.ts index 31848696b59..cee4375db18 100644 --- a/web-client/src/presenter/actions/validateUploadPetitionStep5Action.ts +++ b/web-client/src/presenter/actions/validateUploadPetitionStep5Action.ts @@ -3,16 +3,18 @@ import { UploadPetitionStep5 } from '@shared/business/entities/startCase/UploadP export const validateUploadPetitionStep5Action = ({ path, props, -}: ActionProps<{ step5Data: any }>) => { - const { step5Data } = props; +}: ActionProps<{ createPetitionStep5Data: any }>) => { + const { createPetitionStep5Data } = props; const errors = new UploadPetitionStep5( - step5Data, + createPetitionStep5Data, ).getFormattedValidationErrors(); - return errors - ? path.error({ - errors, - }) - : path.success(); + if (errors) { + return path.error({ + errors, + }); + } + + return path.success(); }; diff --git a/web-client/src/presenter/computeds/caseDetailHelper.test.ts b/web-client/src/presenter/computeds/caseDetailHelper.test.ts index 96601e34e21..df07871d88f 100644 --- a/web-client/src/presenter/computeds/caseDetailHelper.test.ts +++ b/web-client/src/presenter/computeds/caseDetailHelper.test.ts @@ -449,7 +449,23 @@ describe('case detail computed', () => { expect(result.showPetitionProcessingAlert).toEqual(false); }); - it('should show petition processing alert if user is an external user and the case does not allow service', () => { + it('should not show petition processing alert if user is not associated with the case', () => { + const user = petitionerUser; + + const result = runCompute(caseDetailHelper, { + state: { + ...getBaseState(user), + caseDetail: { + docketEntries: [{ documentType: 'Petition' }], + screenMetadata: { isAssociated: false }, + status: CASE_STATUS_TYPES.generalDocket, + }, + }, + }); + expect(result.showPetitionProcessingAlert).toEqual(false); + }); + + it('should show petition processing alert if user is an external user and the case does not allow service and user is associated with the case', () => { const user = petitionerUser; const result = runCompute(caseDetailHelper, { @@ -459,6 +475,7 @@ describe('case detail computed', () => { docketEntries: [{ documentType: 'Petition' }], status: CASE_STATUS_TYPES.new, }, + screenMetadata: { isAssociated: true }, }, }); expect(result.showPetitionProcessingAlert).toEqual(true); diff --git a/web-client/src/presenter/computeds/caseDetailHelper.ts b/web-client/src/presenter/computeds/caseDetailHelper.ts index 4e4cfc20560..e346e605a02 100644 --- a/web-client/src/presenter/computeds/caseDetailHelper.ts +++ b/web-client/src/presenter/computeds/caseDetailHelper.ts @@ -21,8 +21,7 @@ export const caseDetailHelper = ( const isExternalUser = applicationContext .getUtilities() .isExternalUser(user.role); - const userAssociatedWithCase = get(state.screenMetadata.isAssociated); - const showJudgesNotes = permissions.JUDGES_NOTES; + const userIsAssociatedWithCase = get(state.screenMetadata.isAssociated); let showFileDocumentButton = permissions.FILE_EXTERNAL_DOCUMENT && ['CaseDetail'].includes(currentPage); @@ -34,7 +33,7 @@ export const caseDetailHelper = ( let showQcWorkItemsUntouchedState = false; if (isExternalUser) { - if (userAssociatedWithCase) { + if (userIsAssociatedWithCase) { userHasAccessToCase = true; showFileDocumentButton = true; @@ -71,22 +70,34 @@ export const caseDetailHelper = ( .getUtilities() .isSealedCase(caseDetail); - const userCanViewCase = - (isExternalUser && userAssociatedWithCase) || !isSealedCase; + const showConsolidatedCasesCard = + permissions.VIEW_CONSOLIDATED_CASES_CARD && !!caseDetail.leadDocketNumber; + + const showFilingFeeExternal = + isExternalUser && + user.role !== USER_ROLES.irsPractitioner && + user.role !== USER_ROLES.irsSuperuser; + + const showJudgesNotes = permissions.JUDGES_NOTES; + + const showPetitionProcessingAlert = + isExternalUser && + !canAllowDocumentServiceForCase && + userIsAssociatedWithCase; + + const showPractitionerSection = !isExternalUser || hasPrivatePractitioners; const isPractitioner = user.role === USER_ROLES.irsPractitioner || user.role === USER_ROLES.privatePractitioner; - const isPetitioner = user.role === USER_ROLES.petitioner; - const showSealedCaseView = (isPractitioner || isPetitioner) && !!isSealedCase && - !userAssociatedWithCase; + !userIsAssociatedWithCase; - const showConsolidatedCasesCard = - permissions.VIEW_CONSOLIDATED_CASES_CARD && !!caseDetail.leadDocketNumber; + const userCanViewCase = + (isExternalUser && userIsAssociatedWithCase) || !isSealedCase; return { caseDeadlines, @@ -105,14 +116,10 @@ export const caseDetailHelper = ( showDocketRecordInProgressState: !isExternalUser, showEditCaseDetailsButton: permissions.EDIT_CASE_DETAILS, showFileDocumentButton, - showFilingFeeExternal: - isExternalUser && - user.role !== USER_ROLES.irsPractitioner && - user.role !== USER_ROLES.irsSuperuser, + showFilingFeeExternal, showJudgesNotes, - showPetitionProcessingAlert: - isExternalUser && !canAllowDocumentServiceForCase, - showPractitionerSection: !isExternalUser || hasPrivatePractitioners, + showPetitionProcessingAlert, + showPractitionerSection, showPreferredTrialCity: caseDetail.preferredTrialCity, showQcWorkItemsUntouchedState, showSealedCaseView, diff --git a/web-client/src/presenter/computeds/createOrderHelper.test.ts b/web-client/src/presenter/computeds/createOrderHelper.test.ts index 2bb5521c5a3..c401ef50508 100644 --- a/web-client/src/presenter/computeds/createOrderHelper.test.ts +++ b/web-client/src/presenter/computeds/createOrderHelper.test.ts @@ -60,7 +60,7 @@ describe('createOrderHelper', () => { const result = runCompute(createOrderHelper, { state: { caseDetail, - documentToEdit: {}, + documentToEdit: { docketEntryId: '1' }, form: { documentTitle: 'Order', }, diff --git a/web-client/src/presenter/computeds/createOrderHelper.ts b/web-client/src/presenter/computeds/createOrderHelper.ts index 47836b63b79..932cbf41fe3 100644 --- a/web-client/src/presenter/computeds/createOrderHelper.ts +++ b/web-client/src/presenter/computeds/createOrderHelper.ts @@ -1,4 +1,5 @@ import { Get } from 'cerebral'; +import { isEmpty } from 'lodash'; import { state } from '@web-client/presenter/app.cerebral'; export const createOrderHelper = ( @@ -19,7 +20,7 @@ export const createOrderHelper = ( state.setSelectedConsolidatedCasesToMultiDocketOn, ); - const isEditing = !!documentToEdit; + const isEditing = !isEmpty(documentToEdit); const pageTitle = isEditing ? `Edit ${documentTitle}` diff --git a/web-client/src/presenter/computeds/documentViewerHelper.ts b/web-client/src/presenter/computeds/documentViewerHelper.ts index 70e97e134ef..6441bccb281 100644 --- a/web-client/src/presenter/computeds/documentViewerHelper.ts +++ b/web-client/src/presenter/computeds/documentViewerHelper.ts @@ -14,6 +14,7 @@ export const documentViewerHelper = ( COURT_ISSUED_EVENT_CODES, PROPOSED_STIPULATED_DECISION_EVENT_CODE, STAMPED_DOCUMENTS_ALLOWLIST, + STATUS_REPORT_ORDER_DOCUMENTS_ALLOWLIST, STIPULATED_DECISION_EVENT_CODE, } = applicationContext.getConstants(); @@ -98,6 +99,12 @@ export const documentViewerHelper = ( permissions.STAMP_MOTION && STAMPED_DOCUMENTS_ALLOWLIST.includes(formattedDocumentToDisplay.eventCode); + const showStatusReportOrderButton = + permissions.STATUS_REPORT_ORDER && + STATUS_REPORT_ORDER_DOCUMENTS_ALLOWLIST.includes( + formattedDocumentToDisplay.eventCode, + ); + return { description: formattedDocumentToDisplay.descriptionDisplay, filedLabel, @@ -110,6 +117,7 @@ export const documentViewerHelper = ( showServePaperFiledDocumentButton, showServePetitionButton, showSignStipulatedDecisionButton, + showStatusReportOrderButton, showStricken: !!formattedDocumentToDisplay.isStricken, showUnservedPetitionWarning, }; diff --git a/web-client/src/presenter/computeds/documentViewerLinksHelper.ts b/web-client/src/presenter/computeds/documentViewerLinksHelper.ts index 10d96ab3b70..56870271b8e 100644 --- a/web-client/src/presenter/computeds/documentViewerLinksHelper.ts +++ b/web-client/src/presenter/computeds/documentViewerLinksHelper.ts @@ -16,5 +16,6 @@ export const documentViewerLinksHelper = (get: Get): any => { redirectUrl: `/case-detail/${caseDetail.docketNumber}/document-view?docketEntryId=${viewerDocumentToDisplay.docketEntryId}`, reviewAndServePetitionLink: `/case-detail/${caseDetail.docketNumber}/petition-qc/document-view/${viewerDocumentToDisplay.docketEntryId}`, signStipulatedDecisionLink: `/case-detail/${caseDetail.docketNumber}/edit-order/${viewerDocumentToDisplay.docketEntryId}/sign`, + statusReportOrderFromCaseDetailsLink: `/case-detail/${caseDetail.docketNumber}/documents/${viewerDocumentToDisplay.docketEntryId}/status-report-order-create`, }; }; diff --git a/web-client/src/presenter/computeds/draftDocumentViewerHelper.test.ts b/web-client/src/presenter/computeds/draftDocumentViewerHelper.test.ts index 685fba069f4..5dcc2b92ec2 100644 --- a/web-client/src/presenter/computeds/draftDocumentViewerHelper.test.ts +++ b/web-client/src/presenter/computeds/draftDocumentViewerHelper.test.ts @@ -1,3 +1,4 @@ +import { STATUS_REPORT_ORDER_OPTIONS } from '@shared/business/entities/EntityConstants'; import { applicationContext } from '@shared/business/test/createTestApplicationContext'; import { clerkOfCourtUser, @@ -485,6 +486,113 @@ describe('draftDocumentViewerHelper', () => { expect(result.showEditButtonSigned).toEqual(false); }); + it('should return showEditSigned true and showEditNotSigned false when document is signed and is a status report order and the user has permission', () => { + const result = runCompute(draftDocumentViewerHelper, { + state: { + ...getBaseState(judgeUser), + caseDetail: { + docketEntries: [ + { ...baseDraftDocketEntry, signedAt: '2020-06-25T20:49:28.192Z' }, + ], + }, + viewerDraftDocumentToDisplay: { + docketEntryId: mockDocketEntryId, + draftOrderState: { + orderType: + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + }, + eventCode: 'O', + }, + }, + }); + + expect(result.showEditButtonSigned).toEqual(true); + expect(result.showEditButtonNotSigned).toEqual(false); + }); + + it('should return showEditSigned false and showNotEditSigned true when document is not signed and is a status report order and the user has permission', () => { + const result = runCompute(draftDocumentViewerHelper, { + state: { + ...getBaseState(judgeUser), + caseDetail: { + docketEntries: [baseDraftDocketEntry], + }, + viewerDraftDocumentToDisplay: { + docketEntryId: mockDocketEntryId, + draftOrderState: { + orderType: + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + }, + eventCode: 'O', + }, + }, + }); + + expect(result.showEditButtonSigned).toEqual(false); + expect(result.showEditButtonNotSigned).toEqual(true); + }); + + it('should return showEditSigned false and showEditNotSigned false when document is signed and is a status report order and the user does not have permission', () => { + const result = runCompute(draftDocumentViewerHelper, { + state: { + ...getBaseState(docketClerkUser), + caseDetail: { + docketEntries: [ + { + ...baseDraftDocketEntry, + draftOrderState: { + orderType: + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + }, + signedAt: '2020-06-25T20:49:28.192Z', + }, + ], + }, + viewerDraftDocumentToDisplay: { + docketEntryId: mockDocketEntryId, + draftOrderState: { + orderType: + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + }, + eventCode: 'O', + }, + }, + }); + + expect(result.showEditButtonSigned).toEqual(false); + expect(result.showEditButtonNotSigned).toEqual(false); + }); + + it('should return showEditSigned false and showEditNotSigned false when document is not signed and is a status report order and the user does not have permission', () => { + const result = runCompute(draftDocumentViewerHelper, { + state: { + ...getBaseState(docketClerkUser), + caseDetail: { + docketEntries: [ + { + ...baseDraftDocketEntry, + draftOrderState: { + orderType: + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + }, + }, + ], + }, + viewerDraftDocumentToDisplay: { + docketEntryId: mockDocketEntryId, + draftOrderState: { + orderType: + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + }, + eventCode: 'O', + }, + }, + }); + + expect(result.showEditButtonSigned).toEqual(false); + expect(result.showEditButtonNotSigned).toEqual(false); + }); + it('should return showDocumentNotSignedAlert false if document is not signed and the event code does not require a signature', () => { const result = runCompute(draftDocumentViewerHelper, { state: { diff --git a/web-client/src/presenter/computeds/draftDocumentViewerHelper.ts b/web-client/src/presenter/computeds/draftDocumentViewerHelper.ts index 873a20ab2a3..3ccd90e4c91 100644 --- a/web-client/src/presenter/computeds/draftDocumentViewerHelper.ts +++ b/web-client/src/presenter/computeds/draftDocumentViewerHelper.ts @@ -1,7 +1,10 @@ -import { state } from '@web-client/presenter/app.cerebral'; +/* eslint-disable complexity */ import { ClientApplicationContext } from '@web-client/applicationContext'; import { Get } from 'cerebral'; +import { STATUS_REPORT_ORDER_OPTIONS } from '@shared/business/entities/EntityConstants'; +import { state } from '@web-client/presenter/app.cerebral'; + export const draftDocumentViewerHelper = ( get: Get, applicationContext: ClientApplicationContext, @@ -16,6 +19,10 @@ export const draftDocumentViewerHelper = ( const permissions = get(state.permissions); const caseDetail = get(state.caseDetail); + const viewerDraftDocumentToDisplayDocketEntryId = get( + state.viewerDraftDocumentToDisplay.docketEntryId, + ); + const formattedCaseDetail = applicationContext .getUtilities() .getFormattedCaseDetail({ @@ -23,10 +30,6 @@ export const draftDocumentViewerHelper = ( caseDetail, }); - const viewerDraftDocumentToDisplayDocketEntryId = get( - state.viewerDraftDocumentToDisplay.docketEntryId, - ); - const formattedDocumentToDisplay = viewerDraftDocumentToDisplayDocketEntryId && formattedCaseDetail.draftDocuments && @@ -43,9 +46,17 @@ export const draftDocumentViewerHelper = ( }; } - const documentRequiresSignature = EVENT_CODES_REQUIRING_SIGNATURE.includes( - formattedDocumentToDisplay.eventCode, - ); + const isInternalUser = applicationContext + .getUtilities() + .isInternalUser(user.role); + + const isDraftStampOrder = + formattedDocumentToDisplay.eventCode === GENERIC_ORDER_EVENT_CODE && + formattedDocumentToDisplay.stampData?.disposition; + + const isStatusReportOrder = Object.values( + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions, + ).includes(formattedDocumentToDisplay?.draftOrderState?.orderType); const isNotice = NOTICE_EVENT_CODES.includes( formattedDocumentToDisplay.eventCode, @@ -54,63 +65,63 @@ export const draftDocumentViewerHelper = ( const isStipulatedDecision = formattedDocumentToDisplay.eventCode === STIPULATED_DECISION_EVENT_CODE; - const documentIsSigned = !!formattedDocumentToDisplay.signedAt; + const requiresSignature = EVENT_CODES_REQUIRING_SIGNATURE.includes( + formattedDocumentToDisplay.eventCode, + ); + const isSigned = !!formattedDocumentToDisplay.signedAt; + + // begin draft document-specific variables const createdByLabel = formattedDocumentToDisplay.filedBy ? `Created by ${formattedDocumentToDisplay.filedBy}` : ''; + // end draft document-specific variables - const isInternalUser = applicationContext - .getUtilities() - .isInternalUser(user.role); - - const hasDocketEntryPermission = permissions.CREATE_ORDER_DOCKET_ENTRY; - - const showAddDocketEntryButtonForRole = hasDocketEntryPermission; const showEditButtonForRole = isInternalUser; - const showApplyRemoveSignatureButtonForRole = isInternalUser; + const showEditButtonSigned = isStatusReportOrder + ? permissions.STATUS_REPORT_ORDER && isSigned + : showEditButtonForRole && + isSigned && + !isNotice && + !isDraftStampOrder && + !isStipulatedDecision; + const showEditButtonNotSigned = isStatusReportOrder + ? permissions.STATUS_REPORT_ORDER && !isSigned + : showEditButtonForRole && (!isSigned || isNotice); + + const showAddDocketEntryButtonForDocument = isSigned || !requiresSignature; + const showAddDocketEntryButton = + permissions.CREATE_ORDER_DOCKET_ENTRY && + showAddDocketEntryButtonForDocument; + + const showApplySignatureButtonForRole = isInternalUser; + const showApplySignatureButtonForDocument = !isSigned; + const showApplySignatureButton = + showApplySignatureButtonForRole && showApplySignatureButtonForDocument; - const isDraftStampOrder = - formattedDocumentToDisplay.eventCode === GENERIC_ORDER_EVENT_CODE && - formattedDocumentToDisplay.stampData?.disposition; - - const showEditButtonSigned = - showEditButtonForRole && - documentIsSigned && - !isNotice && - !isStipulatedDecision && + const showApplyRemoveSignatureButtonForRole = isInternalUser; + const showRemoveSignatureButtonForDocument = + isSigned && !isNotice && !isStipulatedDecision; + const showRemoveSignatureButton = + showApplyRemoveSignatureButtonForRole && + showRemoveSignatureButtonForDocument && !isDraftStampOrder; - const showAddDocketEntryButtonForDocument = - documentIsSigned || - !EVENT_CODES_REQUIRING_SIGNATURE.includes( - formattedDocumentToDisplay.eventCode, - ); - - const showApplySignatureButtonForDocument = !documentIsSigned; - const showRemoveSignatureButtonForDocument = - documentIsSigned && !isNotice && !isStipulatedDecision; + const showDocumentNotSignedAlert = requiresSignature && !isSigned; - const showDocumentNotSignedAlert = - documentRequiresSignature && !documentIsSigned; + const addDocketEntryLink = `/case-detail/${caseDetail.docketNumber}/documents/${viewerDraftDocumentToDisplayDocketEntryId}/add-court-issued-docket-entry`; + const applySignatureLink = `/case-detail/${caseDetail.docketNumber}/edit-order/${viewerDraftDocumentToDisplayDocketEntryId}/sign`; return { - addDocketEntryLink: `/case-detail/${caseDetail.docketNumber}/documents/${viewerDraftDocumentToDisplayDocketEntryId}/add-court-issued-docket-entry`, - applySignatureLink: `/case-detail/${caseDetail.docketNumber}/edit-order/${viewerDraftDocumentToDisplayDocketEntryId}/sign`, + addDocketEntryLink, + applySignatureLink, createdByLabel, documentTitle: formattedDocumentToDisplay.documentTitle, - showAddDocketEntryButton: - showAddDocketEntryButtonForRole && showAddDocketEntryButtonForDocument, - showApplySignatureButton: - showApplyRemoveSignatureButtonForRole && - showApplySignatureButtonForDocument, + showAddDocketEntryButton, + showApplySignatureButton, showDocumentNotSignedAlert, - showEditButtonNotSigned: - showEditButtonForRole && (!documentIsSigned || isNotice), + showEditButtonNotSigned, showEditButtonSigned, - showRemoveSignatureButton: - showApplyRemoveSignatureButtonForRole && - showRemoveSignatureButtonForDocument && - !isDraftStampOrder, + showRemoveSignatureButton, }; }; diff --git a/web-client/src/presenter/computeds/fileUploadStatusHelper.ts b/web-client/src/presenter/computeds/fileUploadStatusHelper.ts index 4d27d3ed83c..39a019104bf 100644 --- a/web-client/src/presenter/computeds/fileUploadStatusHelper.ts +++ b/web-client/src/presenter/computeds/fileUploadStatusHelper.ts @@ -15,9 +15,6 @@ export const fileUploadStatusHelper = (get: Get): any => { ); const shouldThrottle = !get(state.fileUploadProgress.noThrottle); // results WILL be throttled unless explicitly set to false - const isCancelable = !!( - Number.isFinite(timeRemaining) && percentComplete < 100 - ); let statusMessage; if (percentComplete === 100) { @@ -39,7 +36,6 @@ export const fileUploadStatusHelper = (get: Get): any => { } return { - isCancelable, isHavingSystemIssues, statusMessage: shouldThrottle ? throttledStatus(statusMessage) diff --git a/web-client/src/presenter/computeds/messageDocumentHelper.test.ts b/web-client/src/presenter/computeds/messageDocumentHelper.test.ts index 5f7029b23d4..b9c6d31ee77 100644 --- a/web-client/src/presenter/computeds/messageDocumentHelper.test.ts +++ b/web-client/src/presenter/computeds/messageDocumentHelper.test.ts @@ -3,6 +3,7 @@ import { CASE_STATUS_TYPES, INITIAL_DOCUMENT_TYPES, + STATUS_REPORT_ORDER_OPTIONS, } from '../../../../shared/src/business/entities/EntityConstants'; import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; import { @@ -180,6 +181,7 @@ describe('messageDocumentHelper', () => { { correspondenceId: '567', documentTitle: 'Test Correspondence', + isDraft: true, }, ], }, @@ -406,6 +408,7 @@ describe('messageDocumentHelper', () => { { correspondenceId: '567', documentTitle: 'Test Correspondence', + isDraft: true, }, ], }, @@ -564,6 +567,104 @@ describe('messageDocumentHelper', () => { }); }); + it('should return showEditSigned true and showEditNotSigned false when document is signed and is a status report order and the user has permission', () => { + const result = runCompute(messageDocumentHelper, { + state: { + ...getBaseState(judgeUser), + caseDetail: { + ...baseCaseDetail, + docketEntries: [ + { + ...baseDocketEntry, + draftOrderState: { + orderType: + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + }, + eventCode: 'O', + signedAt: '2020-06-25T20:49:28.192Z', + }, + ], + }, + }, + }); + + expect(result.showEditButtonSigned).toEqual(true); + expect(result.showEditButtonNotSigned).toEqual(false); + }); + + it('should return showEditSigned false and showEditNotSigned true when document is not signed and is a status report order and the user has permission', () => { + const result = runCompute(messageDocumentHelper, { + state: { + ...getBaseState(judgeUser), + caseDetail: { + ...baseCaseDetail, + docketEntries: [ + { + ...baseDocketEntry, + draftOrderState: { + orderType: + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + }, + eventCode: 'O', + }, + ], + }, + }, + }); + + expect(result.showEditButtonSigned).toEqual(false); + expect(result.showEditButtonNotSigned).toEqual(true); + }); + + it('should return showEditSigned false and showEditNotSigned false when document is signed and is a status report order and the user does not have permission', () => { + const result = runCompute(messageDocumentHelper, { + state: { + ...getBaseState(docketClerkUser), + caseDetail: { + ...baseCaseDetail, + docketEntries: [ + { + ...baseDocketEntry, + draftOrderState: { + orderType: + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + }, + eventCode: 'O', + signedAt: '2020-06-25T20:49:28.192Z', + }, + ], + }, + }, + }); + + expect(result.showEditButtonSigned).toEqual(false); + expect(result.showEditButtonNotSigned).toEqual(false); + }); + + it('should return showEditSigned false and showEditNotSigned false when document is not signed and is a status report order and the user does not have permission', () => { + const result = runCompute(messageDocumentHelper, { + state: { + ...getBaseState(docketClerkUser), + caseDetail: { + ...baseCaseDetail, + docketEntries: [ + { + ...baseDocketEntry, + draftOrderState: { + orderType: + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions.statusReport, + }, + eventCode: 'O', + }, + ], + }, + }, + }); + + expect(result.showEditButtonSigned).toEqual(false); + expect(result.showEditButtonNotSigned).toEqual(false); + }); + describe('showEditCorrespondenceButton', () => { it('returns true for a correspondence document when the user has permission to edit', () => { const result = runCompute(messageDocumentHelper, { @@ -940,52 +1041,6 @@ describe('messageDocumentHelper', () => { }); }); - describe('editUrl', () => { - it('should return an editUrl for draft documents', () => { - const result = runCompute(messageDocumentHelper, { - state: { - ...getBaseState(petitionsClerkUser), - caseDetail: { - ...baseCaseDetail, - docketEntries: [ - { - ...baseDocketEntry, - documentType: 'Miscellaneous', - eventCode: 'MISC', - isDraft: true, - }, - ], - }, - }, - }); - - expect(result.editUrl).toBeTruthy(); - }); - - it('should return an editUrl as an empty string if the document is not found', () => { - const result = runCompute(messageDocumentHelper, { - state: { - ...getBaseState(petitionsClerkUser), - caseDetail: { - ...baseCaseDetail, - docketEntries: [ - { - ...baseDocketEntry, - documentType: 'Miscellaneous', - eventCode: 'MISC', - }, - ], - }, - messageViewerDocumentToDisplay: { - documentId: '234', - }, - }, - }); - - expect(result.editUrl).toEqual(''); - }); - }); - describe('showSignStipulatedDecisionButton', () => { it('should be true if the user is an internal user, the eventCode is PSDE, the PSDE is served, and the SDEC eventCode is not in the documents', () => { const result = runCompute(messageDocumentHelper, { @@ -1254,7 +1309,7 @@ describe('messageDocumentHelper', () => { expect(result.servePetitionLink).toEqual( `/case-detail/${baseCaseDetail.docketNumber}/petition-qc/${mockParentMessageId}`, ); - expect(result.signOrderLink).toEqual( + expect(result.applySignatureLink).toEqual( `/case-detail/${baseCaseDetail.docketNumber}/edit-order/${mockDocumentId}/sign/${mockParentMessageId}`, ); }); diff --git a/web-client/src/presenter/computeds/messageDocumentHelper.ts b/web-client/src/presenter/computeds/messageDocumentHelper.ts index 43f286e8edc..edf314fb938 100644 --- a/web-client/src/presenter/computeds/messageDocumentHelper.ts +++ b/web-client/src/presenter/computeds/messageDocumentHelper.ts @@ -1,23 +1,17 @@ /* eslint-disable complexity */ +import { ClientApplicationContext } from '@web-client/applicationContext'; +import { Get } from 'cerebral'; +import { STATUS_REPORT_ORDER_OPTIONS } from '@shared/business/entities/EntityConstants'; +import { state } from '@web-client/presenter/app.cerebral'; + import { DocketEntry } from '../../../../shared/src/business/entities/DocketEntry'; import { getShowNotServedForDocument } from './getShowNotServedForDocument'; -import { state } from '@web-client/presenter/app.cerebral'; -import { ClientApplicationContext } from '@web-client/applicationContext'; -import { Get } from 'cerebral'; export const messageDocumentHelper = ( get: Get, applicationContext: ClientApplicationContext, ): any => { - const viewerDocumentIdToDisplay = get( - state.messageViewerDocumentToDisplay.documentId, - ); - - if (!viewerDocumentIdToDisplay) { - return {}; - } - const { COURT_ISSUED_EVENT_CODES, EVENT_CODES_REQUIRING_SIGNATURE, @@ -26,6 +20,7 @@ export const messageDocumentHelper = ( NOTICE_EVENT_CODES, PROPOSED_STIPULATED_DECISION_EVENT_CODE, STAMPED_DOCUMENTS_ALLOWLIST, + STATUS_REPORT_ORDER_DOCUMENTS_ALLOWLIST, STIPULATED_DECISION_EVENT_CODE, } = applicationContext.getConstants(); const user = applicationContext.getCurrentUser(); @@ -33,97 +28,125 @@ export const messageDocumentHelper = ( const caseDetail = get(state.caseDetail); const parentMessageId = get(state.parentMessageId); + const viewerDocumentToDisplayDocumentId = get( + state.messageViewerDocumentToDisplay.documentId, + ); + + if (!viewerDocumentToDisplayDocumentId) { + return {}; + } + const canAllowDocumentServiceForCase = applicationContext .getUtilities() .canAllowDocumentServiceForCase(caseDetail); - const { docketEntries } = caseDetail; - + // We use getAttachmentDocumentById instead of filtering based on getFormattedCaseDetail + // (as we do in draftDocumentViewerHelper) to ensure we search over archived documents as well. const caseDocument = applicationContext.getUtilities().getAttachmentDocumentById({ caseDetail, - documentId: viewerDocumentIdToDisplay, + documentId: viewerDocumentToDisplayDocumentId, useArchived: true, }) || {}; - const isCorrespondence = !!caseDocument.correspondenceId; - - const documentRequiresSignature = EVENT_CODES_REQUIRING_SIGNATURE.includes( - caseDocument.eventCode, - ); - - const documentIsSigned = !!caseDocument.signedAt; - - const documentIsArchived = !!caseDocument.archived; - - const { draftDocuments } = applicationContext + const isInternalUser = applicationContext .getUtilities() - .formatCase(applicationContext, caseDetail); + .isInternalUser(user.role); - let editUrl = ''; - const formattedDocument = draftDocuments.find( - doc => doc.docketEntryId === viewerDocumentIdToDisplay, - ); + const isDraftStampOrder = + caseDocument.eventCode === GENERIC_ORDER_EVENT_CODE && + caseDocument.stampData?.disposition; - if (formattedDocument) { - ({ editUrl } = formattedDocument); - editUrl += `/${parentMessageId}`; - } + const isStatusReportOrder = Object.values( + STATUS_REPORT_ORDER_OPTIONS.orderTypeOptions, + ).includes(caseDocument?.draftOrderState?.orderType); const isNotice = NOTICE_EVENT_CODES.includes(caseDocument.eventCode); - const isPetitionDocument = - caseDocument.eventCode === INITIAL_DOCUMENT_TYPES.petition.eventCode; - const isStipulatedDecision = caseDocument.eventCode === STIPULATED_DECISION_EVENT_CODE; - const isInternalUser = applicationContext - .getUtilities() - .isInternalUser(user.role); + const requiresSignature = EVENT_CODES_REQUIRING_SIGNATURE.includes( + caseDocument.eventCode, + ); - const hasDocketEntryPermission = permissions.CREATE_ORDER_DOCKET_ENTRY; - const hasEditCorrespondencePermission = permissions.CASE_CORRESPONDENCE; + const isSigned = !!caseDocument.signedAt; + + const isCorrespondence = !!caseDocument.correspondenceId; + const isNonCorrespondenceDraft = caseDocument.isDraft && !isCorrespondence; + const isArchived = !!caseDocument.archived; + const isPetitionDocument = + caseDocument.eventCode === INITIAL_DOCUMENT_TYPES.petition.eventCode; const showEditButtonForRole = isInternalUser; - const showApplyRemoveSignatureButtonForRole = isInternalUser; + const showEditButtonForDocument = + isNonCorrespondenceDraft && !isStipulatedDecision; + const showEditButtonSigned = isStatusReportOrder + ? permissions.STATUS_REPORT_ORDER && isSigned + : showEditButtonForRole && + showEditButtonForDocument && + isSigned && + !isNotice && + !isDraftStampOrder; + const showEditButtonNotSigned = isStatusReportOrder + ? permissions.STATUS_REPORT_ORDER && !isSigned + : showEditButtonForRole && + showEditButtonForDocument && + (!isSigned || isNotice); + const showAddDocumentEntryButtonForRole = + permissions.CREATE_ORDER_DOCKET_ENTRY; + const showAddDocketEntryButtonForDocument = isSigned || !requiresSignature; const showAddDocketEntryButton = - hasDocketEntryPermission && - !isCorrespondence && - caseDocument.isDraft && - (documentIsSigned || !documentRequiresSignature); + showAddDocumentEntryButtonForRole && + showAddDocketEntryButtonForDocument && + isNonCorrespondenceDraft; + + const showApplySignatureButtonForRole = isInternalUser; const showApplySignatureButtonForDocument = - !isCorrespondence && !documentIsSigned && caseDocument.isDraft; - const showEditButtonForDocument = - caseDocument.isDraft && !isCorrespondence && !isStipulatedDecision; - const isDraftStampOrder = - caseDocument.eventCode === GENERIC_ORDER_EVENT_CODE && - caseDocument.stampData?.disposition; + !isSigned && isNonCorrespondenceDraft; + const showApplySignatureButton = + showApplySignatureButtonForRole && showApplySignatureButtonForDocument; - const showEditButtonSigned = - showEditButtonForRole && - showEditButtonForDocument && - documentIsSigned && - !isNotice && - !isDraftStampOrder; + const showApplyRemoveSignatureButtonForRole = isInternalUser; const showRemoveSignatureButtonForDocument = - documentIsSigned && - caseDocument.isDraft && - !isNotice && - !isStipulatedDecision; - const showEditButtonForCorrespondenceDocument = - isCorrespondence && hasEditCorrespondencePermission; + isSigned && !isNotice && !isStipulatedDecision && caseDocument.isDraft; + const showRemoveSignatureButton = + showApplyRemoveSignatureButtonForRole && + showRemoveSignatureButtonForDocument && + !isDraftStampOrder; const showDocumentNotSignedAlert = - documentRequiresSignature && !documentIsSigned && !documentIsArchived; + requiresSignature && !isSigned && !isArchived; + // It seems like we should be able to get formattedDocumentToDisplay like we do in draftDocumentViewerHelper + // to avoid the duplication with caseDocument and formattedDocument in this file. However, we are using + // slightly different properties to pull up caseDocument and formattedDocument. This may be unnecessary. + // The variables affected by formattedDocument are showApplyStampButton and showStatusReportOrderButton. + const { draftDocuments } = applicationContext + .getUtilities() + .formatCase(applicationContext, caseDetail); + const formattedDocument = draftDocuments.find( + doc => doc.docketEntryId === viewerDocumentToDisplayDocumentId, + ); const showNotServed = getShowNotServedForDocument({ caseDetail, docketEntryId: caseDocument.docketEntryId, draftDocuments, }); + const showApplyStampButton = + permissions.STAMP_MOTION && + (STAMPED_DOCUMENTS_ALLOWLIST.includes(caseDocument.eventCode) || + STAMPED_DOCUMENTS_ALLOWLIST.includes(formattedDocument?.eventCode)); + + const showStatusReportOrderButton = + permissions.STATUS_REPORT_ORDER && + (STATUS_REPORT_ORDER_DOCUMENTS_ALLOWLIST.includes(caseDocument.eventCode) || + STATUS_REPORT_ORDER_DOCUMENTS_ALLOWLIST.includes( + formattedDocument?.eventCode, + )); + const isCourtIssuedDocument = COURT_ISSUED_EVENT_CODES.map( ({ eventCode }) => eventCode, ).includes(caseDocument.eventCode); @@ -142,9 +165,9 @@ export const messageDocumentHelper = ( permissions.SERVE_DOCUMENT; const showServiceWarning = - !isPetitionDocument && !canAllowDocumentServiceForCase && showNotServed && + !isPetitionDocument && permissions.SERVE_DOCUMENT; const showServePetitionButton = @@ -154,45 +177,49 @@ export const messageDocumentHelper = ( isInternalUser && caseDocument.eventCode === PROPOSED_STIPULATED_DECISION_EVENT_CODE && DocketEntry.isServed(caseDocument) && - !docketEntries.find( + !caseDetail.docketEntries.find( d => d.eventCode === STIPULATED_DECISION_EVENT_CODE && !d.archived, ); - const showApplyStampButton = - permissions.STAMP_MOTION && - (STAMPED_DOCUMENTS_ALLOWLIST.includes(caseDocument.eventCode) || - STAMPED_DOCUMENTS_ALLOWLIST.includes(formattedDocument?.eventCode)); + const showEditButtonForCorrespondenceDocument = + isCorrespondence && permissions.CASE_CORRESPONDENCE; + const showEditCorrespondenceButton = + showEditButtonForRole && showEditButtonForCorrespondenceDocument; + + const addDocketEntryLink = `/case-detail/${caseDetail.docketNumber}/documents/${viewerDocumentToDisplayDocumentId}/add-court-issued-docket-entry/${parentMessageId}`; + const applySignatureLink = `/case-detail/${caseDetail.docketNumber}/edit-order/${viewerDocumentToDisplayDocumentId}/sign/${parentMessageId}`; + const applyStampFromMessagesLink = `/messages/${caseDetail.docketNumber}/message-detail/${parentMessageId}/${viewerDocumentToDisplayDocumentId}/apply-stamp`; + const editCorrespondenceLink = `/case-detail/${caseDetail.docketNumber}/edit-correspondence/${viewerDocumentToDisplayDocumentId}/${parentMessageId}`; + const messageDetailLink = `/messages/${caseDetail.docketNumber}/message-detail/${parentMessageId}`; + const servePetitionLink = `/case-detail/${caseDetail.docketNumber}/petition-qc/${parentMessageId}`; + const statusReportOrderFromMessagesLink = `/messages/${caseDetail.docketNumber}/message-detail/${parentMessageId}/${viewerDocumentToDisplayDocumentId}/status-report-order-create`; return { - addDocketEntryLink: `/case-detail/${caseDetail.docketNumber}/documents/${viewerDocumentIdToDisplay}/add-court-issued-docket-entry/${parentMessageId}`, - applyStampFromMessagesLink: `/messages/${caseDetail.docketNumber}/message-detail/${parentMessageId}/${viewerDocumentIdToDisplay}/apply-stamp`, - archived: documentIsArchived, - editCorrespondenceLink: `/case-detail/${caseDetail.docketNumber}/edit-correspondence/${viewerDocumentIdToDisplay}/${parentMessageId}`, - editUrl, - messageDetailLink: `/messages/${caseDetail.docketNumber}/message-detail/${parentMessageId}`, - servePetitionLink: `/case-detail/${caseDetail.docketNumber}/petition-qc/${parentMessageId}`, + addDocketEntryLink, + applySignatureLink, + applyStampFromMessagesLink, + archived: isArchived, + docketEntryId: caseDocument.docketEntryId, + documentType: caseDocument.documentType, + editCorrespondenceLink, + filingDate: caseDocument.filingDate, + index: caseDocument.index, + messageDetailLink, + servePetitionLink, showAddDocketEntryButton, - showApplySignatureButton: - showApplyRemoveSignatureButtonForRole && - showApplySignatureButtonForDocument, + showApplySignatureButton, showApplyStampButton, showDocumentNotSignedAlert, - showEditButtonNotSigned: - showEditButtonForRole && - showEditButtonForDocument && - (!documentIsSigned || isNotice), + showEditButtonNotSigned, showEditButtonSigned, - showEditCorrespondenceButton: - showEditButtonForRole && showEditButtonForCorrespondenceDocument, - showRemoveSignatureButton: - showApplyRemoveSignatureButtonForRole && - showRemoveSignatureButtonForDocument && - !isDraftStampOrder, + showEditCorrespondenceButton, + showRemoveSignatureButton, showServeCourtIssuedDocumentButton, showServePaperFiledDocumentButton, showServePetitionButton, showServiceWarning, showSignStipulatedDecisionButton, - signOrderLink: `/case-detail/${caseDetail.docketNumber}/edit-order/${viewerDocumentIdToDisplay}/sign/${parentMessageId}`, + showStatusReportOrderButton, + statusReportOrderFromMessagesLink, }; }; diff --git a/web-client/src/presenter/computeds/showContactsHelperUpdated.ts b/web-client/src/presenter/computeds/showContactsHelperUpdated.ts index f152350e580..d835948861c 100644 --- a/web-client/src/presenter/computeds/showContactsHelperUpdated.ts +++ b/web-client/src/presenter/computeds/showContactsHelperUpdated.ts @@ -39,11 +39,13 @@ function getShowContactPrimary(partyType, PARTY_TYPES, filingType) { filingType === 'Myself' ); } + function getShowContactSecondary(partyType, PARTY_TYPES, props) { const isContactSecondaryPartyType = [ PARTY_TYPES.petitionerDeceasedSpouse, PARTY_TYPES.petitionerSpouse, ].includes(partyType); + if (!isContactSecondaryPartyType) return false; if (props.key !== 'isSpouseDeceased') return false; if (props.value !== 'Yes') return false; diff --git a/web-client/src/presenter/computeds/statusReportOrderHelper.test.ts b/web-client/src/presenter/computeds/statusReportOrderHelper.test.ts new file mode 100644 index 00000000000..90e0513d05e --- /dev/null +++ b/web-client/src/presenter/computeds/statusReportOrderHelper.test.ts @@ -0,0 +1,101 @@ +import { FORMATS, formatNow } from '@shared/business/utilities/DateHandler'; +import { applicationContextForClient as applicationContext } from '@web-client/test/createClientTestApplicationContext'; +import { runCompute } from '@web-client/presenter/test.cerebral'; +import { statusReportOrderHelper as statusReportOrderHelperComputed } from './statusReportOrderHelper'; +import { withAppContextDecorator } from '../../withAppContext'; + +const statusReportOrderHelper = withAppContextDecorator( + statusReportOrderHelperComputed, + applicationContext, +); +const today = formatNow(FORMATS.YYYYMMDD); +const isLeadCase = false; +const docketNumber = '107-19'; +const leadDocketNumber = '108-20'; + +describe('status report order helper', () => { + it('should be lead case and have min date today or later when docket number and lead docket number match', () => { + const result = runCompute(statusReportOrderHelper, { + state: { + caseDetail: { + docketNumber, + leadDocketNumber: docketNumber, + }, + validationErrors: {}, + }, + }); + expect(result).toEqual({ + dueDateErrorClass: 'status-report-order-form-group', + dueDateErrorText: undefined, + isLeadCase: true, + jurisdictionErrorClass: 'status-report-order-form-group', + jurisdictionErrorText: undefined, + minDate: today, + }); + }); + + it('should not be lead case and have min date today or later when docket number and lead docket number do not match', () => { + const result = runCompute(statusReportOrderHelper, { + state: { + caseDetail: { + docketNumber, + leadDocketNumber, + }, + validationErrors: {}, + }, + }); + expect(result).toEqual({ + dueDateErrorClass: 'status-report-order-form-group', + dueDateErrorText: undefined, + isLeadCase, + jurisdictionErrorClass: 'status-report-order-form-group', + jurisdictionErrorText: undefined, + minDate: today, + }); + }); + + it('should show "Select due date" and "Select jurisdiction" when validation errors are present for stipulated decision', () => { + const result = runCompute(statusReportOrderHelper, { + state: { + caseDetail: { + docketNumber, + leadDocketNumber, + }, + validationErrors: { + dueDate: 'stipulated decision', + jurisdiction: 'an error occurred', + }, + }, + }); + expect(result).toEqual({ + dueDateErrorClass: 'status-report-order-form-group-error', + dueDateErrorText: 'Select due date', + isLeadCase, + jurisdictionErrorClass: 'status-report-order-form-group-error', + jurisdictionErrorText: 'Select jurisdiction', + minDate: today, + }); + }); + + it('should pass through error message for due date when validation errors are present and it is not a stipulated decision', () => { + const result = runCompute(statusReportOrderHelper, { + state: { + caseDetail: { + docketNumber, + leadDocketNumber, + }, + validationErrors: { + dueDate: 'an error occurred', + }, + }, + }); + expect(result).toEqual({ + dueDateErrorClass: 'status-report-order-form-group-error', + dueDateErrorText: 'an error occurred', + isLeadCase, + jurisdictionErrorClass: 'status-report-order-form-group', + jurisdictionErrorText: undefined, + minDate: today, + }); + }); +}); diff --git a/web-client/src/presenter/computeds/statusReportOrderHelper.ts b/web-client/src/presenter/computeds/statusReportOrderHelper.ts new file mode 100644 index 00000000000..3a19548b382 --- /dev/null +++ b/web-client/src/presenter/computeds/statusReportOrderHelper.ts @@ -0,0 +1,55 @@ +import { ClientApplicationContext } from '@web-client/applicationContext'; +import { Get } from 'cerebral'; +import { state } from '@web-client/presenter/app.cerebral'; + +export const statusReportOrderHelper = ( + get: Get, + applicationContext: ClientApplicationContext, +): { + dueDateErrorClass: string; + dueDateErrorText: string; + isLeadCase: boolean; + jurisdictionErrorClass: string; + jurisdictionErrorText: string; + minDate: string; +} => { + const caseDetail = get(state.caseDetail); + + const isLeadCase = caseDetail.leadDocketNumber === caseDetail.docketNumber; + + const { DATE_FORMATS } = applicationContext.getConstants(); + + const minDate = applicationContext + .getUtilities() + .formatNow(DATE_FORMATS.YYYYMMDD); + + const validationErrors = get(state.validationErrors); + + const customDueDateError = + validationErrors.dueDate && + validationErrors.dueDate.includes('stipulated decision'); + + const dueDateErrorText = customDueDateError + ? 'Select due date' + : validationErrors.dueDate; + + const jurisdictionErrorText = + validationErrors.jurisdiction && 'Select jurisdiction'; + + const dueDateErrorClass = !validationErrors.dueDate + ? 'status-report-order-form-group' + : 'status-report-order-form-group-error'; + + const jurisdictionErrorClass = !validationErrors.jurisdiction + ? 'status-report-order-form-group' + : 'status-report-order-form-group-error'; + + return { + dueDateErrorClass, + dueDateErrorText, + isLeadCase, + jurisdictionErrorClass, + jurisdictionErrorText, + minDate, + }; +}; diff --git a/web-client/src/presenter/computeds/validationHelper.test.ts b/web-client/src/presenter/computeds/validationHelper.test.ts new file mode 100644 index 00000000000..8b5f865d28f --- /dev/null +++ b/web-client/src/presenter/computeds/validationHelper.test.ts @@ -0,0 +1,84 @@ +import { collectInputElements } from '@web-client/presenter/computeds/validationHelper'; + +describe('validationHelper', () => { + const element1 = (window.document.createElement('input').id = + 'test-element') as unknown as HTMLElement; + const element2 = (window.document.createElement('input').id = + 'test-element2') as unknown as HTMLElement; + const element3 = (window.document.createElement('input').id = + 'test-element3') as unknown as HTMLElement; + + it('should return an array of elements needing focus due to errors', () => { + const errors = { + test1: 'This is error 1', + test2: 'This is error 2', + }; + const refs = { + current: { + test1: element1, + test2: element2, + test3: element3, + }, + }; + const elements = collectInputElements(errors, refs); + expect(elements).toEqual(['test-element', 'test-element2']); + }); + + it('should return an array of elements needing focus due to nested errors', () => { + const nestedErrors = { + nested: { + test2: 'This is another test error', + }, + test1: 'This is a test error', + test3: 'This is error 3', + }; + + const nestedRefs = { + current: { + 'nested.test2': element2, + test1: element1, + test3: element3, + }, + }; + + const nestedElements = collectInputElements(nestedErrors, nestedRefs); + expect(nestedElements).toEqual([ + 'test-element2', + 'test-element', + 'test-element3', + ]); + }); + + it('should return an array of elements needing focus with a specific custom function', () => { + const specificCustomFunction = ( + errorValue, + refs, + elementsToFocus, + errorKey, + ) => { + if ( + errorValue === 'Specific error' && + refs.current[errorKey.slice(0, -1)] + ) { + elementsToFocus.push(refs.current[errorKey.slice(0, -1)]); + } + }; + + const errors = { + test1: 'Specific error', + test2: 'Another error', + test3: 'Specific error', + }; + + const refs = { + current: { + test1: element1, + test2: element2, + test3: element3, + }, + }; + + const elements = collectInputElements(errors, refs, specificCustomFunction); + expect(elements).toEqual([element1, element3]); + }); +}); diff --git a/web-client/src/presenter/computeds/validationHelper.ts b/web-client/src/presenter/computeds/validationHelper.ts new file mode 100644 index 00000000000..61595a8e7e5 --- /dev/null +++ b/web-client/src/presenter/computeds/validationHelper.ts @@ -0,0 +1,31 @@ +import { MutableRefObject } from 'react'; + +export const collectInputElements = ( + errors: object, + refs: MutableRefObject<{ [key: string]: HTMLElement }>, + customFunction?: ( + errorValue: any, + customRefs: MutableRefObject<{ [key: string]: HTMLElement }>, + elementsToFocus: HTMLElement[], + errorKey: string, + ) => void, + prefix: string = '', +) => { + const elementsToFocus: HTMLElement[] = []; + + const formatErrors = (err, pre = '') => { + if (typeof err === 'object' && err !== null) { + for (const key in err) { + if (customFunction) + customFunction(err[key], refs, elementsToFocus, `${pre}${key}.`); + else if (typeof err[key] === 'object' && err[key] !== null) { + formatErrors(err[key], `${pre}${key}.`); + } else if (err[key] && refs.current[`${pre}${key}`]) { + elementsToFocus.push(refs.current[`${pre}${key}`]); + } + } + } + }; + formatErrors(errors, prefix); + return elementsToFocus; +}; diff --git a/web-client/src/presenter/presenter.ts b/web-client/src/presenter/presenter.ts index 5065a3ebbc8..b0c1626252b 100644 --- a/web-client/src/presenter/presenter.ts +++ b/web-client/src/presenter/presenter.ts @@ -42,7 +42,6 @@ import { canEditContactInformationSequence } from './sequences/canEditContactInf import { cancelAddDraftDocumentSequence } from './sequences/cancelAddDraftDocumentSequence'; import { cancelAddStatisticSequence } from './sequences/cancelAddStatisticSequence'; import { cancelAndNavigateToCorrespondenceSequence } from './sequences/cancelAndNavigateToCorrespondenceSequence'; -import { cancelFileUploadSequence } from './sequences/cancelFileUploadSequence'; import { cancelRemovePetitionerSequence } from './sequences/cancelRemovePetitionerSequence'; import { caseDetailPrimaryTabChangeSequence } from './sequences/caseDetailPrimaryTabChangeSequence'; import { caseInventoryReportLoadMoreSequence } from './sequences/caseInventoryReportLoadMoreSequence'; @@ -66,6 +65,7 @@ import { clearOptionalFieldsStampFormSequence } from './sequences/clearOptionalF import { clearPdfPreviewUrlSequence } from './sequences/clearPdfPreviewUrlSequence'; import { clearPreferredTrialCitySequence } from './sequences/clearPreferredTrialCitySequence'; import { clearSelectedWorkItemsSequence } from './sequences/clearSelectedWorkItemsSequence'; +import { clearStatusReportOrderFormSequence } from './sequences/StatusReportOrder/clearStatusReportOrderFormSequence'; import { clearViewerDocumentToDisplaySequence } from './sequences/clearViewerDocumentToDisplaySequence'; import { closeModalAndNavigateBackSequence } from './sequences/closeModalAndNavigateBackSequence'; import { closeModalAndNavigateSequence } from './sequences/closeModalAndNavigateSequence'; @@ -117,6 +117,7 @@ import { dismissModalSequence } from './sequences/dismissModalSequence'; import { dismissThirtyDayTrialAlertSequence } from './sequences/dismissThirtyDayTrialAlertSequence'; import { downloadCsvFileSequence } from '@web-client/presenter/sequences/downloadCsvFileSequence'; import { editCorrespondenceDocumentSequence } from './sequences/editCorrespondenceDocumentSequence'; +import { editUnsignedDraftDocumentSequence } from '@web-client/presenter/sequences/editUnsignedDraftDocumentSequence'; import { editUploadCourtIssuedDocumentSequence } from './sequences/editUploadCourtIssuedDocumentSequence'; import { exportCsvCustomCaseReportSequence } from '@web-client/presenter/sequences/exportCsvCustomCaseReportSequence'; import { exportPendingReportSequence } from '@web-client/presenter/sequences/exportPendingReportSequence'; @@ -206,6 +207,7 @@ import { gotoPrivacySequence } from './sequences/gotoPrivacySequence'; import { gotoReviewSavedPetitionSequence } from './sequences/gotoReviewSavedPetitionSequence'; import { gotoSignOrderSequence } from './sequences/gotoSignOrderSequence'; import { gotoStartCaseWizardSequence } from './sequences/gotoStartCaseWizardSequence'; +import { gotoStatusReportOrderSequence } from './sequences/StatusReportOrder/gotoStatusReportOrderSequence'; import { gotoStyleGuideSequence } from './sequences/gotoStyleGuideSequence'; import { gotoTrialSessionDetailSequence } from './sequences/gotoTrialSessionDetailSequence'; import { gotoTrialSessionPlanningReportSequence } from './sequences/gotoTrialSessionPlanningReportSequence'; @@ -241,6 +243,7 @@ import { navigateToPathAndSetRedirectUrlSequence } from './sequences/navigateToP import { navigateToPathSequence } from './sequences/navigateToPathSequence'; import { navigateToPrintPaperServiceSequence } from './sequences/navigateToPrintPaperServiceSequence'; import { navigateToPrintableCaseConfirmationSequence } from './sequences/navigateToPrintableCaseConfirmationSequence'; +import { navigateToStatusReportOrderSequence } from './sequences/StatusReportOrder/navigateToStatusReportOrderSequence'; import { notFoundErrorSequence } from './sequences/notFoundErrorSequence'; import { noticeGenerationCompleteSequence } from './sequences/noticeGenerationCompleteSequence'; import { onPractitionerInformationTabSelectSequence } from './sequences/onPractitionerInformationTabSelectSequence'; @@ -421,6 +424,7 @@ import { skipSigningOrderSequence } from './sequences/skipSigningOrderSequence'; import { sortTableSequence } from './sequences/sortTableSequence'; import { startRefreshIntervalSequence } from './sequences/startRefreshIntervalSequence'; import { startScanSequence } from './sequences/startScanSequence'; +import { statusReportOrderPdfPreviewSequence } from './sequences/StatusReportOrder/statusReportOrderPdfPreviewSequence'; import { strikeDocketEntrySequence } from './sequences/strikeDocketEntrySequence'; import { submitAddConsolidatedCaseSequence } from './sequences/submitAddConsolidatedCaseSequence'; import { submitAddDeficiencyStatisticsSequence } from './sequences/submitAddDeficiencyStatisticsSequence'; @@ -463,6 +467,7 @@ import { submitPractitionerBarNumberSearchSequence } from './sequences/submitPra import { submitPractitionerNameSearchSequence } from './sequences/submitPractitionerNameSearchSequence'; import { submitRemoveConsolidatedCasesSequence } from './sequences/submitRemoveConsolidatedCasesSequence'; import { submitStampMotionSequence } from './sequences/submitStampMotionSequence'; +import { submitStatusReportOrderSequence } from './sequences/StatusReportOrder/submitStatusReportOrderSequence'; import { submitTrialSessionSequence } from './sequences/submitTrialSessionSequence'; import { submitUpdateAddDocketNumbersToOrderSequence } from './sequences/submitUpdateAddDocketNumbersToOrderSequence'; import { submitUpdateCaseModalSequence } from './sequences/submitUpdateCaseModalSequence'; @@ -531,7 +536,6 @@ import { updateModalValueSequence } from './sequences/updateModalValueSequence'; import { updateOrderForDesignatingPlaceOfTrialSequence } from './sequences/updateOrderForDesignatingPlaceOfTrialSequence'; import { updatePaperServiceProgressSequence } from './sequences/updatePaperServiceProgressSequence'; import { updatePartyViewTabSequence } from './sequences/updatePartyViewTabSequence'; -import { updatePetitionFormValueSequence } from '@web-client/presenter/sequences/updatePetitionFormValueSequence'; import { updatePetitionPaymentFormValueSequence } from './sequences/updatePetitionPaymentFormValueSequence'; import { updateQcCompleteForTrialSequence } from './sequences/updateQcCompleteForTrialSequence'; import { updateScreenMetadataSequence } from './sequences/updateScreenMetadataSequence'; @@ -541,6 +545,7 @@ import { updateSessionMetadataSequence } from './sequences/updateSessionMetadata import { updateStartCaseFormValueSequence } from './sequences/updateStartCaseFormValueSequence'; import { updateStartCaseInternalPartyTypeSequence } from './sequences/updateStartCaseInternalPartyTypeSequence'; import { updateStatisticsFormValueSequence } from './sequences/updateStatisticsFormValueSequence'; +import { updateStatusReportOrderFormValueSequence } from './sequences/StatusReportOrder/updateStatusReportOrderFormValueSequence'; import { updateStepIndicatorSequence } from '@web-client/presenter/sequences/updateStepIndicatorSequence'; import { updateTrialSessionCompleteSequence } from './sequences/updateTrialSessionCompleteSequence'; import { updateTrialSessionFormDataSequence } from './sequences/updateTrialSessionFormDataSequence'; @@ -665,7 +670,6 @@ export const presenterSequences = { cancelAddStatisticSequence: cancelAddStatisticSequence as unknown as Function, cancelAndNavigateToCorrespondenceSequence: cancelAndNavigateToCorrespondenceSequence as unknown as Function, - cancelFileUploadSequence: cancelFileUploadSequence as unknown as Function, cancelRemovePetitionerSequence: cancelRemovePetitionerSequence as unknown as Function, caseDetailPrimaryTabChangeSequence: @@ -704,6 +708,7 @@ export const presenterSequences = { clearPreferredTrialCitySequence as unknown as Function, clearSelectedWorkItemsSequence: clearSelectedWorkItemsSequence as unknown as Function, + clearStatusReportOrderFormSequence, clearViewerDocumentToDisplaySequence: clearViewerDocumentToDisplaySequence as unknown as Function, closeModalAndNavigateBackSequence: @@ -791,6 +796,7 @@ export const presenterSequences = { downloadCsvFileSequence: downloadCsvFileSequence as unknown as Function, editCorrespondenceDocumentSequence: editCorrespondenceDocumentSequence as unknown as Function, + editUnsignedDraftDocumentSequence, editUploadCourtIssuedDocumentSequence: editUploadCourtIssuedDocumentSequence as unknown as Function, exportCsvCustomCaseReportSequence: @@ -938,6 +944,7 @@ export const presenterSequences = { gotoSignOrderSequence: gotoSignOrderSequence as unknown as Function, gotoStartCaseWizardSequence: gotoStartCaseWizardSequence as unknown as Function, + gotoStatusReportOrderSequence, gotoStyleGuideSequence: gotoStyleGuideSequence as unknown as Function, gotoTrialSessionDetailSequence: gotoTrialSessionDetailSequence as unknown as Function, @@ -982,8 +989,7 @@ export const presenterSequences = { navigateToCaseDetailWithDraftDocumentSequence: navigateToCaseDetailWithDraftDocumentSequence as unknown as Function, navigateToCreatePetitionerAccountSequence, - navigateToEditOrderSequence: - navigateToEditOrderSequence as unknown as Function, + navigateToEditOrderSequence, navigateToForgotPasswordSequence, navigateToLoginSequence, navigateToPathAndSetRedirectUrlSequence: @@ -993,6 +999,7 @@ export const presenterSequences = { navigateToPrintPaperServiceSequence as unknown as Function, navigateToPrintableCaseConfirmationSequence: navigateToPrintableCaseConfirmationSequence as unknown as Function, + navigateToStatusReportOrderSequence, notFoundErrorSequence: notFoundErrorSequence as unknown as Function, noticeGenerationCompleteSequence: noticeGenerationCompleteSequence as unknown as Function, @@ -1300,6 +1307,7 @@ export const presenterSequences = { startRefreshIntervalSequence: startRefreshIntervalSequence as unknown as Function, startScanSequence: startScanSequence as unknown as Function, + statusReportOrderPdfPreviewSequence, strikeDocketEntrySequence: strikeDocketEntrySequence as unknown as Function, submitAddConsolidatedCaseSequence: submitAddConsolidatedCaseSequence as unknown as Function, @@ -1375,6 +1383,7 @@ export const presenterSequences = { submitRemoveConsolidatedCasesSequence: submitRemoveConsolidatedCasesSequence as unknown as Function, submitStampMotionSequence: submitStampMotionSequence as unknown as Function, + submitStatusReportOrderSequence, submitTrialSessionSequence: submitTrialSessionSequence as unknown as Function, submitUpdateAddDocketNumbersToOrderSequence: submitUpdateAddDocketNumbersToOrderSequence as unknown as Function, @@ -1485,8 +1494,6 @@ export const presenterSequences = { updatePaperServiceProgressSequence: updatePaperServiceProgressSequence as unknown as Function, updatePartyViewTabSequence: updatePartyViewTabSequence as unknown as Function, - updatePetitionFormValueSequence: - updatePetitionFormValueSequence as unknown as Function, updatePetitionPaymentFormValueSequence: updatePetitionPaymentFormValueSequence as unknown as Function, updateQcCompleteForTrialSequence: @@ -1503,6 +1510,7 @@ export const presenterSequences = { updateStartCaseInternalPartyTypeSequence as unknown as Function, updateStatisticsFormValueSequence: updateStatisticsFormValueSequence as unknown as Function, + updateStatusReportOrderFormValueSequence, updateStepIndicatorSequence: updateStepIndicatorSequence as unknown as Function, updateTrialSessionCompleteSequence: diff --git a/web-client/src/presenter/sequences/StatusReportOrder/clearStatusReportOrderFormSequence.ts b/web-client/src/presenter/sequences/StatusReportOrder/clearStatusReportOrderFormSequence.ts new file mode 100644 index 00000000000..3b1bbba265d --- /dev/null +++ b/web-client/src/presenter/sequences/StatusReportOrder/clearStatusReportOrderFormSequence.ts @@ -0,0 +1,11 @@ +import { clearAlertsAction } from '../../actions/clearAlertsAction'; +import { clearErrorAlertsAction } from '../../actions/clearErrorAlertsAction'; +import { clearStatusReportOrderFormAction as clearStatusReportOrderFormAction } from '@web-client/presenter/actions/StatusReportOrder/clearStatusReportOrderFormAction'; +import { stopShowValidationAction } from '../../actions/stopShowValidationAction'; + +export const clearStatusReportOrderFormSequence = [ + stopShowValidationAction, + clearAlertsAction, + clearErrorAlertsAction, + clearStatusReportOrderFormAction, +] as unknown as () => void; diff --git a/web-client/src/presenter/sequences/StatusReportOrder/gotoStatusReportOrderSequence.ts b/web-client/src/presenter/sequences/StatusReportOrder/gotoStatusReportOrderSequence.ts new file mode 100644 index 00000000000..5e20d93c362 --- /dev/null +++ b/web-client/src/presenter/sequences/StatusReportOrder/gotoStatusReportOrderSequence.ts @@ -0,0 +1,52 @@ +import { clearPdfPreviewUrlAction } from '@web-client/presenter/actions/clearPdfPreviewUrlAction'; +import { clearStatusReportOrderFormAction } from '@web-client/presenter/actions/StatusReportOrder/clearStatusReportOrderFormAction'; +import { getCaseAction } from '../../actions/getCaseAction'; +import { getStatusReportOrderDocketNumbersToDisplayAction } from '@web-client/presenter/actions/StatusReportOrder/getStatusReportOrderDocketNumbersToDisplayAction'; +import { isEditStatusReportOrderAction } from '@web-client/presenter/actions/StatusReportOrder/isEditStatusReportOrderAction'; +import { setCaseAction } from '../../actions/setCaseAction'; +import { setDocketEntryIdAction } from '../../actions/setDocketEntryIdAction'; +import { setDocketEntrySelectedFromMessageAction } from '../../actions/setDocketEntrySelectedFromMessageAction'; +import { setDocumentToEditAction } from '@web-client/presenter/actions/setDocumentToEditAction'; +import { setEditStatusReportOrderFormAction } from '@web-client/presenter/actions/StatusReportOrder/setEditStatusReportOrderFormAction'; +import { setRedirectUrlAction } from '@web-client/presenter/actions/setRedirectUrlAction'; +import { setStatusReportOrderFormAction } from '@web-client/presenter/actions/StatusReportOrder/setStatusReportOrderFormAction'; +import { setupCurrentPageAction } from '../../actions/setupCurrentPageAction'; +import { shouldUnsetParentMessageIdAction } from '@web-client/presenter/actions/shouldUnsetParentMessageIdAction'; +import { statusReportOrderPdfPreviewSequence } from '@web-client/presenter/sequences/StatusReportOrder/statusReportOrderPdfPreviewSequence'; +import { unsetDocumentToEditAction } from '@web-client/presenter/actions/unsetDocumentToEditAction'; +import { unsetParentMessageIdAction } from '@web-client/presenter/actions/unsetParentMessageIdAction'; + +export const gotoStatusReportOrderSequence = [ + setupCurrentPageAction('Interstitial'), + getCaseAction, + setCaseAction, + setDocketEntryIdAction, + setDocketEntrySelectedFromMessageAction, + setRedirectUrlAction, + isEditStatusReportOrderAction, + { + create: [ + setStatusReportOrderFormAction, + unsetDocumentToEditAction, + clearPdfPreviewUrlAction, + clearStatusReportOrderFormAction, + ], + edit: [ + setDocumentToEditAction, + setStatusReportOrderFormAction, + setEditStatusReportOrderFormAction, + statusReportOrderPdfPreviewSequence, + ], + }, + shouldUnsetParentMessageIdAction, + { + no: [], + yes: [unsetParentMessageIdAction], + }, + getStatusReportOrderDocketNumbersToDisplayAction, + setupCurrentPageAction('StatusReportOrder'), +] as unknown as (props: { + docketEntryId: string; + docketNumber: string; + parentMessageId?: string; +}) => void; diff --git a/web-client/src/presenter/sequences/StatusReportOrder/navigateToStatusReportOrderSequence.ts b/web-client/src/presenter/sequences/StatusReportOrder/navigateToStatusReportOrderSequence.ts new file mode 100644 index 00000000000..4376c156049 --- /dev/null +++ b/web-client/src/presenter/sequences/StatusReportOrder/navigateToStatusReportOrderSequence.ts @@ -0,0 +1,13 @@ +import { formatStatusReportFilingDateAction } from '@web-client/presenter/actions/StatusReportOrder/formatStatusReportFilingDateAction'; +import { navigateToPathAction } from '@web-client/presenter/actions/navigateToPathAction'; +import { setStatusReportOrderPathAction } from '@web-client/presenter/actions/StatusReportOrder/setStatusReportOrderPathAction'; + +export const navigateToStatusReportOrderSequence = [ + formatStatusReportFilingDateAction, + setStatusReportOrderPathAction, + navigateToPathAction, +] as unknown as (props: { + statusReportFilingDate: string; + statusReportIndex: number; + path: string; +}) => void; diff --git a/web-client/src/presenter/sequences/StatusReportOrder/statusReportOrderPdfPreviewSequence.ts b/web-client/src/presenter/sequences/StatusReportOrder/statusReportOrderPdfPreviewSequence.ts new file mode 100644 index 00000000000..8d1db9e5394 --- /dev/null +++ b/web-client/src/presenter/sequences/StatusReportOrder/statusReportOrderPdfPreviewSequence.ts @@ -0,0 +1,21 @@ +import { clearPdfPreviewUrlAction } from '../../actions/CourtIssuedOrder/clearPdfPreviewUrlAction'; +import { createOrderAction } from '../../actions/CourtIssuedOrder/createOrderAction'; +import { getPdfFromUrlAction } from '../../actions/CourtIssuedOrder/getPdfFromUrlAction'; +import { getStatusReportOrderPdfUrlAction } from '../../actions/StatusReportOrder/getStatusReportOrderPdfUrlAction'; +import { prepareStatusReportOrderAction } from '../../actions/StatusReportOrder/prepareStatusReportOrderAction'; +import { setMetadataAsPristineAction } from '../../actions/setMetadataAsPristineAction'; +import { setPdfFileAction } from '../../actions/CourtIssuedOrder/setPdfFileAction'; +import { setPdfPreviewUrlAction } from '../../actions/CourtIssuedOrder/setPdfPreviewUrlAction'; +import { showProgressSequenceDecorator } from '../../utilities/showProgressSequenceDecorator'; + +export const statusReportOrderPdfPreviewSequence = + showProgressSequenceDecorator([ + prepareStatusReportOrderAction, + createOrderAction, + clearPdfPreviewUrlAction, + getStatusReportOrderPdfUrlAction, + getPdfFromUrlAction, + setPdfFileAction, + setPdfPreviewUrlAction, + setMetadataAsPristineAction, + ]) as unknown as () => void; diff --git a/web-client/src/presenter/sequences/StatusReportOrder/submitStatusReportOrderSequence.ts b/web-client/src/presenter/sequences/StatusReportOrder/submitStatusReportOrderSequence.ts new file mode 100644 index 00000000000..7943c84dbd9 --- /dev/null +++ b/web-client/src/presenter/sequences/StatusReportOrder/submitStatusReportOrderSequence.ts @@ -0,0 +1,27 @@ +import { clearAlertsAction } from '@web-client/presenter/actions/clearAlertsAction'; +import { navigateToPathAction } from '@web-client/presenter/actions/navigateToPathAction'; +import { prepareStatusReportOrderAction } from '../../actions/StatusReportOrder/prepareStatusReportOrderAction'; +import { setAlertErrorAction } from '@web-client/presenter/actions/setAlertErrorAction'; +import { setValidationAlertErrorsAction } from '@web-client/presenter/actions/setValidationAlertErrorsAction'; +import { setValidationErrorsAction } from '../../actions/setValidationErrorsAction'; +import { showProgressSequenceDecorator } from '../../utilities/showProgressSequenceDecorator'; +import { submitCourtIssuedOrderSequence } from '@web-client/presenter/sequences/submitCourtIssuedOrderSequence'; +import { validateStatusReportOrderFormAction } from '../../actions/StatusReportOrder/validateStatusReportOrderFormAction'; + +export const submitStatusReportOrderSequence = [ + showProgressSequenceDecorator([ + clearAlertsAction, + validateStatusReportOrderFormAction, + { + error: [setValidationErrorsAction, setValidationAlertErrorsAction], + success: [ + prepareStatusReportOrderAction, + submitCourtIssuedOrderSequence, + { + error: [setAlertErrorAction], + success: [navigateToPathAction], + }, + ], + }, + ]), +] as unknown as () => void; diff --git a/web-client/src/presenter/sequences/StatusReportOrder/updateStatusReportOrderFormValueSequence.ts b/web-client/src/presenter/sequences/StatusReportOrder/updateStatusReportOrderFormValueSequence.ts new file mode 100644 index 00000000000..9c8bb8b803c --- /dev/null +++ b/web-client/src/presenter/sequences/StatusReportOrder/updateStatusReportOrderFormValueSequence.ts @@ -0,0 +1,6 @@ +import { clearJurisdictionRadioAction } from '../../actions/StatusReportOrder/clearJurisdictionRadioAction'; +import { setFormValueAction } from '../../actions/setFormValueAction'; +export const updateStatusReportOrderFormValueSequence = [ + setFormValueAction, + clearJurisdictionRadioAction, +] as unknown as (props: { key: string; value: string | boolean }) => void; diff --git a/web-client/src/presenter/sequences/cancelFileUploadSequence.ts b/web-client/src/presenter/sequences/cancelFileUploadSequence.ts deleted file mode 100644 index de99ebd2be0..00000000000 --- a/web-client/src/presenter/sequences/cancelFileUploadSequence.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { cancelUploadsAction } from '../actions/cancelUploadsAction'; -import { clearModalAction } from '../actions/clearModalAction'; -import { setupCurrentPageAction } from '../actions/setupCurrentPageAction'; - -export const cancelFileUploadSequence = [ - setupCurrentPageAction('Interstitial'), - cancelUploadsAction, - clearModalAction, -]; diff --git a/web-client/src/presenter/sequences/convertHtml2PdfSequence.ts b/web-client/src/presenter/sequences/convertHtml2PdfSequence.ts index f53dffa2092..437567c0244 100644 --- a/web-client/src/presenter/sequences/convertHtml2PdfSequence.ts +++ b/web-client/src/presenter/sequences/convertHtml2PdfSequence.ts @@ -3,6 +3,8 @@ import { createOrderAction } from '../actions/CourtIssuedOrder/createOrderAction import { getCaseAction } from '../actions/getCaseAction'; import { getPdfFromUrlAction } from '../actions/CourtIssuedOrder/getPdfFromUrlAction'; import { getPdfUrlAction } from '../actions/CourtIssuedOrder/getPdfUrlAction'; +import { getStatusReportOrderPdfUrlAction } from '../actions/StatusReportOrder/getStatusReportOrderPdfUrlAction'; +import { isStatusReportOrderAction } from '../actions/StatusReportOrder/isStatusReportOrderAction'; import { setCaseAction } from '../actions/setCaseAction'; import { setMetadataAsPristineAction } from '../actions/setMetadataAsPristineAction'; import { setPdfFileAction } from '../actions/CourtIssuedOrder/setPdfFileAction'; @@ -14,7 +16,11 @@ export const convertHtml2PdfSequence = showProgressSequenceDecorator([ clearPdfPreviewUrlAction, getCaseAction, setCaseAction, - getPdfUrlAction, + isStatusReportOrderAction, + { + isNotStatusReportOrder: [getPdfUrlAction], + isStatusReportOrder: [getStatusReportOrderPdfUrlAction], + }, getPdfFromUrlAction, setPdfFileAction, setPdfPreviewUrlAction, diff --git a/web-client/src/presenter/sequences/editUnsignedDraftDocumentSequence.ts b/web-client/src/presenter/sequences/editUnsignedDraftDocumentSequence.ts new file mode 100644 index 00000000000..58179ade88e --- /dev/null +++ b/web-client/src/presenter/sequences/editUnsignedDraftDocumentSequence.ts @@ -0,0 +1,30 @@ +import { checkDocumentTypeAction } from '@web-client/presenter/actions/checkDocumentTypeAction'; +import { isStatusReportOrderAction } from '@web-client/presenter/actions/StatusReportOrder/isStatusReportOrderAction'; +import { navigateToPathAction } from '../actions/navigateToPathAction'; +import { setDocumentToEditAction } from '../actions/setDocumentToEditAction'; +import { setEditStatusReportOrderFormAction } from '@web-client/presenter/actions/StatusReportOrder/setEditStatusReportOrderFormAction'; +import { statusReportOrderPdfPreviewSequence } from '@web-client/presenter/sequences/StatusReportOrder/statusReportOrderPdfPreviewSequence'; + +export const editUnsignedDraftDocumentSequence = [ + checkDocumentTypeAction, + { + documentTypeMiscellaneous: [navigateToPathAction], + documentTypeOrder: [ + setDocumentToEditAction, + isStatusReportOrderAction, + { + isNotStatusReportOrder: [navigateToPathAction], + isStatusReportOrder: [ + setEditStatusReportOrderFormAction, + navigateToPathAction, + statusReportOrderPdfPreviewSequence, + ], + }, + ], + }, +] as unknown as (props: { + caseDetail: RawCase; + docketEntryIdToEdit: string; + documentType: string; + parentMessageId?: string; +}) => void; diff --git a/web-client/src/presenter/sequences/navigateToEditOrderSequence.ts b/web-client/src/presenter/sequences/navigateToEditOrderSequence.ts index 9b5cfabba8c..ef789646945 100644 --- a/web-client/src/presenter/sequences/navigateToEditOrderSequence.ts +++ b/web-client/src/presenter/sequences/navigateToEditOrderSequence.ts @@ -3,13 +3,16 @@ import { clearModalAction } from '../actions/clearModalAction'; import { getCaseAction } from '../actions/getCaseAction'; import { getDocumentContentsAction } from '../actions/getDocumentContentsAction'; import { getDocumentEditUrlAsPathAction } from '../actions/getDocumentEditUrlAsPathAction'; +import { isStatusReportOrderAction } from '@web-client/presenter/actions/StatusReportOrder/isStatusReportOrderAction'; import { navigateToPathAction } from '../actions/navigateToPathAction'; import { removeSignatureAction } from '../actions/removeSignatureAction'; import { setCaseAction } from '../actions/setCaseAction'; import { setDocumentToEditAction } from '../actions/setDocumentToEditAction'; +import { setEditStatusReportOrderFormAction } from '@web-client/presenter/actions/StatusReportOrder/setEditStatusReportOrderFormAction'; import { setFormFromDraftStateAction } from '../actions/setFormFromDraftStateAction'; import { setupConfirmWithPropsAction } from '../actions/setupConfirmWithPropsAction'; import { setupCurrentPageAction } from '../actions/setupCurrentPageAction'; +import { statusReportOrderPdfPreviewSequence } from '@web-client/presenter/sequences/StatusReportOrder/statusReportOrderPdfPreviewSequence'; import { stopShowValidationAction } from '../actions/stopShowValidationAction'; import { unsetDocumentToEditAction } from '../actions/unsetDocumentToEditAction'; @@ -26,6 +29,16 @@ export const navigateToEditOrderSequence = [ setFormFromDraftStateAction, setDocumentToEditAction, removeSignatureAction, - getDocumentEditUrlAsPathAction, - navigateToPathAction, -]; + isStatusReportOrderAction, + { + isNotStatusReportOrder: [ + getDocumentEditUrlAsPathAction, + navigateToPathAction, + ], + isStatusReportOrder: [ + setEditStatusReportOrderFormAction, + navigateToPathAction, + statusReportOrderPdfPreviewSequence, + ], + }, +] as unknown as () => void; diff --git a/web-client/src/presenter/sequences/petitionGenerationLiveValidationSequence.ts b/web-client/src/presenter/sequences/petitionGenerationLiveValidationSequence.ts index 89f0cd86115..bc0c55bc425 100644 --- a/web-client/src/presenter/sequences/petitionGenerationLiveValidationSequence.ts +++ b/web-client/src/presenter/sequences/petitionGenerationLiveValidationSequence.ts @@ -1,8 +1,8 @@ import { determineStepPathAction } from '@web-client/presenter/actions/determineStepPathAction'; -import { getStep1DataAction } from '@web-client/presenter/actions/getStep1DataAction'; -import { getStep2DataAction } from '@web-client/presenter/actions/getStep2DataAction'; -import { getStep3DataAction } from '@web-client/presenter/actions/getStep3DataAction'; -import { getStep4DataAction } from '@web-client/presenter/actions/getStep4DataAction'; +import { getCreatePetitionStep1DataAction } from '@web-client/presenter/actions/getCreatePetitionStep1DataAction'; +import { getCreatePetitionStep2DataAction } from '@web-client/presenter/actions/getCreatePetitionStep2DataAction'; +import { getCreatePetitionStep3DataAction } from '@web-client/presenter/actions/getCreatePetitionStep3DataAction'; +import { getCreatePetitionStep4DataAction } from '@web-client/presenter/actions/getCreatePetitionStep4DataAction'; import { setSingleValidationErrorAction } from '@web-client/presenter/actions/setSingleValidationErrorAction'; import { startShowValidationAction } from '@web-client/presenter/actions/startShowValidationAction'; import { validateUploadPetitionStep1Action } from '@web-client/presenter/actions/validateUploadPetitionStep1Action'; @@ -25,22 +25,22 @@ export const petitionGenerationLiveValidationSequence = [ determineStepPathAction, { step1: [ - getStep1DataAction, + getCreatePetitionStep1DataAction, validateUploadPetitionStep1Action, handleValidationErrorsRoute, ], step2: [ - getStep2DataAction, + getCreatePetitionStep2DataAction, validateUploadPetitionStep2Action, handleValidationErrorsRoute, ], step3: [ - getStep3DataAction, + getCreatePetitionStep3DataAction, validateUploadPetitionStep3Action, handleValidationErrorsRoute, ], step4: [ - getStep4DataAction, + getCreatePetitionStep4DataAction, validateUploadPetitionStep4Action, handleValidationErrorsRoute, ], diff --git a/web-client/src/presenter/sequences/submitCourtIssuedOrderSequence.ts b/web-client/src/presenter/sequences/submitCourtIssuedOrderSequence.ts index 8eca1f9706c..b7e295d3d84 100644 --- a/web-client/src/presenter/sequences/submitCourtIssuedOrderSequence.ts +++ b/web-client/src/presenter/sequences/submitCourtIssuedOrderSequence.ts @@ -8,6 +8,7 @@ import { getFileExternalDocumentAlertSuccessAction } from '../actions/FileDocume import { getShouldRedirectToSigningAction } from '../actions/getShouldRedirectToSigningAction'; import { isDocumentRequiringAppendedFormAction } from '../actions/CourtIssuedOrder/isDocumentRequiringAppendedFormAction'; import { isEditingOrderAction } from '../actions/CourtIssuedOrder/isEditingOrderAction'; +import { isStatusReportOrderAction } from '@web-client/presenter/actions/StatusReportOrder/isStatusReportOrderAction'; import { navigateToDraftDocumentsAction } from '../actions/navigateToDraftDocumentsAction'; import { navigateToSignOrderAction } from '../actions/navigateToSignOrderAction'; import { openFileUploadErrorModal } from '../actions/openFileUploadErrorModal'; @@ -51,38 +52,46 @@ const onFileUploadedSuccess = [ }, ]; -export const submitCourtIssuedOrderSequence = showProgressSequenceDecorator([ - clearAlertsAction, - startShowValidationAction, - validateCourtOrderAction, +const submitCourtIssuedOrder = showProgressSequenceDecorator([ + convertHtml2PdfSequence, + isEditingOrderAction, { - error: [setValidationErrorsAction, setValidationAlertErrorsAction], - success: showProgressSequenceDecorator([ - convertHtml2PdfSequence, - isEditingOrderAction, + no: [ + uploadOrderFileAction, { - no: [ - uploadOrderFileAction, - { - error: [openFileUploadErrorModal], - success: [onFileUploadedSuccess], - }, - ], - yes: [ - overwriteOrderFileAction, + error: [openFileUploadErrorModal], + success: [onFileUploadedSuccess], + }, + ], + yes: [ + overwriteOrderFileAction, + { + error: [openFileUploadErrorModal], + success: [ + isDocumentRequiringAppendedFormAction, { - error: [openFileUploadErrorModal], - success: [ - isDocumentRequiringAppendedFormAction, - { - no: [], - yes: [appendFormAndOverwriteOrderFileAction], - }, - onFileUploadedSuccess, - ], + no: [], + yes: [appendFormAndOverwriteOrderFileAction], }, + onFileUploadedSuccess, ], }, - ]), + ], + }, +]); + +export const submitCourtIssuedOrderSequence = showProgressSequenceDecorator([ + isStatusReportOrderAction, + { + isNotStatusReportOrder: [ + clearAlertsAction, + startShowValidationAction, + validateCourtOrderAction, + { + error: [setValidationErrorsAction, setValidationAlertErrorsAction], + success: submitCourtIssuedOrder, + }, + ], + isStatusReportOrder: [submitCourtIssuedOrder], }, ]); diff --git a/web-client/src/presenter/sequences/updateFormValueSequence.ts b/web-client/src/presenter/sequences/updateFormValueSequence.ts index 3f532dfacdd..7a818fe004d 100644 --- a/web-client/src/presenter/sequences/updateFormValueSequence.ts +++ b/web-client/src/presenter/sequences/updateFormValueSequence.ts @@ -1,3 +1,10 @@ import { setFormValueAction } from '../actions/setFormValueAction'; -export const updateFormValueSequence = [setFormValueAction]; +export const updateFormValueSequence = [ + setFormValueAction, +] as unknown as (props: { + index: number; + key: string; + value: any; + allowEmptyString?: boolean; +}) => void; diff --git a/web-client/src/presenter/sequences/updatePetitionFormValueSequence.ts b/web-client/src/presenter/sequences/updatePetitionFormValueSequence.ts deleted file mode 100644 index e7b46f2fc1b..00000000000 --- a/web-client/src/presenter/sequences/updatePetitionFormValueSequence.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { setPetitionFormValueAction } from '@web-client/presenter/actions/setPetitionFormValueAction'; -//TODO: type here instead of presenter.ts -export const updatePetitionFormValueSequence = [setPetitionFormValueAction]; diff --git a/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep1Sequence.ts b/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep1Sequence.ts index 991f9bcb656..85e12a7d661 100644 --- a/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep1Sequence.ts +++ b/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep1Sequence.ts @@ -1,5 +1,5 @@ import { clearAlertsAction } from '../actions/clearAlertsAction'; -import { getStep1DataAction } from '@web-client/presenter/actions/getStep1DataAction'; +import { getCreatePetitionStep1DataAction } from '@web-client/presenter/actions/getCreatePetitionStep1DataAction'; import { incrementCurrentStepIndicatorAction } from '@web-client/presenter/actions/incrementCurrentStepIndicatorAction'; import { setValidationErrorsAction } from '../actions/setValidationErrorsAction'; import { startShowValidationAction } from '../actions/startShowValidationAction'; @@ -8,7 +8,7 @@ import { validateUploadPetitionStep1Action } from '@web-client/presenter/actions export const updatedFilePetitionCompleteStep1Sequence = [ startShowValidationAction, - getStep1DataAction, + getCreatePetitionStep1DataAction, validateUploadPetitionStep1Action, { error: [setValidationErrorsAction], diff --git a/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep2Sequence.ts b/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep2Sequence.ts index 2ef645650d2..e1264bb3d8b 100644 --- a/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep2Sequence.ts +++ b/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep2Sequence.ts @@ -1,5 +1,6 @@ import { clearAlertsAction } from '../actions/clearAlertsAction'; -import { getStep2DataAction } from '@web-client/presenter/actions/getStep2DataAction'; +import { formatPetitionFactsAndReasonsAction } from '@web-client/presenter/actions/formatPetitionFactsAndReasonsAction'; +import { getCreatePetitionStep2DataAction } from '@web-client/presenter/actions/getCreatePetitionStep2DataAction'; import { incrementCurrentStepIndicatorAction } from '@web-client/presenter/actions/incrementCurrentStepIndicatorAction'; import { setValidationErrorsAction } from '../actions/setValidationErrorsAction'; import { startShowValidationAction } from '../actions/startShowValidationAction'; @@ -8,7 +9,8 @@ import { validateUploadPetitionStep2Action } from '@web-client/presenter/actions export const updatedFilePetitionCompleteStep2Sequence = [ startShowValidationAction, - getStep2DataAction, + formatPetitionFactsAndReasonsAction, + getCreatePetitionStep2DataAction, validateUploadPetitionStep2Action, { error: [setValidationErrorsAction], diff --git a/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep3Sequence.ts b/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep3Sequence.ts index a3433f739c0..462d9992077 100644 --- a/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep3Sequence.ts +++ b/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep3Sequence.ts @@ -1,5 +1,5 @@ import { clearAlertsAction } from '../actions/clearAlertsAction'; -import { getStep3DataAction } from '@web-client/presenter/actions/getStep3DataAction'; +import { getCreatePetitionStep3DataAction } from '@web-client/presenter/actions/getCreatePetitionStep3DataAction'; import { incrementCurrentStepIndicatorAction } from '@web-client/presenter/actions/incrementCurrentStepIndicatorAction'; import { setValidationErrorsAction } from '../actions/setValidationErrorsAction'; import { startShowValidationAction } from '../actions/startShowValidationAction'; @@ -8,7 +8,7 @@ import { validateUploadPetitionStep3Action } from '@web-client/presenter/actions export const updatedFilePetitionCompleteStep3Sequence = [ startShowValidationAction, - getStep3DataAction, + getCreatePetitionStep3DataAction, validateUploadPetitionStep3Action, { error: [setValidationErrorsAction], diff --git a/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep4Sequence.ts b/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep4Sequence.ts index 8a386733f04..a2b71e96d92 100644 --- a/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep4Sequence.ts +++ b/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep4Sequence.ts @@ -1,5 +1,5 @@ import { clearAlertsAction } from '../actions/clearAlertsAction'; -import { getStep4DataAction } from '@web-client/presenter/actions/getStep4DataAction'; +import { getCreatePetitionStep4DataAction } from '@web-client/presenter/actions/getCreatePetitionStep4DataAction'; import { incrementCurrentStepIndicatorAction } from '@web-client/presenter/actions/incrementCurrentStepIndicatorAction'; import { setValidationErrorsAction } from '../actions/setValidationErrorsAction'; import { startShowValidationAction } from '../actions/startShowValidationAction'; @@ -8,7 +8,7 @@ import { validateUploadPetitionStep4Action } from '@web-client/presenter/actions export const updatedFilePetitionCompleteStep4Sequence = [ startShowValidationAction, - getStep4DataAction, + getCreatePetitionStep4DataAction, validateUploadPetitionStep4Action, { error: [setValidationErrorsAction], diff --git a/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep5Sequence.ts b/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep5Sequence.ts index 36527c96476..27f64297c62 100644 --- a/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep5Sequence.ts +++ b/web-client/src/presenter/sequences/updatedFilePetitionCompleteStep5Sequence.ts @@ -1,11 +1,11 @@ import { clearAlertsAction } from '../actions/clearAlertsAction'; import { formatPetitionAction } from '@web-client/presenter/actions/formatPetitionAction'; import { generatePetitionPreviewPdfUrlAction } from '@web-client/presenter/actions/generatePetitionPreviewPdfUrlAction'; -import { getStep1DataAction } from '@web-client/presenter/actions/getStep1DataAction'; -import { getStep2DataAction } from '@web-client/presenter/actions/getStep2DataAction'; -import { getStep3DataAction } from '@web-client/presenter/actions/getStep3DataAction'; -import { getStep4DataAction } from '@web-client/presenter/actions/getStep4DataAction'; -import { getStep5DataAction } from '@web-client/presenter/actions/getStep5DataAction'; +import { getCreatePetitionStep1DataAction } from '@web-client/presenter/actions/getCreatePetitionStep1DataAction'; +import { getCreatePetitionStep2DataAction } from '@web-client/presenter/actions/getCreatePetitionStep2DataAction'; +import { getCreatePetitionStep3DataAction } from '@web-client/presenter/actions/getCreatePetitionStep3DataAction'; +import { getCreatePetitionStep4DataAction } from '@web-client/presenter/actions/getCreatePetitionStep4DataAction'; +import { getCreatePetitionStep5DataAction } from '@web-client/presenter/actions/getCreatePetitionStep5DataAction'; import { incrementCurrentStepIndicatorAction } from '@web-client/presenter/actions/incrementCurrentStepIndicatorAction'; import { setValidationErrorsAction } from '../actions/setValidationErrorsAction'; import { showProgressSequenceDecorator } from '@web-client/presenter/utilities/showProgressSequenceDecorator'; @@ -15,17 +15,17 @@ import { validateUploadPetitionStep5Action } from '@web-client/presenter/actions export const updatedFilePetitionCompleteStep5Sequence = [ startShowValidationAction, - getStep5DataAction, + getCreatePetitionStep5DataAction, validateUploadPetitionStep5Action, { error: [setValidationErrorsAction], success: showProgressSequenceDecorator([ clearAlertsAction, stopShowValidationAction, - getStep1DataAction, - getStep2DataAction, - getStep3DataAction, - getStep4DataAction, + getCreatePetitionStep1DataAction, + getCreatePetitionStep2DataAction, + getCreatePetitionStep3DataAction, + getCreatePetitionStep4DataAction, formatPetitionAction, generatePetitionPreviewPdfUrlAction, incrementCurrentStepIndicatorAction, diff --git a/web-client/src/presenter/sequences/validateUpdatedFilePetitionStep2Sequence.ts b/web-client/src/presenter/sequences/validateUpdatedFilePetitionStep2Sequence.ts index 073bcfaa497..5bbf5d2d861 100644 --- a/web-client/src/presenter/sequences/validateUpdatedFilePetitionStep2Sequence.ts +++ b/web-client/src/presenter/sequences/validateUpdatedFilePetitionStep2Sequence.ts @@ -1,5 +1,5 @@ import { clearAlertsAction } from '../actions/clearAlertsAction'; -import { getStep2DataAction } from '@web-client/presenter/actions/getStep2DataAction'; +import { getCreatePetitionStep2DataAction } from '@web-client/presenter/actions/getCreatePetitionStep2DataAction'; import { setValidationAlertErrorsAction } from '../actions/setValidationAlertErrorsAction'; import { setValidationErrorsAction } from '../actions/setValidationErrorsAction'; import { startShowValidationAction } from '../actions/startShowValidationAction'; @@ -8,7 +8,7 @@ import { validateUploadPetitionStep2Action } from '@web-client/presenter/actions export const validateUpdatedFilePetitionStep2Sequence = [ startShowValidationAction, - getStep2DataAction, + getCreatePetitionStep2DataAction, validateUploadPetitionStep2Action, { error: [setValidationErrorsAction, setValidationAlertErrorsAction], diff --git a/web-client/src/presenter/sequences/validateUpdatedFilePetitionStep5Sequence.ts b/web-client/src/presenter/sequences/validateUpdatedFilePetitionStep5Sequence.ts index 7601acaf5ba..a8f04ffef2f 100644 --- a/web-client/src/presenter/sequences/validateUpdatedFilePetitionStep5Sequence.ts +++ b/web-client/src/presenter/sequences/validateUpdatedFilePetitionStep5Sequence.ts @@ -1,5 +1,5 @@ import { clearAlertsAction } from '../actions/clearAlertsAction'; -import { getStep5DataAction } from '@web-client/presenter/actions/getStep5DataAction'; +import { getCreatePetitionStep5DataAction } from '@web-client/presenter/actions/getCreatePetitionStep5DataAction'; import { setValidationAlertErrorsAction } from '../actions/setValidationAlertErrorsAction'; import { setValidationErrorsAction } from '../actions/setValidationErrorsAction'; import { startShowValidationAction } from '../actions/startShowValidationAction'; @@ -8,7 +8,7 @@ import { validateUploadPetitionStep5Action } from '@web-client/presenter/actions export const validateUpdatedFilePetitionStep5Sequence = [ startShowValidationAction, - getStep5DataAction, + getCreatePetitionStep5DataAction, validateUploadPetitionStep5Action, { error: [setValidationErrorsAction, setValidationAlertErrorsAction], diff --git a/web-client/src/presenter/state.ts b/web-client/src/presenter/state.ts index ce8f7f76263..7934d399339 100644 --- a/web-client/src/presenter/state.ts +++ b/web-client/src/presenter/state.ts @@ -134,6 +134,7 @@ import { startCaseHelper } from './computeds/startCaseHelper'; import { startCaseInternalHelper } from './computeds/startCaseInternalHelper'; import { statisticsFormHelper } from './computeds/statisticsFormHelper'; import { statisticsHelper } from './computeds/statisticsHelper'; +import { statusReportOrderHelper } from './computeds/statusReportOrderHelper'; import { templateHelper } from './computeds/templateHelper'; import { trialCitiesHelper } from './computeds/trialCitiesHelper'; import { trialSessionDetailsHelper } from './computeds/trialSessionDetailsHelper'; @@ -517,6 +518,9 @@ export const computeds = { statisticsHelper: statisticsHelper as unknown as ReturnType< typeof statisticsHelper >, + statusReportOrderHelper: statusReportOrderHelper as unknown as ReturnType< + typeof statusReportOrderHelper + >, templateHelper: templateHelper as unknown as ReturnType< typeof templateHelper >, @@ -653,6 +657,7 @@ export const baseState = { customCaseReport: cloneDeep(initialCustomCaseReportState), docketEntryId: null, docketRecordIndex: 0, + documentToEdit: {} as any, documentsSelectedForDownload: [] as { docketEntryId: string }[], draftDocumentViewerDocketEntryId: null, featureFlags: undefined as unknown as { [key: string]: string }, @@ -727,6 +732,7 @@ export const baseState = { pdfsAppended: 0, totalPdfs: 0, }, + parentMessageId: undefined, pdfForSigning: { docketEntryId: null, nameForSigning: '', @@ -812,6 +818,11 @@ export const baseState = { showConfirmPassword: false, showPassword: false, showValidation: false, + statusReportOrder: { + docketNumbersToDisplay: [], + statusReportFilingDate: '', + statusReportIndex: 1, + }, stepIndicatorInfo: { currentStep: 0, steps: ['no steps defined yet'] }, submittedAndCavCases: { submittedAndCavCasesByJudge: [] as GetCasesByStatusAndByJudgeResponse[], @@ -827,16 +838,11 @@ export const baseState = { name: '', }, trialSessionWorkingCopy: cloneDeep(initialTrialSessionWorkingCopyState), - updatedFilePetitionStep2State: { - selectedFilingOption: undefined, - } as { - selectedFilingOption?: string; - }, user: null as any, userContactEditProgress: {} as { inProgress?: boolean }, users: [] as RawUser[], validationErrors: {} as Record, - viewerDocumentToDisplay: undefined, + viewerDocumentToDisplay: undefined as unknown as ViewerDocument, workItem: {}, workItemActions: {}, workItemMetadata: {}, @@ -863,3 +869,10 @@ export type CreateCaseIrsForm = { irsNoticeFileUrl?: string; cityAndStateIssuingOffice?: string; }; + +export type ViewerDocument = { + docketEntryId: string; + documentTitle?: string; // Should this be required? + filingDate?: string; + index?: number; +}; diff --git a/web-client/src/router.ts b/web-client/src/router.ts index eb4282e9f24..78e8cf7ac8a 100644 --- a/web-client/src/router.ts +++ b/web-client/src/router.ts @@ -410,6 +410,42 @@ const router = { }), ); + registerRoute( + '/case-detail/*/documents/*/status-report-order-create..', + ifHasAccess( + { app, permissionToCheck: ROLE_PERMISSIONS.STATUS_REPORT_ORDER }, + (docketNumber, docketEntryId) => { + const { statusReportFilingDate, statusReportIndex } = route.query(); + setPageTitle( + `${getPageTitleDocketPrefix(docketNumber)} Status Report Order`, + ); + return app.getSequence('gotoStatusReportOrderSequence')({ + docketEntryId, + docketNumber, + statusReportFilingDate, + statusReportIndex, + }); + }, + ), + ); + + registerRoute( + '/case-detail/*/documents/*/status-report-order-edit', + ifHasAccess( + { app, permissionToCheck: ROLE_PERMISSIONS.STATUS_REPORT_ORDER }, + (docketNumber, docketEntryId) => { + setPageTitle( + `${getPageTitleDocketPrefix(docketNumber)} Status Report Order`, + ); + return app.getSequence('gotoStatusReportOrderSequence')({ + docketEntryId, + docketNumber, + isEditing: true, + }); + }, + ), + ); + registerRoute( '/case-detail/*/docket-entry/*/edit-meta', ifHasAccess({ app }, (docketNumber, docketRecordIndex) => { @@ -1328,6 +1364,46 @@ const router = { }), ); + registerRoute( + '/messages/*/message-detail/*/*/status-report-order-create..', + ifHasAccess( + { app, permissionToCheck: ROLE_PERMISSIONS.STATUS_REPORT_ORDER }, + (docketNumber, parentMessageId, docketEntryId) => { + const { statusReportFilingDate, statusReportIndex } = route.query(); + setPageTitle( + `${getPageTitleDocketPrefix(docketNumber)} Status Report Order`, + ); + return app.getSequence('gotoStatusReportOrderSequence')({ + docketEntryId, + docketNumber, + parentMessageId, + redirectUrl: `/messages/${docketNumber}/message-detail/${parentMessageId}`, + statusReportFilingDate, + statusReportIndex, + }); + }, + ), + ); + + registerRoute( + '/messages/*/message-detail/*/*/status-report-order-edit', + ifHasAccess( + { app, permissionToCheck: ROLE_PERMISSIONS.STATUS_REPORT_ORDER }, + (docketNumber, parentMessageId, docketEntryId) => { + setPageTitle( + `${getPageTitleDocketPrefix(docketNumber)} Status Report Order`, + ); + return app.getSequence('gotoStatusReportOrderSequence')({ + docketEntryId, + docketNumber, + isEditing: true, + parentMessageId, + redirectUrl: `/messages/${docketNumber}/message-detail/${parentMessageId}`, + }); + }, + ), + ); + registerRoute( '/pdf-preview', ifHasAccess({ app }, () => { diff --git a/web-client/src/styles/custom.scss b/web-client/src/styles/custom.scss index 0e1eba90f5a..1fad9c5aee8 100644 --- a/web-client/src/styles/custom.scss +++ b/web-client/src/styles/custom.scss @@ -1513,6 +1513,12 @@ hr.lighter { } } +.statusReportOrderPdfPreview { + .pdf-preview-viewer { + height: 846px; + } +} + .ustc-ui-tabs.container-tabs { border-bottom: 0; background-color: white; @@ -2274,8 +2280,6 @@ button.change-scanner-button { } .alpha-list { - padding-left: 20px; - margin-top: 5px; list-style-type: lower-alpha; } diff --git a/web-client/src/styles/forms.scss b/web-client/src/styles/forms.scss index 65e4601d945..f87d0068c82 100644 --- a/web-client/src/styles/forms.scss +++ b/web-client/src/styles/forms.scss @@ -8,11 +8,11 @@ margin-bottom: 35px; &.autogenerate-petition-form { - @media only screen and (max-width: ($medium-screen - 1)) { - border-left-width: unset; - border-left-style: unset; - border-left-color: unset; - } + @media only screen and (max-width: ($medium-screen - 1)) { + border-left-width: unset; + border-left-style: unset; + border-left-color: unset; + } max-width: 65rem; @@ -39,7 +39,7 @@ @media only screen and (max-width: ($medium-screen - 1px)) { margin-left: 0; } - + margin-left: 1rem; } @@ -248,29 +248,27 @@ select.case-status { } div.usa-radio.usa-radio__inline { - display: inline; + display: inline; .usa-radio__label { - padding-right: 2rem; + padding-right: 2rem; &.smaller-padding-right { - padding-right: 1rem; + padding-right: 1rem; } } } -@media (max-width: ($medium-screen - 280px)) { +@media (max-width: ($medium-screen - 280px)) { div.usa-radio.usa-radio__inline { display: block; } - - .usa-radio__label { - padding-right: 0; - } + .usa-radio__label { + padding-right: 0; + } } - input[type='number']::-webkit-inner-spin-button, input[type='number']::-webkit-outer-spin-button { appearance: none; @@ -625,6 +623,37 @@ label.ustc-upload { } } +.status-report-order-form { + .usa-form-group { + max-width: 100%; + margin-bottom: 0; + + &.status-report-order-form-group { + margin: 1rem; + } + + &.status-report-order-form-group-error { + margin-left: -0.1rem; + } + + &.denied-checkboxes { + padding: 0 2rem; + } + + #due-date-input-date-label { + margin: 0; + } + + .width-150 { + width: 150px; + } + } + + .narrow-hr { + width: 90%; + } +} + .complete-document-type-section { :last-child { margin-bottom: 0; @@ -696,32 +725,34 @@ label.ustc-upload { margin-left: -1.25rem; } +.status-report-order-form-group textarea, .ustc-message-modal-text-area { resize: vertical; } -.add-another-reason-button, .add-another-fact-button { - @media only screen and (max-width: $medium-screen - 1px) { - text-align: left !important; - } +.add-another-reason-button, +.add-another-fact-button { + @media only screen and (max-width: $medium-screen - 1px) { + text-align: left !important; + } } .remove-fact-reason-button { - @media only screen and (max-width: $medium-screen - 1px) { - padding-right: 1rem !important; - text-align: right !important; - } + @media only screen and (max-width: $medium-screen - 1px) { + padding-right: 1rem !important; + text-align: right !important; + } } -.irs-notice-remove-button{ - @media only screen and (max-width: $medium-screen - 1px) { - width: auto !important; - margin-left: auto !important; - } +.irs-notice-remove-button { + @media only screen and (max-width: $medium-screen - 1px) { + width: auto !important; + margin-left: auto !important; + } } .tax-case-info { padding-bottom: 10px; font-size: 18px; line-height: 1.5; -} \ No newline at end of file +} diff --git a/web-client/src/ustc-ui/DateInput/DateSelector.tsx b/web-client/src/ustc-ui/DateInput/DateSelector.tsx index ce492f25997..9c8c863e9e8 100644 --- a/web-client/src/ustc-ui/DateInput/DateSelector.tsx +++ b/web-client/src/ustc-ui/DateInput/DateSelector.tsx @@ -18,7 +18,7 @@ export const DateSelector = ({ placeHolderText, showDateHint = false, }: { - defaultValue: string | undefined; + defaultValue: string | undefined; // expects format 'YYYY-MM-DD' displayOptionalHintText?: boolean; placeHolderText?: string; errorText?: string; diff --git a/web-client/src/views/AppComponent.tsx b/web-client/src/views/AppComponent.tsx index 62630e77c9a..f3392f85a85 100644 --- a/web-client/src/views/AppComponent.tsx +++ b/web-client/src/views/AppComponent.tsx @@ -87,6 +87,7 @@ import { SignOrder } from './SignOrder'; import { SimplePdfPreviewPage } from './PendingReport/SimplePdfPreviewPage'; import { StartCaseInternal } from './StartCaseInternal/StartCaseInternal'; import { StartCaseWizard } from './StartCase/StartCaseWizard'; +import { StatusReportOrder } from './StatusReportOrder'; import { StyleGuide } from './StyleGuide/StyleGuide'; import { TrialSessionDetail } from './TrialSessionDetail/TrialSessionDetail'; import { TrialSessionPlanningModal } from './TrialSessionPlanningModal'; @@ -187,6 +188,7 @@ const pages = { SimplePdfPreviewPage, StartCaseInternal, StartCaseWizard, + StatusReportOrder, StyleGuide, TrialSessionDetail, TrialSessionPlanningReport, diff --git a/web-client/src/views/CaseDetail/CaseDetailHeader.tsx b/web-client/src/views/CaseDetail/CaseDetailHeader.tsx index f6c3c160d48..ebab31cd75b 100644 --- a/web-client/src/views/CaseDetail/CaseDetailHeader.tsx +++ b/web-client/src/views/CaseDetail/CaseDetailHeader.tsx @@ -180,6 +180,7 @@ export const CaseDetailHeader = connect< aria-label={`isLeadCase: ${formattedCaseDetail.isLeadCase}`} className="usa-tag" id="lead-case-tag" + role="note" > @@ -201,6 +202,7 @@ export const CaseDetailHeader = connect< { return { default: reactQuill }; }); +// Quill does two things to render indentations: +// 1) Adds padding-left so that the richText (and therefore the pdf) has indentations. +// 2) Adds custom ql-indent-{level} classes to display the indentation in the Quill editor itself. +// As part of the richText, 1 is automatically preserved across save and reload. +// As part of the client-side Quill text rendering, 2 is *not* preserved across save and reload, +// so even though the indentations are "there" in the richText, the user won't see them in the editor. +// We call addQuillIndentationClasses on loading the text into the editor in order to correct that. +const addQuillIndentationClasses = (html: string) => { + const dom = parseDocument(html); + // Traverse the DOM and add the appropriate ql-indent-{level} class corresponding to any elements with padding-left + DomUtils.findAll(elem => { + if (elem.name === 'p' && elem.attribs && elem.attribs.style) { + const { style } = elem.attribs; + const paddingLeftMatch = style.match(/padding-left:([0-9]+)em/); + if (paddingLeftMatch) { + const paddingLeftValue = parseInt(paddingLeftMatch[1]); + const indentLevel = paddingLeftValue / 3; + elem.attribs.class = `ql-indent-${indentLevel}`; + } + } + return true; + }, dom.children); + + return renderHtml(dom); +}; + export const TextEditor = ({ defaultValue, editorDelta, @@ -26,6 +54,7 @@ export const TextEditor = ({ updateScreenMetadataSequence, }) => { const quillEscapeRef = useRef(null); + const defaultValueWithIndentation = addQuillIndentationClasses(defaultValue); const onKeyboard = event => { const pressedESC = event.keyCode === 27; @@ -51,7 +80,7 @@ export const TextEditor = ({ <> Loading...}> { + return 'white-space: pre-wrap !important'; + }, inlineStyles: { size: inlineStylesFontSizes, }, diff --git a/web-client/src/views/Dashboards/DashboardPetitioner.tsx b/web-client/src/views/Dashboards/DashboardPetitioner.tsx index d8a4b62ff46..26968754677 100644 --- a/web-client/src/views/Dashboards/DashboardPetitioner.tsx +++ b/web-client/src/views/Dashboards/DashboardPetitioner.tsx @@ -78,18 +78,7 @@ export const DashboardPetitioner = connect(

    - - {dashboardExternalHelper.showPetitionWelcomePage && ( - - )} - {/* are we 100% sure that it's ok to remove this even with the feature flag off? */} - {/* {dashboardExternalHelper.showPetitionWelcomePage && ( - - )} */} - - {!dashboardExternalHelper.showPetitionWelcomePage && ( - - )} + diff --git a/web-client/src/views/Dashboards/OtherFilingOptions.tsx b/web-client/src/views/Dashboards/OtherFilingOptions.tsx deleted file mode 100644 index 3d0516491e9..00000000000 --- a/web-client/src/views/Dashboards/OtherFilingOptions.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { Accordion, AccordionItem } from '../../ustc-ui/Accordion/Accordion'; -import React from 'react'; - -export const OtherFilingOptions = function () { - return ( -
    -
    -

    Other Ways to File a Case

    - - - Send required forms and filing fee to: -
    - United States Tax Court -
    - 400 Second Street, NW -
    - Washington, DC 20217 -
    - - Please bring your forms and filing fee to: -
    - United States Tax Court -
    - 400 Second Street, NW -
    - Washington, DC 20217 -
    -
    -
    -
    - ); -}; - -OtherFilingOptions.displayName = 'OtherFilingOptions'; diff --git a/web-client/src/views/DocketEntryQc.tsx b/web-client/src/views/DocketEntryQc.tsx index 97f2f7ff25d..cc5816fc0ed 100644 --- a/web-client/src/views/DocketEntryQc.tsx +++ b/web-client/src/views/DocketEntryQc.tsx @@ -4,7 +4,6 @@ import { CreateMessageModalDialog } from './Messages/CreateMessageModalDialog'; import { DocumentDisplayIframe } from './DocumentDisplayIframe'; import { ErrorNotification } from './ErrorNotification'; import { FileUploadErrorModal } from './FileUploadErrorModal'; -import { FileUploadStatusModal } from './FileUploadStatusModal'; import { FormCancelModalDialog } from './FormCancelModalDialog'; import { Hint } from '../ustc-ui/Hint/Hint'; import { PrimaryDocumentForm } from './EditDocketEntry/PrimaryDocumentForm'; @@ -125,7 +124,6 @@ export const DocketEntryQc = connect( onConfirmSequence={completeDocketEntryQCAndSendMessageSequence} /> )} - {showModal === 'FileUploadStatusModal' && } {showModal === 'FileUploadErrorModal' && ( )} - + {documentViewerHelper.showStatusReportOrderButton && ( + + )} diff --git a/web-client/src/views/FileUploadStatusModal.tsx b/web-client/src/views/FileUploadStatusModal.tsx index e797a0f4a84..d3648fc1684 100644 --- a/web-client/src/views/FileUploadStatusModal.tsx +++ b/web-client/src/views/FileUploadStatusModal.tsx @@ -1,25 +1,22 @@ -import { Button } from '../ustc-ui/Button/Button'; import { Focus } from '../ustc-ui/Focus/Focus'; import { ModalDialog } from './ModalDialog'; import { ProgressBar } from '../ustc-ui/ProgressBar/ProgressBar'; 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 FileUploadStatusModal = connect( { - cancelUploadSequence: sequences.cancelFileUploadSequence, helper: state.fileUploadStatusHelper, percentComplete: state.fileUploadProgress.percentComplete, }, - function FileUploadStatusModal({ - cancelUploadSequence, - helper, - percentComplete, - }) { + function FileUploadStatusModal({ helper, percentComplete }) { return ( - + {helper.isHavingSystemIssues &&
    Still processing...
    } - {helper.isCancelable && ( -
    - -
    - )}
    ); diff --git a/web-client/src/views/Messages/MessageDocument.tsx b/web-client/src/views/Messages/MessageDocument.tsx index cae711951d0..c279dba3354 100644 --- a/web-client/src/views/Messages/MessageDocument.tsx +++ b/web-client/src/views/Messages/MessageDocument.tsx @@ -10,10 +10,14 @@ import classNames from 'classnames'; export const MessageDocument = connect( { caseDetail: state.caseDetail, + editUnsignedDraftDocumentSequence: + sequences.editUnsignedDraftDocumentSequence, iframeSrc: state.iframeSrc, messageDocumentHelper: state.messageDocumentHelper, messageViewerDocumentToDisplay: state.messageViewerDocumentToDisplay, navigateToPathSequence: sequences.navigateToPathSequence, + navigateToStatusReportOrderSequence: + sequences.navigateToStatusReportOrderSequence, openCaseDocumentDownloadUrlSequence: sequences.openCaseDocumentDownloadUrlSequence, openConfirmEditModalSequence: sequences.openConfirmEditModalSequence, @@ -31,10 +35,12 @@ export const MessageDocument = connect( }, function MessageDocument({ caseDetail, + editUnsignedDraftDocumentSequence, iframeSrc, messageDocumentHelper, messageViewerDocumentToDisplay, navigateToPathSequence, + navigateToStatusReportOrderSequence, openCaseDocumentDownloadUrlSequence, openConfirmEditModalSequence, openConfirmRemoveSignatureModalSequence, @@ -48,14 +54,26 @@ export const MessageDocument = connect( const messageDocumentActions = () => (
    {messageDocumentHelper.showEditButtonNotSigned && ( - )} - {messageDocumentHelper.showEditButtonSigned && ( )} - {messageDocumentHelper.showEditCorrespondenceButton && ( )} - {messageDocumentHelper.showRemoveSignatureButton && ( )} - {messageDocumentHelper.showApplyStampButton && ( + )}
    - + ); }, ); diff --git a/web-client/src/views/StartCase/PlaceOfLegalResidenceDropdown.tsx b/web-client/src/views/StartCase/PlaceOfLegalResidenceDropdown.tsx index 8b3cd6dfd9a..ca56e53d8b0 100644 --- a/web-client/src/views/StartCase/PlaceOfLegalResidenceDropdown.tsx +++ b/web-client/src/views/StartCase/PlaceOfLegalResidenceDropdown.tsx @@ -45,9 +45,8 @@ export const PlaceOfLegalResidenceDropdown = connect< errorText={validationErrors?.[type]?.placeOfLegalResidence} >