diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-intro.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-intro.cy.ts new file mode 100644 index 00000000000..e1cca7d5a6c --- /dev/null +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-intro.cy.ts @@ -0,0 +1,137 @@ +import { + loginAsPetitioner, + loginAsPrivatePractitioner, +} from '../../../../helpers/authentication/login-as-helpers'; + +describe('File a petition: Intro', () => { + describe('Petitioner', () => { + describe('Welcome Page', () => { + beforeEach(() => { + loginAsPetitioner('petitioner7'); + }); + it('should display correct welcome message for petitioner', () => { + cy.get('[data-testid="error-alert-title"]').should( + 'have.text', + 'Have you already filed a petition by mail or do you want electronic access to your existing case?', + ); + cy.get('[data-testid="error-alert-message"]').contains( + 'Do not start a new case.', + ); + }); + + it('should display taxpayer tools and free taxpayer help sections', () => { + cy.get('[data-testid="taxpayer-tools-section"]').should('exist'); + cy.get('[data-testid="free-taxpayer-help-section"]').should('exist'); + }); + + it('should navigate to the before starting a case page', () => { + cy.get('[data-testid="file-a-petition"]').click(); + cy.get('h2').should('have.text', 'How to Create a Case'); + }); + }); + + describe('Before starting a case', () => { + beforeEach(() => { + loginAsPetitioner('petitioner'); + cy.get('[data-testid="file-a-petition"]').click(); + }); + it('should display correct text for start a case instructions', () => { + cy.get('[data-testid="upload-irs-notice-title"]').contains( + 'If you received', + ); + cy.get('[data-testid="upload-irs-notice-bullet-1"]').contains( + 'Submit a PDF of the Notice(s) you received', + ); + cy.get('[data-testid="confirm-identity-bullet-1"]').contains( + 'This document is sent to the IRS to help them identify you', + ); + cy.get('[data-testid="confirm-identity-bullet-1"]').contains( + 'This is the only document that should contain your SSN, TIN, or EIN.', + ); + cy.get('[data-testid="deadline-to-file"]').contains( + 'If you received a notice in the mail from the IRS', + ); + cy.get('[data-testid="accordion-item-title"]').contains( + 'Are you filing jointly with a spouse?', + ); + + cy.get('[data-testid="accordion-item-title"]').eq(0).click(); + cy.get('[data-testid="filing-jointly-accordion-item"]').contains( + "To file a joint Petition with your spouse, you must have the spouse's consent", + ); + cy.get('[data-testid="filing-jointly-accordion-item"]').contains( + "If you do not have your spouse's consent", + ); + cy.get('[data-testid="filing-jointly-accordion-item"]').contains( + 'select “Myself” as the person who is filing.', + ); + }); + }); + }); + describe('Practitioner', () => { + describe('Welcome Page', () => { + beforeEach(() => { + cy.login('privatePractitioner3'); + }); + it('should display correct welcome message text for practitioner', () => { + cy.get('[data-testid="warning-alert-title"]').should( + 'have.text', + 'Do you need access to an existing case?', + ); + cy.get('[data-testid="warning-alert-message"]').should( + 'have.text', + 'Search for the case docket number to file the appropriate document.', + ); + }); + + it('should not display taxpayer tools and free taxpayer help sections', () => { + cy.get('[data-testid="taxpayer-tools-section"]').should('not.exist'); + cy.get('[data-testid="free-taxpayer-help-section"]').should( + 'not.exist', + ); + }); + + it('should navigate to the before starting a case page', () => { + cy.get('[data-testid="file-a-petition"]').click(); + cy.get('h2').should('have.text', 'How to Create a Case'); + }); + }); + + describe('Before starting a case', () => { + beforeEach(() => { + loginAsPrivatePractitioner(); + cy.get('[data-testid="file-a-petition"]').click(); + }); + it('should display correct text for start a case instructions', () => { + cy.get('[data-testid="upload-irs-notice-title"]').contains( + 'If the petitioner received', + ); + cy.get('[data-testid="upload-irs-notice-bullet-1"]').contains( + 'Submit a PDF of the Notice(s) they received', + ); + cy.get('[data-testid="confirm-identity-bullet-1"]').contains( + 'This document is sent to the IRS to help them identify the petitioner', + ); + cy.get('[data-testid="confirm-identity-bullet-1"]').contains( + 'This is the only document that should contain the petitioner’s SSN, TIN, or EIN.', + ); + cy.get('[data-testid="deadline-to-file"]').contains( + 'If the petitioner received a notice in the mail from the IRS', + ); + cy.get('[data-testid="accordion-item-title"]').contains( + 'Is the petitioner filing jointly with a spouse?', + ); + cy.get('[data-testid="accordion-item-title"]').eq(0).click(); + cy.get('[data-testid="filing-jointly-accordion-item"]').contains( + 'To file a joint Petition with a spouse, the petitioner must have the spouse’s consent.', + ); + cy.get('[data-testid="filing-jointly-accordion-item"]').contains( + 'If the petitioner does not have the spouse’s consent', + ); + cy.get('[data-testid="filing-jointly-accordion-item"]').contains( + 'select “Petitioner” as the person you are filing on behalf of.', + ); + }); + }); + }); +}); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-myself-and-my-spouse.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-myself-and-my-spouse.cy.ts index 384af10a495..9e67c4f9713 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-myself-and-my-spouse.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-myself-and-my-spouse.cy.ts @@ -1,44 +1,58 @@ import { InputFillType, selectInput, textInput } from './petition-helper'; -import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; +import { + loginAsPetitioner, + loginAsPrivatePractitioner, +} from '../../../../helpers/authentication/login-as-helpers'; describe('File a petition: Step 1 - Petitioner Information', () => { - beforeEach(() => { - loginAsPetitioner(); - cy.visit('/file-a-petition/new'); - cy.get('[data-testid="step-indicator-current-step-1-icon"]'); - }); - - it('should display all the possible options', () => { - const EXPECTED_FILING_TYPES: string[] = [ - 'Myself', - 'Myself and my spouse', - 'A business', - 'Other', - ]; - cy.get('.filing-type-radio-option').should('have.length', 4); - cy.get('.filing-type-radio-option').each((element, index) => { - cy.wrap(element).should('have.text', EXPECTED_FILING_TYPES[index]); + describe('Petitioner', () => { + beforeEach(() => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + cy.get('[data-testid="step-indicator-current-step-1-icon"]'); }); - }); - it('should display a validaiton error message if user does not select filing type', () => { - cy.get('[data-testid="filling-type-error-message"]').should('not.exist'); + it('should display all the possible options', () => { + const EXPECTED_FILING_TYPES: string[] = [ + 'Myself', + 'Myself and my spouse', + 'A business', + 'Other', + ]; + cy.get('.filing-type-radio-option').should('have.length', 4); + cy.get('.filing-type-radio-option').each((element, index) => { + cy.wrap(element).should('have.text', EXPECTED_FILING_TYPES[index]); + }); + }); - cy.get('[data-testid="step-1-next-button"]').click(); + it('should display a validation error message if user does not select filing type', () => { + cy.get('[data-testid="filling-type-error-message"]').should('not.exist'); - cy.get('[data-testid="filling-type-error-message"]').should('exist'); - }); + cy.get('[data-testid="step-1-next-button"]').click(); - describe('Myself and my spouse', () => { - beforeEach(() => { - cy.get('[data-testid="filing-type-1"').click(); + cy.get('[data-testid="filling-type-error-message"]').should('exist'); }); - describe('Country - United States', () => { + describe('Myself and my spouse', () => { beforeEach(() => { + cy.get('[data-testid="filing-type-1"').click(); cy.get('[data-testid="domestic-country-btn"').click(); }); + it('should display correct spouse header', () => { + cy.get('[data-testid="spouse-header"]').should( + 'have.text', + "Your spouse's information", + ); + }); + + it('should display correct is spouse deceased text', () => { + cy.get('[data-testid="deceased-spouse-legend"]').should( + 'have.text', + 'Is your spouse deceased?', + ); + }); + it('should display all error validation messages when user leaves form empty', () => { const ERROR_MESSAGES_DATA_TEST_ID = [ 'primary-contact-name-error-message', @@ -166,6 +180,19 @@ describe('File a petition: Step 1 - Petitioner Information', () => { cy.get('[data-testid="step-indicator-current-step-2-icon"]'); }); + it('should display email fields for spouse', () => { + cy.get('[data-testid="contact-secondary-email"]').should( + 'be.visible', + ); + cy.get( + '[data-testid="register-email-address-provided-above-for-electronic-filing-and-service-label"]', + ).should('be.visible'); + cy.get( + '[data-testid="register-email-address-provided-above-for-electronic-filing-and-service-label"]', + ).click(); + cy.get('[data-testid="warning-alert"]').should('be.visible'); + }); + it('should allow user to go to step 3 if everything is filled out correctly', () => { const ERROR_MESSAGES_DATA_TEST_ID: InputFillType[] = [ { @@ -268,6 +295,34 @@ describe('File a petition: Step 1 - Petitioner Information', () => { }); }); + it('should display correct text for spouse consent message', () => { + cy.get('[data-testid="warning-alert"]').should( + 'have.text', + 'To file on behalf of your spouse, you must have consent. If you do not have your spouse\'s consent, select "Myself" as the person who is filing.', + ); + }); + + it('should display correct text for have spouse consent label', () => { + cy.get('[data-testid="have-spouse-consent-label"]').should( + 'have.text', + "I have my spouse's consent", + ); + }); + + it('should display email fields for spouse', () => { + cy.get('[data-testid="have-spouse-consent-label"]').click(); + cy.get('[data-testid="contact-secondary-email"]').should( + 'be.visible', + ); + cy.get( + '[data-testid="register-email-address-provided-above-for-electronic-filing-and-service-label"]', + ).should('be.visible'); + cy.get( + '[data-testid="register-email-address-provided-above-for-electronic-filing-and-service-label"]', + ).click(); + cy.get('[data-testid="warning-alert"]').should('be.visible'); + }); + describe('I have Spouse Consent - do not register email', () => { beforeEach(() => { cy.get('[data-testid="have-spouse-consent-label"').click(); @@ -434,4 +489,66 @@ describe('File a petition: Step 1 - Petitioner Information', () => { }); }); }); + describe('Practitioner', () => { + beforeEach(() => { + loginAsPrivatePractitioner(); + cy.visit('/file-a-petition/new'); + cy.get('[data-testid="step-indicator-current-step-1-icon"]'); + cy.get('[data-testid="filing-type-1"').click(); + }); + + describe('Petitioner and spouse', () => { + it('should display correct spouse header', () => { + cy.get('[data-testid="spouse-header"]').should( + 'have.text', + "Spouse's information", + ); + }); + + it('should display correct is spouse deceased text', () => { + cy.get('[data-testid="deceased-spouse-legend"]').should( + 'have.text', + 'Is the spouse deceased?', + ); + }); + describe('Spouse is not deceased', () => { + beforeEach(() => { + cy.get('[data-testid="is-spouse-deceased-1"]').click(); + }); + it('should display correct text for spouse consent message', () => { + cy.get('[data-testid="warning-alert"]').should( + 'have.text', + 'To file on behalf of a spouse, you must have consent. If you do not have the spouse’s consent, select “Petitioner” as the person you are filing on behalf of.', + ); + }); + it('should display correct text for have spouse consent label', () => { + cy.get('[data-testid="have-spouse-consent-label"]').should( + 'have.text', + "I have the spouse's consent", + ); + }); + + it('should not display email fields for spouse', () => { + cy.get('[data-testid="have-spouse-consent-label"]').click(); + cy.get('[data-testid="contact-secondary-email"]').should('not.exist'); + cy.get( + '[data-testid="register-email-address-provided-above-for-electronic-filing-and-service-label"]', + ).should('not.exist'); + }); + }); + + describe('Spouse is deceased', () => { + beforeEach(() => { + cy.get('[data-testid="is-spouse-deceased-0"]').click(); + }); + + it('should not display email fields for spouse', () => { + cy.get('[data-testid="contact-secondary-email"]').should('not.exist'); + cy.get( + '[data-testid="register-email-address-provided-above-for-electronic-filing-and-service-label"]', + ).should('not.exist'); + }); + }); + }); + }); }); 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 eef6ec182b7..cc48770af50 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 @@ -1,14 +1,14 @@ import { InputFillType, selectInput, textInput } from './petition-helper'; -import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; +import { + loginAsPetitioner, + loginAsPrivatePractitioner, +} from '../../../../helpers/authentication/login-as-helpers'; -describe('File a petition', () => { - beforeEach(() => { - loginAsPetitioner(); - cy.visit('/file-a-petition/new'); - }); - - describe('Step 1 - Petitioner Information', () => { +describe('File a petition: Step 1 - Petitioner Information', () => { + describe('Petitioner', () => { beforeEach(() => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); cy.get('[data-testid="step-indicator-current-step-1-icon"]'); }); @@ -25,7 +25,7 @@ describe('File a petition', () => { }); }); - it('should display a validaiton error message if user does not select filing type', () => { + it('should display a validation error message if user does not select filing type', () => { cy.get('[data-testid="filling-type-error-message"]').should('not.exist'); cy.get('[data-testid="step-1-next-button"]').click(); @@ -44,6 +44,22 @@ describe('File a petition', () => { ); }); + it('should display correct label for contact name', () => { + cy.get('[data-testid="filing-type-0"]').click(); + cy.get('[data-testid="contact-primary-name-label"]').should( + 'have.text', + 'Full Name', + ); + }); + + it('should display correct label message for phone number', () => { + cy.get('[data-testid="filing-type-0"]').click(); + cy.get('[data-testid="contact-primary-phone-message"]').should( + 'have.text', + 'If you do not have a current phone number, enter N/A.', + ); + }); + it('should display validation error messages to all required fields left empty', () => { const ERROR_MESSAGES_DATA_TEST_ID = [ 'primary-contact-name-error-message', @@ -165,4 +181,42 @@ describe('File a petition', () => { }); }); }); + + describe('Practitioner', () => { + beforeEach(() => { + loginAsPrivatePractitioner(); + cy.visit('/file-a-petition/new'); + }); + + describe('Myself', () => { + it('should display correct filing type options for private practitioner', () => { + const EXPECTED_FILING_TYPES: string[] = [ + 'Petitioner', + 'Petitioner and spouse', + 'A business', + 'Other', + ]; + cy.get('.filing-type-radio-option').should('have.length', 4); + cy.get('.filing-type-radio-option').each((element, index) => { + cy.wrap(element).should('have.text', EXPECTED_FILING_TYPES[index]); + }); + }); + + it('should display correct label for contact name', () => { + cy.get('[data-testid="filing-type-0"]').click(); + cy.get('[data-testid="contact-primary-name-label"]').should( + 'have.text', + 'Petitioner’s full name', + ); + }); + + it('should display correct label message for phone number', () => { + cy.get('[data-testid="filing-type-0"]').click(); + cy.get('[data-testid="contact-primary-phone-message"]').should( + 'have.text', + 'If they do not have a current phone number, enter N/A.', + ); + }); + }); + }); }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-other--minor-or-legally-incompetent.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-other--minor-or-legally-incompetent.cy.ts index a5f92c5e9cc..a1899d22d7d 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-other--minor-or-legally-incompetent.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-1-other--minor-or-legally-incompetent.cy.ts @@ -1,5 +1,8 @@ import { InputFillType, selectInput, textInput } from './petition-helper'; -import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; +import { + loginAsPetitioner, + loginAsPrivatePractitioner, +} from '../../../../helpers/authentication/login-as-helpers'; const INTERNATIONAL_FORM_INPUT_DATA: InputFillType[] = [ { @@ -98,558 +101,606 @@ const DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID = [ ]; describe('File a petition: Step 1 - Petitioner Information', () => { - beforeEach(() => { - loginAsPetitioner(); - cy.visit('/file-a-petition/new'); - cy.get('[data-testid="step-indicator-current-step-1-icon"]'); - }); - - describe('Other', () => { + describe('Petitioner', () => { beforeEach(() => { - cy.get('[data-testid="filing-type-3"').click(); + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + cy.get('[data-testid="step-indicator-current-step-1-icon"]'); }); - - describe('A minor or legally incompetent person', () => { + describe('Other', () => { beforeEach(() => { - cy.get('[data-testid="other-type-radio-option-1"]').click(); + cy.get('[data-testid="filing-type-3"').click(); }); - it('should display all minor or legally incompetent person role options', () => { - const EXPECTED_FILING_TYPES: string[] = [ - 'Conservator', - 'Guardian', - 'Custodian', - 'Next friend for a minor (without a guardian, conservator, or other like fiduciary)', - 'Next friend for a legally incompetent person (without a guardian, conservator, or other like fiduciary)', - ]; - - EXPECTED_FILING_TYPES.forEach((filingType, index) => { - cy.get( - `[data-testid="minor-incompetent-type-radio-option-${index}"]`, - ).should('have.text', filingType); + describe('A minor or legally incompetent person', () => { + beforeEach(() => { + cy.get('[data-testid="other-type-radio-option-1"]').click(); }); - }); - it('should display a validation error message when no minor or legally incompetent person role option is selected', () => { - cy.get('[data-testid="minor-incompetent-type-error-message"]').should( - 'not.exist', - ); + it('should display all minor or legally incompetent person role options', () => { + const EXPECTED_FILING_TYPES: string[] = [ + 'Conservator', + 'Guardian', + 'Custodian', + 'Next friend for a minor (without a guardian, conservator, or other like fiduciary)', + 'Next friend for a legally incompetent person (without a guardian, conservator, or other like fiduciary)', + ]; - cy.get('[data-testid="step-1-next-button"]').click(); + EXPECTED_FILING_TYPES.forEach((filingType, index) => { + cy.get( + `[data-testid="minor-incompetent-type-radio-option-${index}"]`, + ).should('have.text', filingType); + }); + }); - cy.get('[data-testid="minor-incompetent-type-error-message"]').should( - 'exist', - ); - }); + it('should display a validation error message when no minor or legally incompetent person role option is selected', () => { + cy.get('[data-testid="minor-incompetent-type-error-message"]').should( + 'not.exist', + ); - describe('Conservator', () => { - beforeEach(() => { - cy.get( - '[data-testid="minor-incompetent-type-radio-option-0"]', - ).click(); - }); - describe('Domestic', () => { - beforeEach(() => { - cy.get('[data-testid="domestic-country-btn"]').click(); - }); - it('should display a validation error message when form is empty', () => { - DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach((selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('not.exist'); - }); + cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="minor-incompetent-type-error-message"]').should( + 'exist', + ); + }); - DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach((selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('exist'); - }); - }); - it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { - DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { errorMessage, input, selectOption } = inputInfo; - selectInput(errorMessage, input, selectOption); - } else if ('inputValue' in inputInfo) { - const { errorMessage, input, inputValue } = inputInfo; - textInput(errorMessage, input, inputValue); - } - }); - - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); - }); - it('should allow user to go to step 3 if everything is filled out correctly', () => { - DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { input, selectOption } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`select[data-testid="${input}"]`).select(selectOption); - } else if ('inputValue' in inputInfo) { - const { input, inputValue } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`[data-testid="${input}"]`).type(inputValue); - } - }); - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); - }); + it('should display correct other type title', () => { + cy.get('[data-testid="estate-type-legend"]').should( + 'have.text', + 'What is your role in filing for this minor or legally incompetent person?', + ); }); - describe('International', () => { + + describe('Conservator', () => { beforeEach(() => { - cy.get('[data-testid="international-country-btn"]').click(); - }); - it('should display a validation error message when form is empty', () => { - INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( - (selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('not.exist'); - }, - ); - - cy.get('[data-testid="step-1-next-button"]').click(); - - INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( - (selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('exist'); - }, - ); + cy.get( + '[data-testid="minor-incompetent-type-radio-option-0"]', + ).click(); }); - it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { - INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { errorMessage, input, selectOption } = inputInfo; - selectInput(errorMessage, input, selectOption); - } else if ('inputValue' in inputInfo) { - const { errorMessage, input, inputValue } = inputInfo; - textInput(errorMessage, input, inputValue); - } - }); - - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + describe('Domestic', () => { + beforeEach(() => { + cy.get('[data-testid="domestic-country-btn"]').click(); + }); + it('should display a validation error message when form is empty', () => { + DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('not.exist'); + }, + ); + + cy.get('[data-testid="step-1-next-button"]').click(); + + DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('exist'); + }, + ); + }); + it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { + DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { errorMessage, input, selectOption } = inputInfo; + selectInput(errorMessage, input, selectOption); + } else if ('inputValue' in inputInfo) { + const { errorMessage, input, inputValue } = inputInfo; + textInput(errorMessage, input, inputValue); + } + }); + + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); + it('should allow user to go to step 3 if everything is filled out correctly', () => { + DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { input, selectOption } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`select[data-testid="${input}"]`).select(selectOption); + } else if ('inputValue' in inputInfo) { + const { input, inputValue } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`[data-testid="${input}"]`).type(inputValue); + } + }); + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); }); - it('should allow user to go to step 3 if everything is filled out correctly', () => { - INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { input, selectOption } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`select[data-testid="${input}"]`).select(selectOption); - } else if ('inputValue' in inputInfo) { - const { input, inputValue } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`[data-testid="${input}"]`).type(inputValue); - } - }); - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + describe('International', () => { + beforeEach(() => { + cy.get('[data-testid="international-country-btn"]').click(); + }); + it('should display a validation error message when form is empty', () => { + INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('not.exist'); + }, + ); + + cy.get('[data-testid="step-1-next-button"]').click(); + + INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('exist'); + }, + ); + }); + it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { + INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { errorMessage, input, selectOption } = inputInfo; + selectInput(errorMessage, input, selectOption); + } else if ('inputValue' in inputInfo) { + const { errorMessage, input, inputValue } = inputInfo; + textInput(errorMessage, input, inputValue); + } + }); + + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); + it('should allow user to go to step 3 if everything is filled out correctly', () => { + INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { input, selectOption } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`select[data-testid="${input}"]`).select(selectOption); + } else if ('inputValue' in inputInfo) { + const { input, inputValue } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`[data-testid="${input}"]`).type(inputValue); + } + }); + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); }); }); - }); - describe('Guardian', () => { - beforeEach(() => { - cy.get( - '[data-testid="minor-incompetent-type-radio-option-1"]', - ).click(); - }); - describe('Domestic', () => { + describe('Guardian', () => { beforeEach(() => { - cy.get('[data-testid="domestic-country-btn"]').click(); + cy.get( + '[data-testid="minor-incompetent-type-radio-option-1"]', + ).click(); }); - it('should display a validation error message when form is empty', () => { - DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach((selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('not.exist'); + describe('Domestic', () => { + beforeEach(() => { + cy.get('[data-testid="domestic-country-btn"]').click(); }); - - cy.get('[data-testid="step-1-next-button"]').click(); - - DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach((selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('exist'); + it('should display a validation error message when form is empty', () => { + DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('not.exist'); + }, + ); + + cy.get('[data-testid="step-1-next-button"]').click(); + + DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('exist'); + }, + ); + }); + it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { + DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { errorMessage, input, selectOption } = inputInfo; + selectInput(errorMessage, input, selectOption); + } else if ('inputValue' in inputInfo) { + const { errorMessage, input, inputValue } = inputInfo; + textInput(errorMessage, input, inputValue); + } + }); + + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); + it('should allow user to go to step 3 if everything is filled out correctly', () => { + DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { input, selectOption } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`select[data-testid="${input}"]`).select(selectOption); + } else if ('inputValue' in inputInfo) { + const { input, inputValue } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`[data-testid="${input}"]`).type(inputValue); + } + }); + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); }); }); - it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { - DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { errorMessage, input, selectOption } = inputInfo; - selectInput(errorMessage, input, selectOption); - } else if ('inputValue' in inputInfo) { - const { errorMessage, input, inputValue } = inputInfo; - textInput(errorMessage, input, inputValue); - } - }); - - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); - }); - it('should allow user to go to step 3 if everything is filled out correctly', () => { - DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { input, selectOption } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`select[data-testid="${input}"]`).select(selectOption); - } else if ('inputValue' in inputInfo) { - const { input, inputValue } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`[data-testid="${input}"]`).type(inputValue); - } - }); - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); - }); - }); - describe('International', () => { - beforeEach(() => { - cy.get('[data-testid="international-country-btn"]').click(); - }); + describe('International', () => { + beforeEach(() => { + cy.get('[data-testid="international-country-btn"]').click(); + }); - it('should display a validation error message when form is empty', () => { - INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( - (selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('not.exist'); - }, - ); + it('should display a validation error message when form is empty', () => { + INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('not.exist'); + }, + ); - cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-1-next-button"]').click(); - INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( - (selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('exist'); - }, - ); - }); - it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { - INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { errorMessage, input, selectOption } = inputInfo; - selectInput(errorMessage, input, selectOption); - } else if ('inputValue' in inputInfo) { - const { errorMessage, input, inputValue } = inputInfo; - textInput(errorMessage, input, inputValue); - } - }); - - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); - }); - it('should allow user to go to step 3 if everything is filled out correctly', () => { - INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { input, selectOption } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`select[data-testid="${input}"]`).select(selectOption); - } else if ('inputValue' in inputInfo) { - const { input, inputValue } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`[data-testid="${input}"]`).type(inputValue); - } - }); - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('exist'); + }, + ); + }); + it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { + INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { errorMessage, input, selectOption } = inputInfo; + selectInput(errorMessage, input, selectOption); + } else if ('inputValue' in inputInfo) { + const { errorMessage, input, inputValue } = inputInfo; + textInput(errorMessage, input, inputValue); + } + }); + + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); + it('should allow user to go to step 3 if everything is filled out correctly', () => { + INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { input, selectOption } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`select[data-testid="${input}"]`).select(selectOption); + } else if ('inputValue' in inputInfo) { + const { input, inputValue } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`[data-testid="${input}"]`).type(inputValue); + } + }); + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); }); }); - }); - describe('Custodian', () => { - beforeEach(() => { - cy.get( - '[data-testid="minor-incompetent-type-radio-option-2"]', - ).click(); - }); - describe('Domestic', () => { + describe('Custodian', () => { beforeEach(() => { - cy.get('[data-testid="domestic-country-btn"]').click(); + cy.get( + '[data-testid="minor-incompetent-type-radio-option-2"]', + ).click(); }); - it('should display a validation error message when form is empty', () => { - DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach((selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('not.exist'); + describe('Domestic', () => { + beforeEach(() => { + cy.get('[data-testid="domestic-country-btn"]').click(); }); - - cy.get('[data-testid="step-1-next-button"]').click(); - - DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach((selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('exist'); + it('should display a validation error message when form is empty', () => { + DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('not.exist'); + }, + ); + + cy.get('[data-testid="step-1-next-button"]').click(); + + DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('exist'); + }, + ); + }); + it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { + DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { errorMessage, input, selectOption } = inputInfo; + selectInput(errorMessage, input, selectOption); + } else if ('inputValue' in inputInfo) { + const { errorMessage, input, inputValue } = inputInfo; + textInput(errorMessage, input, inputValue); + } + }); + + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); + it('should allow user to go to step 3 if everything is filled out correctly', () => { + DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { input, selectOption } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`select[data-testid="${input}"]`).select(selectOption); + } else if ('inputValue' in inputInfo) { + const { input, inputValue } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`[data-testid="${input}"]`).type(inputValue); + } + }); + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); }); }); - it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { - DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { errorMessage, input, selectOption } = inputInfo; - selectInput(errorMessage, input, selectOption); - } else if ('inputValue' in inputInfo) { - const { errorMessage, input, inputValue } = inputInfo; - textInput(errorMessage, input, inputValue); - } - }); - - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); - }); - it('should allow user to go to step 3 if everything is filled out correctly', () => { - DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { input, selectOption } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`select[data-testid="${input}"]`).select(selectOption); - } else if ('inputValue' in inputInfo) { - const { input, inputValue } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`[data-testid="${input}"]`).type(inputValue); - } - }); - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); - }); - }); - describe('International', () => { - beforeEach(() => { - cy.get('[data-testid="international-country-btn"]').click(); - }); - it('should display a validation error message when form is empty', () => { - INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( - (selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('not.exist'); - }, - ); - - cy.get('[data-testid="step-1-next-button"]').click(); - - INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( - (selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('exist'); - }, - ); - }); - it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { - INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { errorMessage, input, selectOption } = inputInfo; - selectInput(errorMessage, input, selectOption); - } else if ('inputValue' in inputInfo) { - const { errorMessage, input, inputValue } = inputInfo; - textInput(errorMessage, input, inputValue); - } - }); - - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); - }); - it('should allow user to go to step 3 if everything is filled out correctly', () => { - INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { input, selectOption } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`select[data-testid="${input}"]`).select(selectOption); - } else if ('inputValue' in inputInfo) { - const { input, inputValue } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`[data-testid="${input}"]`).type(inputValue); - } - }); - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + describe('International', () => { + beforeEach(() => { + cy.get('[data-testid="international-country-btn"]').click(); + }); + it('should display a validation error message when form is empty', () => { + INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('not.exist'); + }, + ); + + cy.get('[data-testid="step-1-next-button"]').click(); + + INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('exist'); + }, + ); + }); + it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { + INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { errorMessage, input, selectOption } = inputInfo; + selectInput(errorMessage, input, selectOption); + } else if ('inputValue' in inputInfo) { + const { errorMessage, input, inputValue } = inputInfo; + textInput(errorMessage, input, inputValue); + } + }); + + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); + it('should allow user to go to step 3 if everything is filled out correctly', () => { + INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { input, selectOption } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`select[data-testid="${input}"]`).select(selectOption); + } else if ('inputValue' in inputInfo) { + const { input, inputValue } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`[data-testid="${input}"]`).type(inputValue); + } + }); + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); }); }); - }); - describe('Next friend for a minor (without a guardian, conservator, or other like fiduciary)', () => { - beforeEach(() => { - cy.get( - '[data-testid="minor-incompetent-type-radio-option-3"]', - ).click(); - }); - describe('Domestic', () => { + describe('Next friend for a minor (without a guardian, conservator, or other like fiduciary)', () => { beforeEach(() => { - cy.get('[data-testid="domestic-country-btn"]').click(); + cy.get( + '[data-testid="minor-incompetent-type-radio-option-3"]', + ).click(); }); - it('should display a validation error message when form is empty', () => { - DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach((selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('not.exist'); + describe('Domestic', () => { + beforeEach(() => { + cy.get('[data-testid="domestic-country-btn"]').click(); }); - - cy.get('[data-testid="step-1-next-button"]').click(); - - DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach((selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('exist'); + it('should display a validation error message when form is empty', () => { + DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('not.exist'); + }, + ); + + cy.get('[data-testid="step-1-next-button"]').click(); + + DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('exist'); + }, + ); + }); + it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { + DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { errorMessage, input, selectOption } = inputInfo; + selectInput(errorMessage, input, selectOption); + } else if ('inputValue' in inputInfo) { + const { errorMessage, input, inputValue } = inputInfo; + textInput(errorMessage, input, inputValue); + } + }); + + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); + it('should allow user to go to step 3 if everything is filled out correctly', () => { + DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { input, selectOption } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`select[data-testid="${input}"]`).select(selectOption); + } else if ('inputValue' in inputInfo) { + const { input, inputValue } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`[data-testid="${input}"]`).type(inputValue); + } + }); + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); }); }); - it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { - DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { errorMessage, input, selectOption } = inputInfo; - selectInput(errorMessage, input, selectOption); - } else if ('inputValue' in inputInfo) { - const { errorMessage, input, inputValue } = inputInfo; - textInput(errorMessage, input, inputValue); - } - }); - - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); - }); - it('should allow user to go to step 3 if everything is filled out correctly', () => { - DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { input, selectOption } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`select[data-testid="${input}"]`).select(selectOption); - } else if ('inputValue' in inputInfo) { - const { input, inputValue } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`[data-testid="${input}"]`).type(inputValue); - } - }); - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); - }); - }); - describe('International', () => { - beforeEach(() => { - cy.get('[data-testid="international-country-btn"]').click(); - }); - it('should display a validation error message when form is empty', () => { - INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( - (selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('not.exist'); - }, - ); - - cy.get('[data-testid="step-1-next-button"]').click(); - - INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( - (selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('exist'); - }, - ); - }); - it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { - INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { errorMessage, input, selectOption } = inputInfo; - selectInput(errorMessage, input, selectOption); - } else if ('inputValue' in inputInfo) { - const { errorMessage, input, inputValue } = inputInfo; - textInput(errorMessage, input, inputValue); - } - }); - - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); - }); - it('should allow user to go to step 3 if everything is filled out correctly', () => { - INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { input, selectOption } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`select[data-testid="${input}"]`).select(selectOption); - } else if ('inputValue' in inputInfo) { - const { input, inputValue } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`[data-testid="${input}"]`).type(inputValue); - } - }); - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + describe('International', () => { + beforeEach(() => { + cy.get('[data-testid="international-country-btn"]').click(); + }); + it('should display a validation error message when form is empty', () => { + INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('not.exist'); + }, + ); + + cy.get('[data-testid="step-1-next-button"]').click(); + + INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('exist'); + }, + ); + }); + it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { + INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { errorMessage, input, selectOption } = inputInfo; + selectInput(errorMessage, input, selectOption); + } else if ('inputValue' in inputInfo) { + const { errorMessage, input, inputValue } = inputInfo; + textInput(errorMessage, input, inputValue); + } + }); + + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); + it('should allow user to go to step 3 if everything is filled out correctly', () => { + INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { input, selectOption } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`select[data-testid="${input}"]`).select(selectOption); + } else if ('inputValue' in inputInfo) { + const { input, inputValue } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`[data-testid="${input}"]`).type(inputValue); + } + }); + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); }); }); - }); - describe('Next friend for a legally incompetent person (without a guardian, conservator, or other like fiduciary)', () => { - beforeEach(() => { - cy.get( - '[data-testid="minor-incompetent-type-radio-option-4"]', - ).click(); - }); - describe('Domestic', () => { + describe('Next friend for a legally incompetent person (without a guardian, conservator, or other like fiduciary)', () => { beforeEach(() => { - cy.get('[data-testid="domestic-country-btn"]').click(); + cy.get( + '[data-testid="minor-incompetent-type-radio-option-4"]', + ).click(); }); - it('should display a validation error message when form is empty', () => { - DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach((selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('not.exist'); + describe('Domestic', () => { + beforeEach(() => { + cy.get('[data-testid="domestic-country-btn"]').click(); }); - - cy.get('[data-testid="step-1-next-button"]').click(); - - DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach((selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('exist'); + it('should display a validation error message when form is empty', () => { + DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('not.exist'); + }, + ); + + cy.get('[data-testid="step-1-next-button"]').click(); + + DOMESTIC_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('exist'); + }, + ); + }); + it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { + DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { errorMessage, input, selectOption } = inputInfo; + selectInput(errorMessage, input, selectOption); + } else if ('inputValue' in inputInfo) { + const { errorMessage, input, inputValue } = inputInfo; + textInput(errorMessage, input, inputValue); + } + }); + + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); + it('should allow user to go to step 3 if everything is filled out correctly', () => { + DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { input, selectOption } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`select[data-testid="${input}"]`).select(selectOption); + } else if ('inputValue' in inputInfo) { + const { input, inputValue } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`[data-testid="${input}"]`).type(inputValue); + } + }); + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); }); }); - it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { - DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { errorMessage, input, selectOption } = inputInfo; - selectInput(errorMessage, input, selectOption); - } else if ('inputValue' in inputInfo) { - const { errorMessage, input, inputValue } = inputInfo; - textInput(errorMessage, input, inputValue); - } - }); - - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); - }); - it('should allow user to go to step 3 if everything is filled out correctly', () => { - DOMESTIC_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { input, selectOption } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`select[data-testid="${input}"]`).select(selectOption); - } else if ('inputValue' in inputInfo) { - const { input, inputValue } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`[data-testid="${input}"]`).type(inputValue); - } - }); - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + describe('International', () => { + beforeEach(() => { + cy.get('[data-testid="international-country-btn"]').click(); + }); + it('should display a validation error message when form is empty', () => { + INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('not.exist'); + }, + ); + + cy.get('[data-testid="step-1-next-button"]').click(); + + INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( + (selector: string) => { + cy.get(`[data-testid="${selector}"]`).should('exist'); + }, + ); + }); + it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { + INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { errorMessage, input, selectOption } = inputInfo; + selectInput(errorMessage, input, selectOption); + } else if ('inputValue' in inputInfo) { + const { errorMessage, input, inputValue } = inputInfo; + textInput(errorMessage, input, inputValue); + } + }); + + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); + it('should allow user to go to step 3 if everything is filled out correctly', () => { + INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { input, selectOption } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`select[data-testid="${input}"]`).select(selectOption); + } else if ('inputValue' in inputInfo) { + const { input, inputValue } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`[data-testid="${input}"]`).type(inputValue); + } + }); + cy.get('[data-testid="step-1-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-2-icon"]'); + }); }); }); - describe('International', () => { - beforeEach(() => { - cy.get('[data-testid="international-country-btn"]').click(); - }); - it('should display a validation error message when form is empty', () => { - INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( - (selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('not.exist'); - }, - ); - - cy.get('[data-testid="step-1-next-button"]').click(); - - INTERNATIONAL_ERROR_MESSAGES_DATA_TEST_ID.forEach( - (selector: string) => { - cy.get(`[data-testid="${selector}"]`).should('exist'); - }, - ); - }); - it('should run live validation when user leaves input with an invalid response and remove validation message when the user fixes it', () => { - INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { errorMessage, input, selectOption } = inputInfo; - selectInput(errorMessage, input, selectOption); - } else if ('inputValue' in inputInfo) { - const { errorMessage, input, inputValue } = inputInfo; - textInput(errorMessage, input, inputValue); - } - }); - - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); - }); - it('should allow user to go to step 3 if everything is filled out correctly', () => { - INTERNATIONAL_FORM_INPUT_DATA.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { input, selectOption } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`select[data-testid="${input}"]`).select(selectOption); - } else if ('inputValue' in inputInfo) { - const { input, inputValue } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`[data-testid="${input}"]`).type(inputValue); - } - }); - cy.get('[data-testid="step-1-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-2-icon"]'); - }); + }); + }); + }); + + describe('Practitioner', () => { + beforeEach(() => { + loginAsPrivatePractitioner(); + cy.visit('/file-a-petition/new'); + cy.get('[data-testid="step-indicator-current-step-1-icon"]'); + cy.get('[data-testid="filing-type-3"').click(); + }); + describe('Other', () => { + describe('A minor or legally incompetent person', () => { + it('should display correct other type title', () => { + cy.get('[data-testid="other-type-radio-option-1"]').click(); + cy.get('[data-testid="estate-type-legend"]').should( + 'have.text', + 'What is the petitioner’s role in filing for this minor or legally incompetent person?', + ); }); }); }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-3.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-3.cy.ts index fbc6def9dfa..24f0ec296fb 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-3.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-3.cy.ts @@ -4,164 +4,205 @@ import { fillPetitionerInformation, selectInput, } from './petition-helper'; -import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; +import { + loginAsPetitioner, + loginAsPrivatePractitioner, +} from '../../../../helpers/authentication/login-as-helpers'; describe('File a petition - Step 3 IRS Notices', () => { const VALID_FILE = '../../helpers/file/sample.pdf'; - beforeEach(() => { - loginAsPetitioner(); - cy.visit('/file-a-petition/new'); + describe('Petitioner', () => { + beforeEach(() => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); - fillPetitionerInformation(); - fillPetitionFileInformation(VALID_FILE); - }); + fillPetitionerInformation(); + fillPetitionFileInformation(VALID_FILE); + }); - it('should display all the possible options', () => { - const EXPECTED_HAS_IRS_NOTICE_OPTIONS: string[] = ['Yes', 'No']; + it('should display correct title', () => { + cy.get('[data-testid="has-irs-notice-legend"]').should( + 'have.text', + 'Did you receive a notice from the IRS?', + ); + }); - cy.get('[data-testid^="irs-notice-"]').should('have.length', 2); + it('should display all the possible options', () => { + const EXPECTED_HAS_IRS_NOTICE_OPTIONS: string[] = ['Yes', 'No']; - EXPECTED_HAS_IRS_NOTICE_OPTIONS.forEach((option: string) => { - cy.get(`[data-testid="irs-notice-${option}"]`).should('exist'); - }); - }); + cy.get('[data-testid^="irs-notice-"]').should('have.length', 2); - describe('Has IRS Notices', () => { - beforeEach(() => { - cy.get('[data-testid="irs-notice-Yes"]').click(); + EXPECTED_HAS_IRS_NOTICE_OPTIONS.forEach((option: string) => { + cy.get(`[data-testid="irs-notice-${option}"]`).should('exist'); + }); + }); - cy.get('[data-testid="step-3-next-button"]').should('exist'); - cy.get('[data-testid="step-3-next-button"]').should('not.be.disabled'); + describe('Has IRS Notices', () => { + beforeEach(() => { + cy.get('[data-testid="irs-notice-Yes"]').click(); - cy.get('[data-testid="irs-notice-upload-0"]').attachFile(VALID_FILE); - cy.get('[data-testid="step-3-next-button"]').should('exist'); - cy.get('[data-testid="step-3-next-button"]').should('be.disabled'); + cy.get('[data-testid="step-3-next-button"]').should('exist'); + cy.get('[data-testid="step-3-next-button"]').should('not.be.disabled'); - cy.get('[data-testid="redaction-acknowledgement-label"]').should('exist'); - cy.get('[data-testid="redaction-acknowledgement-label"]').click(); + cy.get('[data-testid="irs-notice-upload-0"]').attachFile(VALID_FILE); + cy.get('[data-testid="step-3-next-button"]').should('exist'); + cy.get('[data-testid="step-3-next-button"]').should('be.disabled'); - cy.get('[data-testid="step-3-next-button"]').should('not.be.disabled'); - }); + cy.get('[data-testid="redaction-acknowledgement-label"]').should( + 'exist', + ); + cy.get('[data-testid="redaction-acknowledgement-label"]').click(); - describe('VALIDATION MESSAGES', () => { - it('should display validation error messages when user clicks on "Next" button without selecting a case type', () => { - cy.get('[data-testid="step-3-next-button"]').click(); - cy.get('[data-testid="case-type-0-error-message"]').should('exist'); + cy.get('[data-testid="step-3-next-button"]').should('not.be.disabled'); }); - it('should do live validation when user leaves input with an invalid response and remove message when user fixes it', () => { - const ERROR_MESSAGES_DATA_TEST_ID: InputFillType[] = [ - { - errorMessage: 'case-type-0-error-message', - input: 'case-type-select', - selectOption: 'Deficiency', - }, - ]; - - ERROR_MESSAGES_DATA_TEST_ID.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { errorMessage, input, selectOption } = inputInfo; - selectInput(errorMessage, input, selectOption); - } + describe('VALIDATION MESSAGES', () => { + it('should display validation error messages when user clicks on "Next" button without selecting a case type', () => { + cy.get('[data-testid="step-3-next-button"]').click(); + cy.get('[data-testid="case-type-0-error-message"]').should('exist'); }); - cy.get('[data-testid="step-3-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-4-icon"]'); - }); + it('should do live validation when user leaves input with an invalid response and remove message when user fixes it', () => { + const ERROR_MESSAGES_DATA_TEST_ID: InputFillType[] = [ + { + errorMessage: 'case-type-0-error-message', + input: 'case-type-select', + selectOption: 'Deficiency', + }, + ]; + + ERROR_MESSAGES_DATA_TEST_ID.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { errorMessage, input, selectOption } = inputInfo; + selectInput(errorMessage, input, selectOption); + } + }); + + cy.get('[data-testid="step-3-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-4-icon"]'); + }); - it('should allow user to go to step 3 if everything is filled out correctly', () => { - const ERROR_MESSAGES_DATA_TEST_ID: InputFillType[] = [ - { - errorMessage: 'case-type-0-error-message', - input: 'case-type-select', - selectOption: 'Deficiency', - }, - ]; - - ERROR_MESSAGES_DATA_TEST_ID.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { input, selectOption } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`select[data-testid="${input}"]`).select(selectOption); - } + it('should allow user to go to step 3 if everything is filled out correctly', () => { + const ERROR_MESSAGES_DATA_TEST_ID: InputFillType[] = [ + { + errorMessage: 'case-type-0-error-message', + input: 'case-type-select', + selectOption: 'Deficiency', + }, + ]; + + ERROR_MESSAGES_DATA_TEST_ID.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { input, selectOption } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`select[data-testid="${input}"]`).select(selectOption); + } + }); + + cy.get('[data-testid="step-3-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-4-icon"]'); }); - cy.get('[data-testid="step-3-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-4-icon"]'); + it('should remove the "Add another IRS Notice" Button when there are 5 IRS Notice already', () => { + cy.get('[data-testid="add-another-irs-notice-button"]').should( + 'exist', + ); + cy.get('[data-testid="add-another-irs-notice-button"]').click(); + + cy.get('[data-testid="add-another-irs-notice-button"]').should( + 'exist', + ); + cy.get('[data-testid="add-another-irs-notice-button"]').click(); + + cy.get('[data-testid="add-another-irs-notice-button"]').should( + 'exist', + ); + cy.get('[data-testid="add-another-irs-notice-button"]').click(); + + cy.get('[data-testid="add-another-irs-notice-button"]').should( + 'exist', + ); + cy.get('[data-testid="add-another-irs-notice-button"]').click(); + + cy.get('[data-testid="add-another-irs-notice-button"]').should( + 'not.exist', + ); + }); }); + }); - it('should remove the "Add another IRS Notice" Button when there are 5 IRS Notice already', () => { - cy.get('[data-testid="add-another-irs-notice-button"]').should('exist'); - cy.get('[data-testid="add-another-irs-notice-button"]').click(); - - cy.get('[data-testid="add-another-irs-notice-button"]').should('exist'); - cy.get('[data-testid="add-another-irs-notice-button"]').click(); + describe('Does Not Have IRS Notices', () => { + beforeEach(() => { + cy.get('[data-testid="irs-notice-No"]').click(); + }); - cy.get('[data-testid="add-another-irs-notice-button"]').should('exist'); - cy.get('[data-testid="add-another-irs-notice-button"]').click(); + describe('VALIDATION MESSAGES', () => { + it('should display validation error messages when user clicks on "Next" button without selecting a case type', () => { + cy.get('[data-testid="step-3-next-button"]').click(); + cy.get('[data-testid="case-type-root-error-message"]').should( + 'exist', + ); + }); - cy.get('[data-testid="add-another-irs-notice-button"]').should('exist'); - cy.get('[data-testid="add-another-irs-notice-button"]').click(); + it('should do live validation when user leaves input with an invalid response and remove message when user fixes it', () => { + const ERROR_MESSAGES_DATA_TEST_ID: InputFillType[] = [ + { + errorMessage: 'case-type-root-error-message', + input: 'case-type-select', + selectOption: 'Disclosure', + }, + ]; + + ERROR_MESSAGES_DATA_TEST_ID.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { errorMessage, input, selectOption } = inputInfo; + selectInput(errorMessage, input, selectOption); + } + }); + + cy.get('[data-testid="step-3-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-4-icon"]'); + }); - cy.get('[data-testid="add-another-irs-notice-button"]').should( - 'not.exist', - ); + it('should allow user to go to step 3 if everything is filled out correctly', () => { + const ERROR_MESSAGES_DATA_TEST_ID: InputFillType[] = [ + { + errorMessage: 'case-type-root-error-message', + input: 'case-type-select', + selectOption: 'Disclosure', + }, + ]; + + ERROR_MESSAGES_DATA_TEST_ID.forEach(inputInfo => { + if ('selectOption' in inputInfo) { + const { input, selectOption } = inputInfo; + cy.get(`[data-testid="${input}"]`).scrollIntoView(); + cy.get(`select[data-testid="${input}"]`).select(selectOption); + } + }); + + cy.get('[data-testid="step-3-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-4-icon"]'); + }); }); }); }); - describe('Does Not Have IRS Notices', () => { + describe('Practitioner', () => { beforeEach(() => { - cy.get('[data-testid="irs-notice-No"]').click(); - }); - - describe('VALIDATION MESSAGES', () => { - it('should display validation error messages when user clicks on "Next" button without selecting a case type', () => { - cy.get('[data-testid="step-3-next-button"]').click(); - cy.get('[data-testid="case-type-root-error-message"]').should('exist'); - }); - - it('should do live validation when user leaves input with an invalid response and remove message when user fixes it', () => { - const ERROR_MESSAGES_DATA_TEST_ID: InputFillType[] = [ - { - errorMessage: 'case-type-root-error-message', - input: 'case-type-select', - selectOption: 'Disclosure', - }, - ]; - - ERROR_MESSAGES_DATA_TEST_ID.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { errorMessage, input, selectOption } = inputInfo; - selectInput(errorMessage, input, selectOption); - } - }); - - cy.get('[data-testid="step-3-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-4-icon"]'); - }); + loginAsPrivatePractitioner(); + cy.visit('/file-a-petition/new'); - it('should allow user to go to step 3 if everything is filled out correctly', () => { - const ERROR_MESSAGES_DATA_TEST_ID: InputFillType[] = [ - { - errorMessage: 'case-type-root-error-message', - input: 'case-type-select', - selectOption: 'Disclosure', - }, - ]; - - ERROR_MESSAGES_DATA_TEST_ID.forEach(inputInfo => { - if ('selectOption' in inputInfo) { - const { input, selectOption } = inputInfo; - cy.get(`[data-testid="${input}"]`).scrollIntoView(); - cy.get(`select[data-testid="${input}"]`).select(selectOption); - } - }); + fillPetitionerInformation(); + fillPetitionFileInformation(VALID_FILE); + }); - cy.get('[data-testid="step-3-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-4-icon"]'); - }); + it('should display correct title', () => { + cy.get('[data-testid="has-irs-notice-legend"]').should( + 'have.text', + 'Did the petitioner receive a notice from the IRS?', + ); }); }); }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-5.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-5.cy.ts index 2aee3a72d89..43a81746134 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-5.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-5.cy.ts @@ -4,32 +4,61 @@ import { fillPetitionFileInformation, fillPetitionerInformation, } from './petition-helper'; -import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; +import { + loginAsPetitioner, + loginAsPrivatePractitioner, +} from '../../../../helpers/authentication/login-as-helpers'; describe('File a petition - Step 5 Statement of Taxpayer Identification Number', () => { const VALID_FILE = '../../helpers/file/sample.pdf'; - beforeEach(() => { - loginAsPetitioner(); - cy.visit('/file-a-petition/new'); + describe('Petitioner', () => { + beforeEach(() => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); - fillPetitionerInformation(); - fillPetitionFileInformation(VALID_FILE); - fillIrsNoticeInformation(VALID_FILE); - fillCaseProcedureInformation(); - }); + fillPetitionerInformation(); + fillPetitionFileInformation(VALID_FILE); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + }); + + it('should display correct info text', () => { + cy.get('[data-testid="info-alert"]').contains('to help identify you'); + }); - it('should display validation error message when user presses "Next" button without uploading stin file', () => { - const ERROR_MESSAGE_DATA_TEST_ID = ['stin-file-error-message-0']; - cy.get(`[data-testid="${ERROR_MESSAGE_DATA_TEST_ID}"]`).should('not.exist'); - cy.get('[data-testid="step-5-next-button"]').click(); - cy.get(`[data-testid="${ERROR_MESSAGE_DATA_TEST_ID}"]`).should('exist'); + it('should display validation error message when user presses "Next" button without uploading stin file', () => { + const ERROR_MESSAGE_DATA_TEST_ID = ['stin-file-error-message-0']; + cy.get(`[data-testid="${ERROR_MESSAGE_DATA_TEST_ID}"]`).should( + 'not.exist', + ); + cy.get('[data-testid="step-5-next-button"]').click(); + cy.get(`[data-testid="${ERROR_MESSAGE_DATA_TEST_ID}"]`).should('exist'); + }); + + it('should allow user to go to step 6 if stin file is uploaded', () => { + cy.get('[data-testid="stin-file"]').attachFile(VALID_FILE); + + cy.get('[data-testid="step-5-next-button"]').click(); + cy.get('[data-testid="step-indicator-current-step-6-icon"]'); + }); }); - it('should allow user to go to step 6 if stin file is uploaded', () => { - cy.get('[data-testid="stin-file"]').attachFile(VALID_FILE); + describe('Practitioner', () => { + beforeEach(() => { + loginAsPrivatePractitioner(); + cy.visit('/file-a-petition/new'); + + fillPetitionerInformation(); + fillPetitionFileInformation(VALID_FILE); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + }); - cy.get('[data-testid="step-5-next-button"]').click(); - cy.get('[data-testid="step-indicator-current-step-6-icon"]'); + it('should display correct info text', () => { + cy.get('[data-testid="info-alert"]').contains( + 'to help identify the petitioner', + ); + }); }); }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-irs-notice.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-irs-notice.cy.ts index b9b1e538c8f..089ff4f64a9 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-irs-notice.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-irs-notice.cy.ts @@ -35,10 +35,32 @@ describe('File a petition - Step 6 Review & Submit Case', () => { fillIrsNoticeInformation(VALID_FILE); fillCaseProcedureInformation(); fillStinInformation(VALID_FILE); - cy.get('[data-testid="petition-preview-button"]').should( - 'have.text', - 'sample.pdf', - ); + cy.get(`[data-testid="irs-notice-info-${0}"]`).within(() => { + cy.contains('IRS notice 1').should('exist'); + cy.contains('Notice of Deficiency').should('exist'); + cy.get('[data-testid="atp-preview-button"]').should( + 'have.text', + 'sample.pdf', + ); + }); + cy.get(`[data-testid="irs-notice-info-${1}"]`).should('not.exist'); + }); + + it('should display IRS notice information for a disclosure case type', () => { + fillIrsNoticeInformation(VALID_FILE, 'Disclosure2'); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + cy.get(`[data-testid="irs-notice-info-${0}"]`).within(() => { + cy.contains('IRS notice 1').should('exist'); + cy.contains( + 'Notice - We Are Going To Make Your Determination Letter Available for Public Inspection', + ).should('exist'); + cy.get('[data-testid="atp-preview-button"]').should( + 'have.text', + 'sample.pdf', + ); + }); + cy.get(`[data-testid="irs-notice-info-${1}"]`).should('not.exist'); }); it('should display IRS notice information for multiple IRS notices', () => { fillMultipleIRSNotices(VALID_FILE); @@ -47,6 +69,7 @@ describe('File a petition - Step 6 Review & Submit Case', () => { cy.get(`[data-testid="irs-notice-info-${0}"]`).within(() => { cy.contains('IRS notice 1').should('exist'); + cy.contains('Notice of Deficiency').should('exist'); cy.contains('2024').should('exist'); cy.contains('05/02/24').should('exist'); cy.contains('Jackson, NJ').should('exist'); @@ -58,6 +81,9 @@ describe('File a petition - Step 6 Review & Submit Case', () => { cy.get(`[data-testid="irs-notice-info-${1}"]`).within(() => { cy.contains('IRS notice 2').should('exist'); + cy.contains( + 'Notice of Determination Concerning Collection Action', + ).should('exist'); cy.contains('2023').should('exist'); cy.contains('05/02/23').should('exist'); cy.contains('New York, NY').should('exist'); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-myself-and-spouse.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-myself-and-spouse.cy.ts index 5cd0815d532..74ee88f5e46 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-myself-and-spouse.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-myself-and-spouse.cy.ts @@ -1,338 +1,368 @@ import { contactInfo, fillCaseProcedureInformation, + fillGeneratePetitionFileInformation, fillIrsNoticeInformation, fillPetitionFileInformation, + fillPetitionerAndSpouseInformation, fillPrimaryContact, fillSecondaryContact, fillSecondaryContactInternational, fillStinInformation, secondaryContactInfo, } from './petition-helper'; -import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; +import { + loginAsPetitioner, + loginAsPrivatePractitioner, +} from '../../../../helpers/authentication/login-as-helpers'; describe('File a petition - Step 6 Review & Submit Case', () => { const VALID_FILE = '../../helpers/file/sample.pdf'; - beforeEach(() => { - loginAsPetitioner(); - cy.visit('/file-a-petition/new'); - }); - - describe('Filing type: Myself and Spouse', () => { + describe('Petitioner', () => { beforeEach(() => { - cy.get('[data-testid="filing-type-1"]').click(); - fillPrimaryContact(); + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); }); - - it('should display petitioner information correctly for deceased spouse', () => { - cy.get('[data-testid="is-spouse-deceased-0"]').click(); - cy.get('[data-testid="contact-secondary-name"]').type( - secondaryContactInfo.name, - ); - - cy.get('[data-testid="contactSecondary-in-care-of"]').type( - secondaryContactInfo.inCareOf, - ); - - fillSecondaryContact(); - cy.get('[data-testid="step-1-next-button"]').click(); - - fillPetitionFileInformation(VALID_FILE); - fillIrsNoticeInformation(VALID_FILE); - fillCaseProcedureInformation(); - fillStinInformation(VALID_FILE); - - cy.get('[data-testid="party-type"]').should( - 'have.text', - 'Petitioner & deceased spouse', - ); - - cy.get('[data-testid="contact-name"]') - .eq(0) - .invoke('text') - .then(value => value.trim()) - .should('equal', contactInfo.name); - - cy.get('[data-testid="contact-address-information"]') - .eq(0) - .should('contain.text', contactInfo.address1); - - cy.get('[data-testid="contact-address-information"]') - .eq(0) - .should('contain.text', contactInfo.city); - - cy.get('[data-testid="contact-address-information"]') - .eq(0) - .should('contain.text', contactInfo.state); - - cy.get('[data-testid="contact-address-information"]') - .eq(0) - .should('contain.text', contactInfo.postalCode); - - cy.get('[data-testid=place-of-legal-residence-label]').should( - 'have.text', - 'Place of legal residence:', - ); - - cy.get('[data-testid="primary-place-of-legal-residence"]').should( - 'have.text', - contactInfo.placeOfLegalResidenceLabel, - ); - - cy.get('[data-testid="contact-info-phone-number"]') - .eq(0) - .should('contain.text', contactInfo.phone); - - cy.get('[data-testid="contact-primary-email"]') - .eq(0) - .should('have.text', contactInfo.email); - - cy.get('[data-testid="contact-name"]') - .eq(1) - .invoke('text') - .then(value => value.trim()) - .should('equal', secondaryContactInfo.name); - - cy.get('[data-testid="contact-in-care-of-secondary-name"]').should( - 'contain.text', - secondaryContactInfo.inCareOf, - ); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', contactInfo.address1); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', contactInfo.city); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', contactInfo.state); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', contactInfo.postalCode); - - cy.get('[data-testid="secondary-place-of-legal-residence"]').should( - 'have.text', - secondaryContactInfo.placeOfLegalResidenceLabel, - ); - - cy.get('[data-testid="contact-info-phone-number"]') - .eq(1) - .should('contain.text', secondaryContactInfo.phone); - - cy.get('[data-testid="contact-info-email"]').should( - 'have.text', - secondaryContactInfo.email, - ); - }); - - it('should display petitioner information correctly when user does not select use same address', () => { - cy.get('[data-testid="is-spouse-deceased-0"]').click(); - - cy.get('[data-testid="contact-secondary-name"]').type( - secondaryContactInfo.name, - ); - - cy.get('[data-testid="contactSecondary-in-care-of"]').type( - secondaryContactInfo.inCareOf, - ); - - fillSecondaryContact(false); - - cy.get('[data-testid="step-1-next-button"]').click(); - - fillPetitionFileInformation(VALID_FILE); - fillIrsNoticeInformation(VALID_FILE); - fillCaseProcedureInformation(); - fillStinInformation(VALID_FILE); - - cy.get('[data-testid="party-type"]').should( - 'have.text', - 'Petitioner & deceased spouse', - ); - - cy.get('[data-testid="contact-name"]') - .eq(1) - .invoke('text') - .then(value => value.trim()) - .should('equal', secondaryContactInfo.name); - - cy.get('[data-testid="contact-in-care-of-secondary-name"]').should( - 'contain.text', - secondaryContactInfo.inCareOf, - ); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', secondaryContactInfo.address1); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', secondaryContactInfo.city); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', secondaryContactInfo.state); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', secondaryContactInfo.postalCode); - - cy.get('[data-testid="secondary-place-of-legal-residence"]').should( - 'have.text', - secondaryContactInfo.placeOfLegalResidenceLabel, - ); - - cy.get('[data-testid="contact-info-phone-number"]') - .eq(1) - .should('contain.text', secondaryContactInfo.phone); - - cy.get('[data-testid="contact-info-email"]').should( - 'have.text', - secondaryContactInfo.email, - ); + describe('Filing type: Myself and Spouse', () => { + beforeEach(() => { + cy.get('[data-testid="filing-type-1"]').click(); + fillPrimaryContact(); + }); + + it('should display petitioner information correctly for deceased spouse', () => { + cy.get('[data-testid="is-spouse-deceased-0"]').click(); + cy.get('[data-testid="contact-secondary-name"]').type( + secondaryContactInfo.name, + ); + + cy.get('[data-testid="contactSecondary-in-care-of"]').type( + secondaryContactInfo.inCareOf, + ); + + fillSecondaryContact(); + cy.get('[data-testid="step-1-next-button"]').click(); + + fillPetitionFileInformation(VALID_FILE); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.get('[data-testid="party-type"]').should( + 'have.text', + 'Petitioner & deceased spouse', + ); + + cy.get('[data-testid="contact-name"]') + .eq(0) + .invoke('text') + .then(value => value.trim()) + .should('equal', contactInfo.name); + + cy.get('[data-testid="contact-address-information"]') + .eq(0) + .should('contain.text', contactInfo.address1); + + cy.get('[data-testid="contact-address-information"]') + .eq(0) + .should('contain.text', contactInfo.city); + + cy.get('[data-testid="contact-address-information"]') + .eq(0) + .should('contain.text', contactInfo.state); + + cy.get('[data-testid="contact-address-information"]') + .eq(0) + .should('contain.text', contactInfo.postalCode); + + cy.get('[data-testid=place-of-legal-residence-label]').should( + 'have.text', + 'Place of legal residence:', + ); + + cy.get('[data-testid="primary-place-of-legal-residence"]').should( + 'have.text', + contactInfo.placeOfLegalResidenceLabel, + ); + + cy.get('[data-testid="contact-info-phone-number"]') + .eq(0) + .should('contain.text', contactInfo.phone); + + cy.get('[data-testid="contact-primary-email"]') + .eq(0) + .should('have.text', contactInfo.email); + + cy.get('[data-testid="contact-name"]') + .eq(1) + .invoke('text') + .then(value => value.trim()) + .should('equal', secondaryContactInfo.name); + + cy.get('[data-testid="contact-in-care-of-secondary-name"]').should( + 'contain.text', + secondaryContactInfo.inCareOf, + ); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', contactInfo.address1); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', contactInfo.city); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', contactInfo.state); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', contactInfo.postalCode); + + cy.get('[data-testid="secondary-place-of-legal-residence"]').should( + 'have.text', + secondaryContactInfo.placeOfLegalResidenceLabel, + ); + + cy.get('[data-testid="contact-info-phone-number"]') + .eq(1) + .should('contain.text', secondaryContactInfo.phone); + + cy.get('[data-testid="contact-info-email"]').should( + 'have.text', + secondaryContactInfo.email, + ); + + cy.get('[data-testid="register-for-e-filing"]').should('exist'); + }); + + it('should display petitioner information correctly when user does not select use same address', () => { + cy.get('[data-testid="is-spouse-deceased-0"]').click(); + + cy.get('[data-testid="contact-secondary-name"]').type( + secondaryContactInfo.name, + ); + + cy.get('[data-testid="contactSecondary-in-care-of"]').type( + secondaryContactInfo.inCareOf, + ); + + fillSecondaryContact(false); + + cy.get('[data-testid="step-1-next-button"]').click(); + + fillPetitionFileInformation(VALID_FILE); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.get('[data-testid="party-type"]').should( + 'have.text', + 'Petitioner & deceased spouse', + ); + + cy.get('[data-testid="contact-name"]') + .eq(1) + .invoke('text') + .then(value => value.trim()) + .should('equal', secondaryContactInfo.name); + + cy.get('[data-testid="contact-in-care-of-secondary-name"]').should( + 'contain.text', + secondaryContactInfo.inCareOf, + ); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', secondaryContactInfo.address1); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', secondaryContactInfo.city); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', secondaryContactInfo.state); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', secondaryContactInfo.postalCode); + + cy.get('[data-testid="secondary-place-of-legal-residence"]').should( + 'have.text', + secondaryContactInfo.placeOfLegalResidenceLabel, + ); + + cy.get('[data-testid="contact-info-phone-number"]') + .eq(1) + .should('contain.text', secondaryContactInfo.phone); + + cy.get('[data-testid="contact-info-email"]').should( + 'have.text', + secondaryContactInfo.email, + ); + }); + + it('should display petitioner information correctly for spouse', () => { + cy.get('[data-testid="is-spouse-deceased-1"]').click(); + cy.get('[data-testid="have-spouse-consent-label"]').click(); + + cy.get('[data-testid="contact-secondary-name"]').type( + secondaryContactInfo.name, + ); + fillSecondaryContact(); + + cy.get('[data-testid="step-1-next-button"]').click(); + + fillPetitionFileInformation(VALID_FILE); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.get('[data-testid="party-type"]').should( + 'have.text', + 'Petitioner & spouse', + ); + + cy.get('[data-testid="contact-name"]') + .eq(1) + .invoke('text') + .then(value => value.trim()) + .should('equal', secondaryContactInfo.name); + + cy.get('[data-testid="contact-in-care-of-secondary-name"]').should( + 'not.exist', + ); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', contactInfo.address1); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', contactInfo.city); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', contactInfo.state); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', contactInfo.postalCode); + + cy.get('[data-testid="secondary-place-of-legal-residence"]').should( + 'have.text', + secondaryContactInfo.placeOfLegalResidenceLabel, + ); + + cy.get('[data-testid="contact-info-phone-number"]') + .eq(1) + .should('contain.text', secondaryContactInfo.phone); + + cy.get('[data-testid="contact-info-email"]').should( + 'have.text', + secondaryContactInfo.email, + ); + }); + + it('should display petitioner information correctly for spouse with an international address and not display legal place of residence if user does not select one', () => { + cy.get('[data-testid="is-spouse-deceased-1"]').click(); + cy.get('[data-testid="have-spouse-consent-label"]').click(); + + cy.get('[data-testid="contact-secondary-name"]').type( + secondaryContactInfo.name, + ); + + fillSecondaryContactInternational(); + + cy.get('[data-testid="contact-secondary-phone"]').type( + secondaryContactInfo.phone, + ); + cy.get('[data-testid="contact-secondary-email"]').type( + secondaryContactInfo.email, + ); + cy.get( + '[data-testid="register-email-address-provided-above-for-electronic-filing-and-service-label"]', + ).click(); + + cy.get('[data-testid="step-1-next-button"]').click(); + + fillPetitionFileInformation(VALID_FILE); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.get('[data-testid="party-type"]').should( + 'have.text', + 'Petitioner & spouse', + ); + + cy.get('[data-testid="contact-name"]') + .eq(1) + .invoke('text') + .then(value => value.trim()) + .should('equal', secondaryContactInfo.name); + + cy.get('[data-testid="contact-in-care-of-secondary-name"]').should( + 'not.exist', + ); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', secondaryContactInfo.address1); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', secondaryContactInfo.city); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', secondaryContactInfo.internationalState); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', secondaryContactInfo.internationalPostalCode); + + cy.get('[data-testid="contact-address-information"]') + .eq(1) + .should('contain.text', secondaryContactInfo.country); + + cy.get('[data-testid="secondary-place-of-legal-residence"]').should( + 'not.exist', + ); + + cy.get('[data-testid="contact-info-phone-number"]') + .eq(1) + .should('contain.text', secondaryContactInfo.phone); + + cy.get('[data-testid="contact-info-email"]').should( + 'have.text', + secondaryContactInfo.email, + ); + }); }); + }); - it('should display petitioner information correctly for spouse', () => { - cy.get('[data-testid="is-spouse-deceased-1"]').click(); - cy.get('[data-testid="have-spouse-consent-label"]').click(); - - cy.get('[data-testid="contact-secondary-name"]').type( - secondaryContactInfo.name, - ); - fillSecondaryContact(); - - cy.get('[data-testid="step-1-next-button"]').click(); - - fillPetitionFileInformation(VALID_FILE); + describe('Practitioner', () => { + beforeEach(() => { + loginAsPrivatePractitioner(); + cy.visit('/file-a-petition/new'); + fillPetitionerAndSpouseInformation(); + fillGeneratePetitionFileInformation(); fillIrsNoticeInformation(VALID_FILE); fillCaseProcedureInformation(); fillStinInformation(VALID_FILE); - - cy.get('[data-testid="party-type"]').should( - 'have.text', - 'Petitioner & spouse', - ); - - cy.get('[data-testid="contact-name"]') - .eq(1) - .invoke('text') - .then(value => value.trim()) - .should('equal', secondaryContactInfo.name); - - cy.get('[data-testid="contact-in-care-of-secondary-name"]').should( - 'not.exist', - ); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', contactInfo.address1); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', contactInfo.city); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', contactInfo.state); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', contactInfo.postalCode); - - cy.get('[data-testid="secondary-place-of-legal-residence"]').should( - 'have.text', - secondaryContactInfo.placeOfLegalResidenceLabel, - ); - - cy.get('[data-testid="contact-info-phone-number"]') - .eq(1) - .should('contain.text', secondaryContactInfo.phone); - - cy.get('[data-testid="contact-info-email"]').should( - 'have.text', - secondaryContactInfo.email, - ); }); - - it('should display petitioner information correctly for spouse with an international address and not display legal place of residence if user does not select one', () => { - cy.get('[data-testid="is-spouse-deceased-1"]').click(); - cy.get('[data-testid="have-spouse-consent-label"]').click(); - - cy.get('[data-testid="contact-secondary-name"]').type( - secondaryContactInfo.name, - ); - - fillSecondaryContactInternational(); - - cy.get('[data-testid="contact-secondary-phone"]').type( - secondaryContactInfo.phone, - ); - cy.get('[data-testid="contact-secondary-email"]').type( - secondaryContactInfo.email, - ); - cy.get( - '[data-testid="register-email-address-provided-above-for-electronic-filing-and-service-label"]', - ).click(); - - cy.get('[data-testid="step-1-next-button"]').click(); - - fillPetitionFileInformation(VALID_FILE); - fillIrsNoticeInformation(VALID_FILE); - fillCaseProcedureInformation(); - fillStinInformation(VALID_FILE); - - cy.get('[data-testid="party-type"]').should( - 'have.text', - 'Petitioner & spouse', - ); - - cy.get('[data-testid="contact-name"]') - .eq(1) - .invoke('text') - .then(value => value.trim()) - .should('equal', secondaryContactInfo.name); - - cy.get('[data-testid="contact-in-care-of-secondary-name"]').should( - 'not.exist', - ); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', secondaryContactInfo.address1); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', secondaryContactInfo.city); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', secondaryContactInfo.internationalState); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', secondaryContactInfo.internationalPostalCode); - - cy.get('[data-testid="contact-address-information"]') - .eq(1) - .should('contain.text', secondaryContactInfo.country); - - cy.get('[data-testid="secondary-place-of-legal-residence"]').should( - 'not.exist', - ); - - cy.get('[data-testid="contact-info-phone-number"]') - .eq(1) - .should('contain.text', secondaryContactInfo.phone); - - cy.get('[data-testid="contact-info-email"]').should( - 'have.text', - secondaryContactInfo.email, - ); + describe('Filing type: Myself and Spouse', () => { + it('should not display email information for spouse', () => { + cy.get('[data-testid="contact-info-email"]') + .eq(0) + .should('have.text', 'privatePractitioner1@example.com'); + cy.get('[data-testid="service-email-label"]').should('not.exist'); + cy.get('[data-testid="contact-info-email"]').eq(1).should('not.exist'); + cy.get('[data-testid="register-for-e-filing"]').should('not.exist'); + }); }); }); }); diff --git a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-myself.cy.ts b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-myself.cy.ts index 87da434390a..3bff174b474 100644 --- a/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-myself.cy.ts +++ b/cypress/local-only/tests/integration/fileAPetitionUpdated/file-a-petition-step-6-petitioner-info-myself.cy.ts @@ -1,6 +1,7 @@ import { contactInfo, fillCaseProcedureInformation, + fillGeneratePetitionFileInformation, fillIrsNoticeInformation, fillPetitionFileInformation, fillPetitionerInformation, @@ -8,147 +9,207 @@ import { fillPrimaryContactInternational, fillStinInformation, } from './petition-helper'; -import { loginAsPetitioner } from '../../../../helpers/authentication/login-as-helpers'; +import { + loginAsPetitioner, + loginAsPrivatePractitioner, +} from '../../../../helpers/authentication/login-as-helpers'; describe('File a petition - Step 6 Review & Submit Case', () => { const VALID_FILE = '../../helpers/file/sample.pdf'; - beforeEach(() => { - loginAsPetitioner(); - cy.visit('/file-a-petition/new'); - }); + describe('Petitioner', () => { + beforeEach(() => { + loginAsPetitioner(); + cy.visit('/file-a-petition/new'); + }); - describe('Edit step 1', () => { - it('should navigate to petition flow step 1 when user clicks on edit button', () => { - fillPetitionerInformation(); - fillPetitionFileInformation(VALID_FILE); - fillIrsNoticeInformation(VALID_FILE); - fillCaseProcedureInformation(); - fillStinInformation(VALID_FILE); - cy.get('[data-testid="edit-petition-section-button-1"]').click(); - cy.get('[data-testid="step-indicator-current-step-1-icon"]').should( - 'be.visible', - ); + describe('Edit step 1', () => { + it('should navigate to petition flow step 1 when user clicks on edit button', () => { + fillPetitionerInformation(); + fillPetitionFileInformation(VALID_FILE); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + cy.get('[data-testid="edit-petition-section-button-1"]').click(); + cy.get('[data-testid="step-indicator-current-step-1-icon"]').should( + 'be.visible', + ); + }); }); - }); - describe('Filing type: Myself', () => { - it('should display petitioner information correctly', () => { - cy.get('[data-testid="filing-type-0"]').click(); - fillPrimaryContact(); - cy.get('[data-testid="step-1-next-button"]').click(); + describe('Filing type: Myself', () => { + it('should display petitioner information correctly', () => { + cy.get('[data-testid="filing-type-0"]').click(); + fillPrimaryContact(); + cy.get('[data-testid="step-1-next-button"]').click(); + + fillPetitionFileInformation(VALID_FILE); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.get('[data-testid="party-type"]').should('have.text', 'Petitioner'); + + cy.get('[data-testid="contact-name"]') + .invoke('text') + .then(value => value.trim()) + .should('equal', contactInfo.name); + + cy.get('[data-testid="contact-address-information"]').should( + 'contain.text', + contactInfo.address1, + ); + + cy.get('[data-testid="contact-address-information"]').should( + 'contain.text', + contactInfo.city, + ); + + cy.get('[data-testid="contact-address-information"]').should( + 'contain.text', + contactInfo.state, + ); + + cy.get('[data-testid="contact-address-information"]').should( + 'contain.text', + contactInfo.postalCode, + ); + + cy.get('[data-testid=place-of-legal-residence-label]').should( + 'have.text', + 'Place of legal residence:', + ); + + cy.get('[data-testid="primary-place-of-legal-residence"]').should( + 'have.text', + contactInfo.placeOfLegalResidenceLabel, + ); + + cy.get('[data-testid="contact-info-phone-number"]').should( + 'contain.text', + contactInfo.phone, + ); + + cy.get('[data-testid="contact-primary-email"]').should( + 'have.text', + contactInfo.email, + ); + }); + + it('should display petitioner information correctly for international address and should not show legal place of residence if user did not select one', () => { + cy.get('[data-testid="filing-type-0"]').click(); + cy.get('[data-testid="contact-primary-name"]').type(contactInfo.name); + fillPrimaryContactInternational(); + cy.get('[data-testid="step-1-next-button"]').click(); + + cy.get('[data-testid="contact-primary-phone"]').type(contactInfo.phone); + cy.get('[data-testid="step-1-next-button"]').click(); + + fillPetitionFileInformation(VALID_FILE); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + + cy.get('[data-testid="party-type"]').should('have.text', 'Petitioner'); + + cy.get('[data-testid="contact-name"]') + .invoke('text') + .then(value => value.trim()) + .should('equal', contactInfo.name); + + cy.get('[data-testid="address1-line"]').should( + 'have.text', + contactInfo.address1, + ); + + cy.get('[data-testid="contact-address-information"]').should( + 'contain.text', + contactInfo.city, + ); + + cy.get('[data-testid="contact-address-information"]').should( + 'contain.text', + contactInfo.internationalState, + ); + + cy.get('[data-testid="contact-address-information"]').should( + 'contain.text', + contactInfo.internationalPostalCode, + ); + + cy.get('[data-testid="contact-country-line"]').should( + 'have.text', + contactInfo.country, + ); + + cy.get('[data-testid=place-of-legal-residence-label]').should( + 'not.exist', + ); + + cy.get('[data-testid="primary-place-of-legal-residence"]').should( + 'not.exist', + ); + + cy.get('[data-testid="contact-primary-email"]').should( + 'have.text', + contactInfo.email, + ); + }); + + it('should not show counsel contact information when user generates petition file', () => { + fillPetitionerInformation(); + fillGeneratePetitionFileInformation(); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + cy.get('[data-testid="petition-review-counsel-information"]').should( + 'not.exist', + ); + }); + + it('should not show counsel contact information when user uploads petitions file', () => { + fillPetitionerInformation(); + fillPetitionFileInformation(VALID_FILE); + fillIrsNoticeInformation(VALID_FILE); + fillCaseProcedureInformation(); + fillStinInformation(VALID_FILE); + cy.get('[data-testid="petition-review-counsel-information"]').should( + 'not.exist', + ); + }); + }); + }); - fillPetitionFileInformation(VALID_FILE); + describe('Practitioner', () => { + beforeEach(() => { + loginAsPrivatePractitioner(); + cy.visit('/file-a-petition/new'); + }); + it('should show counsel contact information when user generated the petition', () => { + fillPetitionerInformation(); + fillGeneratePetitionFileInformation(); fillIrsNoticeInformation(VALID_FILE); fillCaseProcedureInformation(); fillStinInformation(VALID_FILE); - cy.get('[data-testid="party-type"]').should('have.text', 'Petitioner'); - - cy.get('[data-testid="contact-name"]') - .invoke('text') - .then(value => value.trim()) - .should('equal', contactInfo.name); - - cy.get('[data-testid="contact-address-information"]').should( - 'contain.text', - contactInfo.address1, - ); - - cy.get('[data-testid="contact-address-information"]').should( - 'contain.text', - contactInfo.city, - ); - - cy.get('[data-testid="contact-address-information"]').should( - 'contain.text', - contactInfo.state, - ); - - cy.get('[data-testid="contact-address-information"]').should( - 'contain.text', - contactInfo.postalCode, - ); - - cy.get('[data-testid=place-of-legal-residence-label]').should( - 'have.text', - 'Place of legal residence:', + cy.get('[data-testid="petition-review-counsel-information"]').contains( + 'Counsel’s Contact Information', ); - cy.get('[data-testid="primary-place-of-legal-residence"]').should( - 'have.text', - contactInfo.placeOfLegalResidenceLabel, - ); - - cy.get('[data-testid="contact-info-phone-number"]').should( - 'contain.text', - contactInfo.phone, - ); - - cy.get('[data-testid="contact-primary-email"]').should( - 'have.text', - contactInfo.email, + cy.get('[data-testid="info-alert"]').contains( + 'Your petition will not be created with the Court until the Submit Documents & Create Case button is clicked.', ); }); - it('should display petitioner information correctly for international address and should not show legal place of residence if user did not select one', () => { - cy.get('[data-testid="filing-type-0"]').click(); - cy.get('[data-testid="contact-primary-name"]').type(contactInfo.name); - fillPrimaryContactInternational(); - cy.get('[data-testid="step-1-next-button"]').click(); - - cy.get('[data-testid="contact-primary-phone"]').type(contactInfo.phone); - cy.get('[data-testid="step-1-next-button"]').click(); - + it('should not show counsel contact information when user uploaded petition', () => { + fillPetitionerInformation(); fillPetitionFileInformation(VALID_FILE); fillIrsNoticeInformation(VALID_FILE); fillCaseProcedureInformation(); fillStinInformation(VALID_FILE); - - cy.get('[data-testid="party-type"]').should('have.text', 'Petitioner'); - - cy.get('[data-testid="contact-name"]') - .invoke('text') - .then(value => value.trim()) - .should('equal', contactInfo.name); - - cy.get('[data-testid="address1-line"]').should( - 'have.text', - contactInfo.address1, - ); - - cy.get('[data-testid="contact-address-information"]').should( - 'contain.text', - contactInfo.city, - ); - - cy.get('[data-testid="contact-address-information"]').should( - 'contain.text', - contactInfo.internationalState, - ); - - cy.get('[data-testid="contact-address-information"]').should( - 'contain.text', - contactInfo.internationalPostalCode, - ); - - cy.get('[data-testid="contact-country-line"]').should( - 'have.text', - contactInfo.country, - ); - - cy.get('[data-testid=place-of-legal-residence-label]').should( - 'not.exist', - ); - - cy.get('[data-testid="primary-place-of-legal-residence"]').should( + cy.get('[data-testid="petition-review-counsel-information"]').should( 'not.exist', ); - - cy.get('[data-testid="contact-primary-email"]').should( - 'have.text', - contactInfo.email, - ); }); }); }); diff --git a/package-lock.json b/package-lock.json index e838561df52..50f31b5e417 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1209,24 +1209,24 @@ } }, "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.632.0.tgz", - "integrity": "sha512-ciPZZ0jxMmXuaKCVdJthWogfqJ/4nb1zCxm7D/XkKcSbANjAiJ+1l+yiu7ZPTLGKKPRQQkPsWUknw5xb/5LxeQ==", + "version": "3.624.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.624.0.tgz", + "integrity": "sha512-imw3bNptHdhcogU3lwSVlQJsRpTxnkT4bQbchS/qX6+fF0Pk6ERZ+Q0YjzitPqTjkeyAWecUT4riyqv2djo+5w==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.632.0", - "@aws-sdk/client-sts": "3.632.0", - "@aws-sdk/core": "3.629.0", - "@aws-sdk/credential-provider-node": "3.632.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-user-agent": "3.632.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.632.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", @@ -1323,22 +1323,38 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/client-sso": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.632.0.tgz", - "integrity": "sha512-iYWHiKBz44m3chCFvtvHnvCpL2rALzyr1e6tOZV3dLlOKtQtDUlPy6OtnXDu4y+wyJCniy8ivG3+LAe4klzn1Q==", + "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-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.629.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.620.0", - "@aws-sdk/middleware-user-agent": "3.632.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.632.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", @@ -1366,29 +1382,32 @@ "@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" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.632.0.tgz", - "integrity": "sha512-Oh1fIWaoZluihOCb/zDEpRTi+6an82fgJz7fyRBugyLhEtDjmvpCQ3oKjzaOhoN+4EvXAm1ZS/ZgpvXBlIRTgw==", - "dev": true, + "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/core": "3.629.0", - "@aws-sdk/credential-provider-node": "3.632.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-user-agent": "3.632.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.632.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", @@ -1420,29 +1439,62 @@ }, "engines": { "node": ">=16.0.0" + } + }, + "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": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.632.0" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/client-sts": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.632.0.tgz", - "integrity": "sha512-Ss5cBH09icpTvT+jtGGuQlRdwtO7RyE9BF4ZV/CEPATdd9whtJt4Qxdya8BUnkWR7h5HHTrQHqai3YVYjku41A==", - "dev": true, + "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==", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "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.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.632.0", - "@aws-sdk/core": "3.629.0", - "@aws-sdk/credential-provider-node": "3.632.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-user-agent": "3.632.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.632.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", @@ -1476,129 +1528,10 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/core": { - "version": "3.629.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.629.0.tgz", - "integrity": "sha512-+/ShPU/tyIBM3oY1cnjgNA/tFyHtlWq+wXF9xEKRv19NOpYbWQ+xzNwVjGq8vR07cCRqy/sDQLWPhxjtuV/FiQ==", - "dev": true, - "dependencies": { - "@smithy/core": "^2.3.2", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/protocol-http": "^4.1.0", - "@smithy/signature-v4": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", - "@smithy/types": "^3.3.0", - "@smithy/util-middleware": "^3.0.3", - "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.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.632.0.tgz", - "integrity": "sha512-m6epoW41xa1ajU5OiHcmQHoGVtrbXBaRBOUhlCLZmcaqMLYsboM4iD/WZP8aatKEON5tTnVXh/4StV8D/+wemw==", - "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.632.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.632.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.632.0.tgz", - "integrity": "sha512-cL8fuJWm/xQBO4XJPkeuZzl3XinIn9EExWgzpG48NRMKR5us1RI/ucv7xFbBBaG+r/sDR2HpYBIA3lVIpm1H3Q==", - "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.632.0", - "@aws-sdk/credential-provider-process": "3.620.1", - "@aws-sdk/credential-provider-sso": "3.632.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.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.632.0.tgz", - "integrity": "sha512-P/4wB6j7ym5QCPTL2xlMfvf2NcXSh+z0jmsZP4WW/tVwab4hvgabPPbLeEZDSWZ0BpgtxKGvRq0GSHuGeirQbA==", - "dev": true, - "dependencies": { - "@aws-sdk/client-sso": "3.632.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/@aws-sdk/middleware-user-agent": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.632.0.tgz", - "integrity": "sha512-yY/sFsHKwG9yzSf/DTclqWJaGPI2gPBJDCGBujSqTG1zlS7Ot4fqi91DZ6088BFWzbOorDzJFcAhAEFzc6LuQg==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.632.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/client-cognito-identity/node_modules/@aws-sdk/util-endpoints": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.632.0.tgz", - "integrity": "sha512-LlYMU8pAbcEQphOpE6xaNLJ8kPGhklZZTVzZVpVW477NaaGgoGTMYNXTABYHcxeF5E2lLrxql9OmVpvr8GWN8Q==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", - "@smithy/util-endpoints": "^2.0.5", - "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-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==", - "dev": true, "dependencies": { "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" @@ -1607,10 +1540,11 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb": { + "node_modules/@aws-sdk/client-iam": { "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.624.0.tgz", - "integrity": "sha512-/xssTNmwL+au3JIRQLHwz6O1kF8R9lfmL1PocQ+9sxcL4titU9TGslUotvZjdbklp3LzfusQh9Svx5g8EaONSw==", + "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", @@ -1618,7 +1552,6 @@ "@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.620.0", @@ -1654,17 +1587,29 @@ "@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": { + "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" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-lambda": { "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==", + "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", @@ -1683,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", @@ -1705,26 +1653,16 @@ "@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-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": { - "@smithy/util-buffer-from": "^3.0.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-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==", @@ -1736,22 +1674,10 @@ "node": ">=16.0.0" } }, - "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.627.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-glue/-/client-glue-3.627.0.tgz", - "integrity": "sha512-KYfbS8Qz3rAW6eKvh5E/YHCCJi6A6unw1jNe8rQOFJso4dDwpx3MLv8djwjHC5EKSFDwJ6Vf4joMg1CqgQQetg==", + "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", @@ -1799,7 +1725,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-glue/node_modules/@smithy/util-utf8": { + "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==", @@ -1811,11 +1737,10 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-iam": { + "node_modules/@aws-sdk/client-route-53": { "version": "3.624.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-iam/-/client-iam-3.624.0.tgz", - "integrity": "sha512-a3Qy7AIht2nHiZPJ/HiMdyiOLiDN+iKp1R916SEbgFi9MiOyRHFeLCCPQHMf1O8YXfb0hbHr5IFnfZLfUcJaWQ==", - "dev": true, + "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", @@ -1826,210 +1751,14 @@ "@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", - "@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", - "@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" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-lambda": { - "version": "3.624.0", - "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", - "@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/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", - "@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-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.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.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-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" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "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.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-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", + "@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", @@ -2720,12 +2449,12 @@ } }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.632.0.tgz", - "integrity": "sha512-fr+xCIqMYsUD67vwE/IpboIqHiEYMQMrpPjnvpbbvyjTKspFh0GS7Qn1LVFCd5oNeu1rzAdJei1On2HBOwIiZQ==", + "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": { - "@aws-sdk/client-cognito-identity": "3.632.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", @@ -2864,310 +2593,26 @@ } }, "node_modules/@aws-sdk/credential-providers": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.632.0.tgz", - "integrity": "sha512-Q4x2ARdgncZKOJE/NXJHY5s8/YDRugVUR4lBEtibE764w5ezAhI1aMChzAzv4j3WMSDZ29KyxaymHHt2vJED9g==", - "dev": true, - "dependencies": { - "@aws-sdk/client-cognito-identity": "3.632.0", - "@aws-sdk/client-sso": "3.632.0", - "@aws-sdk/client-sts": "3.632.0", - "@aws-sdk/credential-provider-cognito-identity": "3.632.0", - "@aws-sdk/credential-provider-env": "3.620.1", - "@aws-sdk/credential-provider-http": "3.622.0", - "@aws-sdk/credential-provider-ini": "3.632.0", - "@aws-sdk/credential-provider-node": "3.632.0", - "@aws-sdk/credential-provider-process": "3.620.1", - "@aws-sdk/credential-provider-sso": "3.632.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" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/client-sso": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.632.0.tgz", - "integrity": "sha512-iYWHiKBz44m3chCFvtvHnvCpL2rALzyr1e6tOZV3dLlOKtQtDUlPy6OtnXDu4y+wyJCniy8ivG3+LAe4klzn1Q==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.629.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.632.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.632.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/credential-providers/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.632.0.tgz", - "integrity": "sha512-Oh1fIWaoZluihOCb/zDEpRTi+6an82fgJz7fyRBugyLhEtDjmvpCQ3oKjzaOhoN+4EvXAm1ZS/ZgpvXBlIRTgw==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.629.0", - "@aws-sdk/credential-provider-node": "3.632.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.632.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.632.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" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.632.0" - } - }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/client-sts": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.632.0.tgz", - "integrity": "sha512-Ss5cBH09icpTvT+jtGGuQlRdwtO7RyE9BF4ZV/CEPATdd9whtJt4Qxdya8BUnkWR7h5HHTrQHqai3YVYjku41A==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.632.0", - "@aws-sdk/core": "3.629.0", - "@aws-sdk/credential-provider-node": "3.632.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.632.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.632.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/credential-providers/node_modules/@aws-sdk/core": { - "version": "3.629.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.629.0.tgz", - "integrity": "sha512-+/ShPU/tyIBM3oY1cnjgNA/tFyHtlWq+wXF9xEKRv19NOpYbWQ+xzNwVjGq8vR07cCRqy/sDQLWPhxjtuV/FiQ==", - "dev": true, - "dependencies": { - "@smithy/core": "^2.3.2", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/protocol-http": "^4.1.0", - "@smithy/signature-v4": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", - "@smithy/types": "^3.3.0", - "@smithy/util-middleware": "^3.0.3", - "fast-xml-parser": "4.4.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.632.0.tgz", - "integrity": "sha512-m6epoW41xa1ajU5OiHcmQHoGVtrbXBaRBOUhlCLZmcaqMLYsboM4iD/WZP8aatKEON5tTnVXh/4StV8D/+wemw==", - "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.632.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.632.0" - } - }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.632.0.tgz", - "integrity": "sha512-cL8fuJWm/xQBO4XJPkeuZzl3XinIn9EExWgzpG48NRMKR5us1RI/ucv7xFbBBaG+r/sDR2HpYBIA3lVIpm1H3Q==", + "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-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.632.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.632.0", + "@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/credential-providers/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.632.0.tgz", - "integrity": "sha512-P/4wB6j7ym5QCPTL2xlMfvf2NcXSh+z0jmsZP4WW/tVwab4hvgabPPbLeEZDSWZ0BpgtxKGvRq0GSHuGeirQbA==", - "dev": true, - "dependencies": { - "@aws-sdk/client-sso": "3.632.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/credential-providers/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.632.0.tgz", - "integrity": "sha512-yY/sFsHKwG9yzSf/DTclqWJaGPI2gPBJDCGBujSqTG1zlS7Ot4fqi91DZ6088BFWzbOorDzJFcAhAEFzc6LuQg==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.632.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/credential-providers/node_modules/@aws-sdk/util-endpoints": { - "version": "3.632.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.632.0.tgz", - "integrity": "sha512-LlYMU8pAbcEQphOpE6xaNLJ8kPGhklZZTVzZVpVW477NaaGgoGTMYNXTABYHcxeF5E2lLrxql9OmVpvr8GWN8Q==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.609.0", "@smithy/types": "^3.3.0", - "@smithy/util-endpoints": "^2.0.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-providers/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": { @@ -4258,33 +3703,33 @@ } }, "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==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.20.0.tgz", + "integrity": "sha512-ErsxbfCGIwdqD8jipqdxpfAGiUEQS7MWUe39Rjhl0ZVPsb1JEe9bZCe2+0g23HDH6DGyCAtnTNN9scPtievrMQ==", "dev": true, "dependencies": { - "@azure/msal-common": "14.14.1" + "@azure/msal-common": "14.14.0" }, "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==", + "version": "14.14.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.14.0.tgz", + "integrity": "sha512-OxcOk9H1/1fktHh6//VCORgSNJc2dCQObTm6JNmL824Z6iZSO6eFo/Bttxe0hETn9B+cr7gDouTQtsRq3YPuSQ==", "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==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.12.0.tgz", + "integrity": "sha512-jmk5Im5KujRA2AcyCb0awA3buV8niSrwXZs+NBJWIvxOz76RvNlusGIqi43A0h45BPUy93Qb+CPdpJn82NFTIg==", "dev": true, "dependencies": { - "@azure/msal-common": "14.14.1", + "@azure/msal-common": "14.14.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, @@ -6316,9 +5761,9 @@ } }, "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==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-4.2.1.tgz", + "integrity": "sha512-CEypeeykO9AN7JWkr1OEOQb0HRzZlPWGwV0Ya6DuVgFdDi6g3ma/cPZ5ZPZM4AWQikDpq/0llnGGlIL+j8afzw==", "dev": true, "funding": [ { @@ -6331,7 +5776,7 @@ } ], "engines": { - "node": ">=18" + "node": "^14 || ^16 || >=18" } }, "node_modules/@csstools/css-calc": { @@ -6358,9 +5803,9 @@ } }, "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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.0.tgz", + "integrity": "sha512-F/A1Z3ZXH4fU6+29Up4QAZtewLmWLI4hVz6hyODMFvorx4AEC/03tu+gFq0nMZSDafC0lmapNOj9f4ctHMNaqQ==", "dev": true, "funding": [ { @@ -6373,7 +5818,7 @@ } ], "dependencies": { - "@csstools/color-helpers": "^5.0.1", + "@csstools/color-helpers": "^4.2.1", "@csstools/css-calc": "^2.0.0" }, "engines": { @@ -6475,9 +5920,9 @@ } }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.0.tgz", + "integrity": "sha512-e0RohXUxMsSzIS5s4xh218NiOYXAfby17L8KYe/6ITI8i4BiSFLpywMvpA/d6xPUGUfT20O+7JLBDHF3heYZRA==", "dev": true, "funding": [ { @@ -6490,7 +5935,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-color-parser": "^3.0.0", "@csstools/css-parser-algorithms": "^3.0.0", "@csstools/css-tokenizer": "^3.0.0", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -6504,9 +5949,9 @@ } }, "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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.0.tgz", + "integrity": "sha512-MWuSfaLKe1By/hSnjH/Hj7ZOIRZaLMNshCTkVuuqtZ0nfp+QRGUwf9nb2uPVKySYjKqNERANdA9Q0citA9hK1Q==", "dev": true, "funding": [ { @@ -6519,7 +5964,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-color-parser": "^3.0.0", "@csstools/css-parser-algorithms": "^3.0.0", "@csstools/css-tokenizer": "^3.0.0", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -6614,9 +6059,9 @@ } }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.0.tgz", + "integrity": "sha512-JftxHVGt6PFfV/vWTDVKrrO0XyUA8OtuVykXhhMxue9qCzCCTSWqMHjZOvaOCCbxG1v2tGKV2FxBLQhzsZZPJg==", "dev": true, "funding": [ { @@ -6629,7 +6074,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-color-parser": "^3.0.0", "@csstools/css-parser-algorithms": "^3.0.0", "@csstools/css-tokenizer": "^3.0.0" }, @@ -6641,9 +6086,9 @@ } }, "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==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.0.tgz", + "integrity": "sha512-jmgh7C6ANVRPdFNMNIp426UFNuy01XXYwxbbyYV2fZBbmZleVLp6imxjw2XoaeHMdSiYoq8vOeX+GVzCyC7oOQ==", "dev": true, "funding": [ { @@ -6656,7 +6101,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-color-parser": "^3.0.0", "@csstools/css-parser-algorithms": "^3.0.0", "@csstools/css-tokenizer": "^3.0.0", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -6670,9 +6115,9 @@ } }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.0.tgz", + "integrity": "sha512-Swb2CK/wKnsXEgT5GNlIO2C2h3lePn0Nmbsy48Z6yAht1XwQiDcxDAhqojg9LfonJVics+pzLM+IEQjPdgICNg==", "dev": true, "funding": [ { @@ -6685,7 +6130,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-color-parser": "^3.0.0", "@csstools/css-parser-algorithms": "^3.0.0", "@csstools/css-tokenizer": "^3.0.0", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -6774,9 +6219,9 @@ } }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.0.tgz", + "integrity": "sha512-1CHfwwckSJ4xYZYOgJD5u1NNlP85/6VqsQPL1geagvfpwm47hcGRDW+O3CD7KdexWGL45E5qKmL1bC2siqjmkg==", "dev": true, "funding": [ { @@ -7025,9 +6470,9 @@ } }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.0.tgz", + "integrity": "sha512-4dwot1KLiFRFbYZV2XeeNoXQETK/3MaNCi4BpDlJ5J4XHF+VRwcppfCcqCC+TRucWanPFFlbt+X53nIuK7JVNg==", "dev": true, "funding": [ { @@ -7040,7 +6485,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-color-parser": "^3.0.0", "@csstools/css-parser-algorithms": "^3.0.0", "@csstools/css-tokenizer": "^3.0.0", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -7079,9 +6524,9 @@ } }, "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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.0.tgz", + "integrity": "sha512-iE/mgtuUeFMpMJhhrze9pu5xSEaueCTijs7lTnJ6MoTL50H9fquQp3bFVd2haAb/fDhO/nXTu67tzsm+zXsFzA==", "dev": true, "funding": [ { @@ -7094,7 +6539,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-color-parser": "^3.0.0", "@csstools/css-parser-algorithms": "^3.0.0", "@csstools/css-tokenizer": "^3.0.0", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -7160,9 +6605,9 @@ } }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.0.tgz", + "integrity": "sha512-vyJpbr2emWy8AOmBT+41LcAaaS8Q3jOMiMZRzrdV8uZgKI1I0NiB+UM7vJuwkFPhC3oXl7XPIPtajsyEAvI3kw==", "dev": true, "funding": [ { @@ -7175,7 +6620,7 @@ } ], "dependencies": { - "@csstools/color-helpers": "^5.0.1", + "@csstools/color-helpers": "^4.2.1", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -7756,70 +7201,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/aix-ppc64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz", - "integrity": "sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.0.tgz", - "integrity": "sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz", - "integrity": "sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.0.tgz", - "integrity": "sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/darwin-arm64": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz", @@ -7836,310 +7217,6 @@ "node": ">=18" } }, - "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/@esbuild/freebsd-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz", - "integrity": "sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz", - "integrity": "sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz", - "integrity": "sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz", - "integrity": "sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz", - "integrity": "sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz", - "integrity": "sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz", - "integrity": "sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz", - "integrity": "sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz", - "integrity": "sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz", - "integrity": "sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz", - "integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz", - "integrity": "sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz", - "integrity": "sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz", - "integrity": "sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz", - "integrity": "sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz", - "integrity": "sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz", - "integrity": "sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz", - "integrity": "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "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", @@ -11084,11 +10161,11 @@ } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.6.tgz", - "integrity": "sha512-2hM54UWQUOrki4BtsUI1WzmD13/SeaqT/AB3EUJKbcver/WgKNaiJ5y5F5XXuVe6UekffVzuUDrBZVAA3AWRpQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.5.tgz", + "integrity": "sha512-dEyiUYL/ekDfk+2Ra4GxV+xNnFoCmk1nuIXg+fMChFTrM2uI/1r9AdiTYzPqgb72yIv/NtAj6C3dG//1wwgakQ==", "dependencies": { - "@smithy/eventstream-serde-universal": "^3.0.5", + "@smithy/eventstream-serde-universal": "^3.0.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -11109,11 +10186,11 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.5.tgz", - "integrity": "sha512-+upXvnHNyZP095s11jF5dhGw/Ihzqwl5G+/KtMnoQOpdfC3B5HYCcDVG9EmgkhJMXJlM64PyN5gjJl0uXFQehQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.4.tgz", + "integrity": "sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg==", "dependencies": { - "@smithy/eventstream-serde-universal": "^3.0.5", + "@smithy/eventstream-serde-universal": "^3.0.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -11122,9 +10199,9 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.5.tgz", - "integrity": "sha512-5u/nXbyoh1s4QxrvNre9V6vfyoLWuiVvvd5TlZjGThIikc3G+uNiG9uOTCWweSRjv1asdDIWK7nOmN7le4RYHQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.4.tgz", + "integrity": "sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A==", "dependencies": { "@smithy/eventstream-codec": "^3.1.2", "@smithy/types": "^3.3.0", @@ -12959,9 +12036,9 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.11", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", - "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", "dependencies": { "@types/react": "*" } @@ -14580,9 +13657,9 @@ "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" }, "node_modules/aws-sdk": { - "version": "2.1676.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1676.0.tgz", - "integrity": "sha512-Kzg9931GroRG6uLoUEF5Pcp005D1xilgQ8ntH0fKFxiYKGkQqkU/3JkV6k7jNRzouxTypaozzXYVNXsHRgH6JA==", + "version": "2.1669.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1669.0.tgz", + "integrity": "sha512-ua3AfvS2rUiOpf9choxNXLKE3T70yY6klGovdekXd5ZTwzDXQoYw1dokfArIub/2BM9Dmgi/bFq/crnz83tX0w==", "hasInstallScript": true, "dependencies": { "buffer": "4.9.2", @@ -15103,26 +14180,23 @@ "dev": true }, "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", "dev": true, "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" + "@babel/plugin-syntax-top-level-await": "^7.8.3" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -15943,9 +15017,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001651", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", - "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "version": "1.0.30001650", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001650.tgz", + "integrity": "sha512-fgEc7hP/LB7iicdXHUI9VsBsMZmUmlVJeQP2qqQW+3lkqVhbmjEU8zp+h5stWeilX+G7uXuIUIIlWlDw9jdt8g==", "dev": true, "funding": [ { @@ -16099,25 +15173,21 @@ } }, "node_modules/cheerio": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", - "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", "dev": true, "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", - "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" + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" }, "engines": { - "node": ">=18.17" + "node": ">= 6" }, "funding": { "url": "https://github.com/cheeriojs/cheerio?sponsor=1" @@ -18390,9 +17460,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.9.tgz", - "integrity": "sha512-HfkT8ndXR0SEkU8gBQQM3rz035bpE/hxkZ1YIt4KJPEFES68HfIU6LzKukH0H794Lm83WJtkSAMfEToxCs15VA==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.5.tgz", + "integrity": "sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==", "dev": true }, "node_modules/element-closest": { @@ -18404,9 +17474,9 @@ } }, "node_modules/elliptic": { - "version": "6.5.7", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", - "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", + "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", @@ -18481,31 +17551,6 @@ "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", @@ -20802,9 +19847,9 @@ } }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", @@ -21772,9 +20817,9 @@ } }, "node_modules/htmlparser2": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", - "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -21786,8 +20831,8 @@ "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "entities": "^4.5.0" + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, "node_modules/http-assert": { @@ -22018,9 +21063,9 @@ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -25402,186 +24447,6 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.26.0.tgz", - "integrity": "sha512-Rf9HuHIDi1R6/zgBkJh25SiJHF+dm9axUZW/0UoYCW1/8HV0gMI0blARhH4z+REmWiU1yYT/KyNF3h7tHyRXUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.26.0.tgz", - "integrity": "sha512-C/io7POAxp6sZxFSVGezjajMlCKQ8KSwISLLGRq8xLQpQMokYrUoqYEwmIX8mLmF6C/CZPk0gFmRSzd8biWM0g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.26.0.tgz", - "integrity": "sha512-Aag9kqXqkyPSW+dXMgyWk66C984Nay2pY8Nws+67gHlDzV3cWh7TvFlzuaTaVFMVqdDTzN484LSK3u39zFBnzg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.26.0.tgz", - "integrity": "sha512-iJmZM7fUyVjH+POtdiCtExG+67TtPUTer7K/5A8DIfmPfrmeGvzfRyBltGhQz13Wi15K1lf2cPYoRaRh6vcwNA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.26.0.tgz", - "integrity": "sha512-XxoEL++tTkyuvu+wq/QS8bwyTXZv2y5XYCMcWL45b8XwkiS8eEEEej9BkMGSRwxa5J4K+LDeIhLrS23CpQyfig==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.26.0.tgz", - "integrity": "sha512-1dkTfZQAYLj8MUSkd6L/+TWTG8V6Kfrzfa0T1fSlXCXQHrt1HC1/UepXHtKHDt/9yFwyoeayivxXAsApVxn6zA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.26.0.tgz", - "integrity": "sha512-yX3Rk9m00JGCUzuUhFEojY+jf/6zHs3XU8S8Vk+FRbnr4St7cjyMXdNjuA2LjiT8e7j8xHRCH8hyZ4H/btRE4A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.26.0.tgz", - "integrity": "sha512-X/597/cFnCogy9VItj/+7Tgu5VLbAtDF7KZDPdSw0MaL6FL940th1y3HiOzFIlziVvAtbo0RB3NAae1Oofr+Tw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.26.0.tgz", - "integrity": "sha512-pYS3EyGP3JRhfqEFYmfFDiZ9/pVNfy8jVIYtrx9TVNusVyDK3gpW1w/rbvroQ4bDJi7grdUtyrYU6V2xkY/bBw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "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", @@ -28642,18 +27507,6 @@ "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", @@ -29233,9 +28086,9 @@ } }, "node_modules/postcss-color-functional-notation": { - "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==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.0.tgz", + "integrity": "sha512-WjOCE1FJb2xIeFvF40CISn9yUMtzwkgjdbjXmWjbrC1wAgQiB763h7bsip9piGtAkbeM5Pi9hVIDSmtbWrlqLw==", "dev": true, "funding": [ { @@ -29248,7 +28101,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-color-parser": "^3.0.0", "@csstools/css-parser-algorithms": "^3.0.0", "@csstools/css-tokenizer": "^3.0.0", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -29558,9 +28411,9 @@ } }, "node_modules/postcss-lab-function": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.1.tgz", - "integrity": "sha512-G9ecsdU+TtdHJvaTrfbIyOa3iHHJMZXdvsLXJSN8IP4cfg3XraozacAt6P7xzaILIC3XPGMM149oKhf2tjPubg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.0.tgz", + "integrity": "sha512-Qyrlog4fAJcbwiWHiwkpDLlSRnvk2dFYqygQ29sMbhCoq6B/Jtj89u89VFNaAatW8KkDDAeNzVvabK9NBD9hJA==", "dev": true, "funding": [ { @@ -29573,7 +28426,7 @@ } ], "dependencies": { - "@csstools/css-color-parser": "^3.0.1", + "@csstools/css-color-parser": "^3.0.0", "@csstools/css-parser-algorithms": "^3.0.0", "@csstools/css-tokenizer": "^3.0.0", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -29935,9 +28788,9 @@ } }, "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", - "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.4.tgz", + "integrity": "sha512-R6vHqZWgVnTAPq0C+xjyHfEZqfIYboCBVSy24MjxEDm+tIh1BU4O6o7DP7AA7kHzf136d+Qc5duI4tlpHjixDw==", "dev": true }, "node_modules/postcss-safe-parser": { @@ -30018,9 +28871,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -31859,35 +30712,35 @@ }, "node_modules/s3rver": { "name": "@20minutes/s3rver", - "version": "4.0.1", - "resolved": "git+ssh://git@github.com/20minutes/s3rver.git#602411e44b45cd3607385b80142b67822c496b70", + "version": "4.0.0", + "resolved": "git+ssh://git@github.com/20minutes/s3rver.git#6960fcd9915bf68caf9a3081343b4fca79db208b", "dev": true, "dependencies": { - "@koa/router": "^12.0.1", + "@koa/router": "^12.0.0", "busboy": "^1.6.0", - "commander": "^12.1.0", - "fast-xml-parser": "^4.4.1", + "commander": "^11.0.0", + "fast-xml-parser": "^4.3.1", "he": "^1.2.0", - "koa": "^2.15.3", + "koa": "^2.12.1", "koa-logger": "^3.2.0", "lodash": "^4.17.20", "statuses": "^2.0.0", - "winston": "^3.14.1" + "winston": "^3.10.0" }, "bin": { "s3rver": "bin/s3rver.js" }, "engines": { - "node": ">=20" + "node": ">=12.13.0" } }, "node_modules/s3rver/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, "engines": { - "node": ">=18" + "node": ">=16" } }, "node_modules/safe-array-concat": { @@ -32034,86 +30887,6 @@ "sass-embedded-win32-x64": "1.77.8" } }, - "node_modules/sass-embedded-android-arm": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.77.8.tgz", - "integrity": "sha512-GpGL7xZ7V1XpFbnflib/NWbM0euRzineK0iwoo31/ntWKAXGj03iHhGzkSiOwWSFcXgsJJi3eRA5BTmBvK5Q+w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-android-arm64": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.77.8.tgz", - "integrity": "sha512-EmWHLbEx0Zo/f/lTFzMeH2Du+/I4RmSRlEnERSUKQWVp3aBSO04QDvdxfFezgQ+2Yt/ub9WMqBpma9P/8MPsLg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-android-ia32": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.77.8.tgz", - "integrity": "sha512-+GjfJ3lDezPi4dUUyjQBxlNKXNa+XVWsExtGvVNkv1uKyaOxULJhubVo2G6QTJJU0esJdfeXf5Ca5/J0ph7+7w==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-android-x64": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.77.8.tgz", - "integrity": "sha512-YZbFDzGe5NhaMCygShqkeCWtzjhkWxGVunc7ULR97wmxYPQLPeVyx7XFQZc84Aj0lKAJBJS4qRZeqphMqZEJsQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/sass-embedded-darwin-arm64": { "version": "1.77.8", "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.77.8.tgz", @@ -32134,234 +30907,6 @@ "node": ">=14.0.0" } }, - "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-linux-arm": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.77.8.tgz", - "integrity": "sha512-2edZMB6jf0whx3T0zlgH+p131kOEmWp+I4wnKj7ZMUeokiY4Up05d10hSvb0Q63lOrSjFAWu6P5/pcYUUx8arQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-arm64": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.77.8.tgz", - "integrity": "sha512-6iIOIZtBFa2YfMsHqOb3qake3C9d/zlKxjooKKnTSo+6g6z+CLTzMXe1bOfayb7yxeenElmFoK1k54kWD/40+g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-ia32": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.77.8.tgz", - "integrity": "sha512-63GsFFHWN5yRLTWiSef32TM/XmjhCBx1DFhoqxmj+Yc6L9Z1h0lDHjjwdG6Sp5XTz5EmsaFKjpDgnQTP9hJX3Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-arm": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.77.8.tgz", - "integrity": "sha512-nFkhSl3uu9btubm+JBW7uRglNVJ8W8dGfzVqh3fyQJKS1oyBC3vT3VOtfbT9YivXk28wXscSHpqXZwY7bUuopA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-arm64": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.77.8.tgz", - "integrity": "sha512-j8cgQxNWecYK+aH8ESFsyam/Q6G+9gg8eJegiRVpA9x8yk3ykfHC7UdQWwUcF22ZcuY4zegrjJx8k+thsgsOVA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-ia32": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.77.8.tgz", - "integrity": "sha512-oWveMe+8TFlP8WBWPna/+Ec5TV0CE+PxEutyi0ltSruBds2zxRq9dPVOqrpPcDN9QUx50vNZC0Afgch0aQEd0g==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-x64": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.77.8.tgz", - "integrity": "sha512-2NtRpMXHeFo9kaYxuZ+Ewwo39CE7BTS2JDfXkTjZTZqd8H+8KC53eBh516YQnn2oiqxSiKxm7a6pxbxGZGwXOQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-x64": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.77.8.tgz", - "integrity": "sha512-ND5qZLWUCpOn7LJfOf0gLSZUWhNIysY+7NZK1Ctq+pM6tpJky3JM5I1jSMplNxv5H3o8p80n0gSm+fcjsEFfjQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-win32-arm64": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.77.8.tgz", - "integrity": "sha512-7L8zT6xzEvTYj86MvUWnbkWYCNQP+74HvruLILmiPPE+TCgOjgdi750709BtppVJGGZSs40ZuN6mi/YQyGtwXg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass.bat" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-win32-ia32": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.77.8.tgz", - "integrity": "sha512-7Buh+4bP0WyYn6XPbthkIa3M2vtcR8QIsFVg3JElVlr+8Ng19jqe0t0SwggDgbMX6AdQZC+Wj4F1BprZSok42A==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass.bat" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-win32-x64": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.77.8.tgz", - "integrity": "sha512-rZmLIx4/LLQm+4GW39sRJW0MIlDqmyV0fkRzTmhFP5i/wVC7cuj8TUubPHw18rv2rkHFfBZKZJTCkPjCS5Z+SA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "bin": { - "sass": "dart-sass/sass.bat" - }, - "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", @@ -34473,9 +33018,9 @@ } }, "node_modules/terser": { - "version": "5.31.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", - "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "version": "5.31.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.4.tgz", + "integrity": "sha512-3OU03GgblDgu0g+sdnsVzhBPxnjV+WJuMmocN1qBBZDQ3ia7jZQSAkePeKbPlYAejGXUTYe1CmSaUeV51mvaIw==", "dev": true, "peer": true, "dependencies": { @@ -34741,21 +33286,21 @@ } }, "node_modules/tldts": { - "version": "6.1.39", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.39.tgz", - "integrity": "sha512-UCGXcPhYIUELc+FifEeDXYkoTWNU6iOEdM/Q5LsvkTz2SnpQ3q5onA+DiiZlR5YDskMhfK1YBQDeWL7PH9/miQ==", + "version": "6.1.38", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.38.tgz", + "integrity": "sha512-1onihAOxYDzhsQXl9XMlDQSjdIgMAz3ugom3BdS4K71GbHmNmrRSR5PYFYIBoE4QBB0v1dPqj47D3o/2C9M+KQ==", "dev": true, "dependencies": { - "tldts-core": "^6.1.39" + "tldts-core": "^6.1.38" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "6.1.39", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.39.tgz", - "integrity": "sha512-+Qib8VaRq6F56UjP4CJXd30PI4s3hFumDywUlsbiEWoA8+lfAaWNTLr3e6/zZOgHzVyon4snHaybeFHd8C0j/A==", + "version": "6.1.38", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.38.tgz", + "integrity": "sha512-TKmqyzXCha5k3WFSIW0ofB7W8BkUe1euZ1z9rZLckai5JxqndBt8CuWfusU9EB1qS5ycS+k9zf6Zs0bucKRDkg==", "dev": true }, "node_modules/tmp": { @@ -35422,15 +33967,6 @@ "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", @@ -35837,9 +34373,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" diff --git a/shared/src/business/entities/PrivatePractitioner.ts b/shared/src/business/entities/PrivatePractitioner.ts index 42109ee8a68..fbf0d050bfa 100644 --- a/shared/src/business/entities/PrivatePractitioner.ts +++ b/shared/src/business/entities/PrivatePractitioner.ts @@ -8,7 +8,7 @@ export class PrivatePractitioner extends User { public entityName: string; public barNumber: string; public firmName: string; - public representing: string; + public representing: string[]; public serviceIndicator: string; constructor(rawUser, { filtered = false } = {}) { diff --git a/shared/src/business/entities/cases/ElectronicPetition.test.ts b/shared/src/business/entities/cases/ElectronicPetition.test.ts index d3057c8954d..b21d5316f63 100644 --- a/shared/src/business/entities/cases/ElectronicPetition.test.ts +++ b/shared/src/business/entities/cases/ElectronicPetition.test.ts @@ -9,16 +9,20 @@ import { import { ElectronicPetition } from './ElectronicPetition'; describe('ElectronicPetition entity', () => { + const validPetitionData = { + caseType: CASE_TYPES_MAP.other, + hasIrsNotice: false, + preferredTrialCity: 'Memphis, Tennessee', + procedureType: 'Small', + }; + describe('isValid', () => { it('requires corporate disclosure if filing type is a business', () => { const electronicPetition = new ElectronicPetition({ + ...validPetitionData, businessType: PARTY_TYPES.corporation, - caseType: CASE_TYPES_MAP.other, filingType: 'A business', - hasIrsNotice: false, petitionType: undefined, - preferredTrialCity: 'Memphis, Tennessee', - procedureType: 'Small', }); expect( @@ -29,10 +33,8 @@ describe('ElectronicPetition entity', () => { it('does not require corporate disclosure if filing type not set', () => { const petition = new ElectronicPetition({ - caseType: CASE_TYPES_MAP.other, - hasIrsNotice: false, - preferredTrialCity: 'Memphis, Tennessee', - procedureType: 'Small', + ...validPetitionData, + filingType: undefined, }); expect( @@ -42,11 +44,8 @@ describe('ElectronicPetition entity', () => { it('does not require corporate disclosure if filing type not a business', () => { const electronicPetition = new ElectronicPetition({ - caseType: CASE_TYPES_MAP.other, + ...validPetitionData, filingType: 'not a biz', - hasIrsNotice: false, - preferredTrialCity: 'Memphis, Tennessee', - procedureType: 'Small', }); expect( @@ -57,12 +56,9 @@ describe('ElectronicPetition entity', () => { it('requires stinFile', () => { const electronicPetition = new ElectronicPetition({ + ...validPetitionData, businessType: PARTY_TYPES.corporation, - caseType: CASE_TYPES_MAP.other, filingType: 'A business', - hasIrsNotice: false, - preferredTrialCity: 'Memphis, Tennessee', - procedureType: 'Small', }); expect( @@ -366,6 +362,7 @@ describe('ElectronicPetition entity', () => { describe('Secondary contact phone', () => { it('should use secondary contact phone when provided', () => { const electronicPetition = new ElectronicPetition({ + ...validPetitionData, contactSecondary: { contactType: CONTACT_TYPES.secondary, phone: '123-234-3456', @@ -380,6 +377,7 @@ describe('ElectronicPetition entity', () => { it('should use default secondary contact phone when no phone is provided', () => { const electronicPetition = new ElectronicPetition({ + ...validPetitionData, contactSecondary: { contactType: CONTACT_TYPES.secondary, }, @@ -391,4 +389,48 @@ describe('ElectronicPetition entity', () => { expect(secondaryContact.phone).toEqual('N/A'); }); }); + + describe('Redaction acknowledgements', () => { + it('should fail validation when petitionRedactionAcknowledgement is false', () => { + const electronicPetition = new ElectronicPetition({ + ...validPetitionData, + petitionRedactionAcknowledgement: false, + }); + + expect( + electronicPetition.getFormattedValidationErrors()! + .petitionRedactionAcknowledgement, + ).toBeDefined(); + }); + + it('should fail validation when hasIrsNotice is true and irsNoticesRedactionAcknowledgement is false', () => { + const electronicPetition = new ElectronicPetition({ + ...validPetitionData, + hasIrsNotice: true, + irsNoticesRedactionAcknowledgement: false, + }); + + expect( + electronicPetition.getFormattedValidationErrors()! + .irsNoticesRedactionAcknowledgement, + ).toBeDefined(); + }); + + it('should pass validation when petitionRedactionAcknowledgement and/or irsNoticesRedactionAcknowledgement are undefined or true', () => { + const electronicPetition = new ElectronicPetition({ + ...validPetitionData, + irsNoticesRedactionAcknowledgement: undefined, + petitionRedactionAcknowledgement: true, + }); + + expect( + electronicPetition.getFormattedValidationErrors()! + .petitionRedactionAcknowledgement, + ).toBeUndefined(); + expect( + electronicPetition.getFormattedValidationErrors()! + .irsNoticesRedactionAcknowledgement, + ).toBeUndefined(); + }); + }); }); diff --git a/shared/src/business/entities/cases/ElectronicPetition.ts b/shared/src/business/entities/cases/ElectronicPetition.ts index 394adcdd8f9..c250e268e98 100644 --- a/shared/src/business/entities/cases/ElectronicPetition.ts +++ b/shared/src/business/entities/cases/ElectronicPetition.ts @@ -23,6 +23,8 @@ import joi from 'joi'; * add to the system. */ export class ElectronicPetition extends JoiValidationEntity { + public attachmentToPetitionFile?: File; + public attachmentToPetitionFileSize?: number; public businessType: string; public caseType: string; public corporateDisclosureFile?: object; @@ -30,18 +32,18 @@ export class ElectronicPetition extends JoiValidationEntity { public countryType: string; public filingType: string; public hasIrsNotice: boolean; + public irsNoticesRedactionAcknowledgement: string; public partyType: string; public petitioners: any; public petitionFile?: object; - public petitionFileSize?: number; public petitionFileId?: string; + public petitionFileSize?: number; + public petitionRedactionAcknowledgement?: boolean; + public petitionType: string; public preferredTrialCity: string; public procedureType: string; public stinFile?: object; public stinFileSize?: number; - public attachmentToPetitionFile?: File; - public attachmentToPetitionFileSize?: number; - public petitionType: string; constructor(rawCase) { super('ElectronicPetition'); @@ -53,6 +55,8 @@ export class ElectronicPetition extends JoiValidationEntity { this.countryType = rawCase.countryType; this.filingType = rawCase.filingType; this.hasIrsNotice = rawCase.hasIrsNotice; + this.irsNoticesRedactionAcknowledgement = + rawCase.irsNoticesRedactionAcknowledgement; this.partyType = rawCase.partyType; this.preferredTrialCity = rawCase.preferredTrialCity; this.procedureType = rawCase.procedureType; @@ -64,6 +68,8 @@ export class ElectronicPetition extends JoiValidationEntity { this.petitionFileSize = rawCase.petitionFileSize; this.petitionFileId = rawCase.petitionFileId; this.petitionType = rawCase.petitionType || PETITION_TYPES.userUploaded; + this.petitionRedactionAcknowledgement = + rawCase.petitionRedactionAcknowledgement; this.corporateDisclosureFile = rawCase.corporateDisclosureFile; this.corporateDisclosureFileSize = rawCase.corporateDisclosureFileSize; @@ -141,6 +147,11 @@ export class ElectronicPetition extends JoiValidationEntity { .boolean() .required() .messages({ '*': 'Indicate whether you received an IRS notice' }), + irsNoticesRedactionAcknowledgement: joi.boolean().when('hasIrsNotice', { + is: true, + otherwise: joi.optional(), + then: joi.boolean().optional().invalid(false), + }), partyType: JoiValidationConstants.STRING.valid( ...Object.values(PARTY_TYPES), ) @@ -173,6 +184,11 @@ 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/useCases/generatePetitionPdfInteractor.ts b/shared/src/business/useCases/generatePetitionPdfInteractor.ts index 529089c5781..7158945cca3 100644 --- a/shared/src/business/useCases/generatePetitionPdfInteractor.ts +++ b/shared/src/business/useCases/generatePetitionPdfInteractor.ts @@ -1,7 +1,3 @@ -import { - CASE_TYPE_DESCRIPTIONS_WITHOUT_IRS_NOTICE, - CASE_TYPE_DESCRIPTIONS_WITH_IRS_NOTICE, -} from '@shared/business/entities/EntityConstants'; import { CreateCaseIrsForm } from '@web-client/presenter/state'; import { ROLE_PERMISSIONS, @@ -9,6 +5,7 @@ import { } from '@shared/authorization/authorizationClientService'; import { UnauthorizedError } from '@web-api/errors/errors'; import { UnknownAuthUser } from '@shared/business/entities/authUser/AuthUser'; +import { getCaseDescription } from '@shared/business/utilities/getCaseDescription'; export type IrsNotice = CreateCaseIrsForm & { noticeIssuedDateFormatted: string; @@ -136,10 +133,3 @@ 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/utilities/getCaseDescription.test.ts b/shared/src/business/utilities/getCaseDescription.test.ts new file mode 100644 index 00000000000..e5da6b77108 --- /dev/null +++ b/shared/src/business/utilities/getCaseDescription.test.ts @@ -0,0 +1,107 @@ +import { getCaseDescription } from '@shared/business/utilities/getCaseDescription'; + +const caseTypesWithIrsNotice = [ + { + description: 'Notice of Deficiency', + type: 'Deficiency', + }, + { + description: 'Notice of Determination Concerning Collection Action', + type: 'CDP (Lien/Levy)', + }, + { + description: 'Other', + type: 'Other', + }, + { + description: 'Adjustment of Partnership Items Code Section 6228', + type: 'Partnership (Section 6228)', + }, + { + description: + 'Notice - We Are Going To Make Your Determination Letter Available for Public Inspection', + type: 'Disclosure2', + }, + { + description: + 'Notice of Certification of Your Seriously Delinquent Federal Tax Debt to the Department of State', + type: 'Passport', + }, + { + description: + 'Notice of Determination Concerning Relief From Joint and Several Liability Under Section 6015', + type: 'Innocent Spouse', + }, + { + description: 'Notice of Determination of Worker Classification', + type: 'Worker Classification', + }, + { + description: + 'Notice of Determination Under Section 7623 Concerning Whistleblower Action', + type: 'Whistleblower', + }, + { + description: + 'Notice of Final Determination for Full or Partial Disallowance of Interest Abatement Claim', + type: 'Interest Abatement', + }, + { + description: 'Notice of Intention to Disclose', + type: 'Disclosure1', + }, + { + description: 'Partnership Action Under BBA Section 1101', + type: 'Partnership (BBA Section 1101)', + }, + { + description: 'Readjustment of Partnership Items Code Section 6226', + type: 'Partnership (Section 6226)', + }, +]; + +const caseTypesWithoutIrsNotice = [ + { description: 'Deficiency', type: 'Deficiency' }, + { description: 'Collection (Lien/Levy)', type: 'CDP (Lien/Levy)' }, + { description: 'Passport', type: 'Passport' }, + { description: 'Innocent Spouse', type: 'Innocent Spouse' }, + { description: 'Whistleblower', type: 'Whistleblower' }, + { description: 'Worker Classification', type: 'Worker Classification' }, + { + description: 'Declaratory Judgment (Retirement Plan)', + type: 'Declaratory Judgment (Retirement Plan)', + }, + { + description: 'Declaratory Judgment (Exempt Organization)', + type: 'Declaratory Judgment (Exempt Organization)', + }, + { description: 'Disclosure', type: 'Disclosure' }, + { + description: + 'Interest Abatement - Failure of IRS to Make Final Determination Within 180 Days After Claim for Abatement', + type: 'Interest Abatement', + }, + { description: 'Other', type: 'Other' }, +]; + +describe('getCaseDescription', () => { + describe('With IRS notices', () => { + const hasIrsNotice = true; + caseTypesWithIrsNotice.forEach(caseType => { + it(`should return case description for ${caseType.type}`, () => { + const caseDescription = getCaseDescription(hasIrsNotice, caseType.type); + expect(caseDescription).toEqual(caseType.description); + }); + }); + }); + + describe('Without IRS notices', () => { + const hasIrsNotice = false; + caseTypesWithoutIrsNotice.forEach(caseType => { + it(`should return case description for ${caseType.type}`, () => { + const caseDescription = getCaseDescription(hasIrsNotice, caseType.type); + expect(caseDescription).toEqual(caseType.description); + }); + }); + }); +}); diff --git a/shared/src/business/utilities/getCaseDescription.ts b/shared/src/business/utilities/getCaseDescription.ts new file mode 100644 index 00000000000..e94712e5cdd --- /dev/null +++ b/shared/src/business/utilities/getCaseDescription.ts @@ -0,0 +1,14 @@ +import { + CASE_TYPE_DESCRIPTIONS_WITHOUT_IRS_NOTICE, + CASE_TYPE_DESCRIPTIONS_WITH_IRS_NOTICE, +} from '../entities/EntityConstants'; + +export const getCaseDescription = ( + hasIrsNotice: boolean, + originalCaseType: string, +) => { + if (hasIrsNotice) { + return CASE_TYPE_DESCRIPTIONS_WITH_IRS_NOTICE[originalCaseType]; + } + return CASE_TYPE_DESCRIPTIONS_WITHOUT_IRS_NOTICE[originalCaseType]; +}; diff --git a/shared/src/business/utilities/pdfGenerator/documentTemplates/Petition.tsx b/shared/src/business/utilities/pdfGenerator/documentTemplates/Petition.tsx index 31946249b2b..2369df4f2a3 100644 --- a/shared/src/business/utilities/pdfGenerator/documentTemplates/Petition.tsx +++ b/shared/src/business/utilities/pdfGenerator/documentTemplates/Petition.tsx @@ -195,7 +195,10 @@ export const Petition = ({ {contactPrimary.countryType === COUNTRY_TYPES.INTERNATIONAL && (