From 665271d546251b2adf3aaae614633d87cdf1c1d3 Mon Sep 17 00:00:00 2001 From: Kai <155502072+KaiSereni@users.noreply.github.com> Date: Wed, 6 Aug 2025 07:42:23 -0700 Subject: [PATCH 1/2] Delete docs/testing/Direct File QA /Direct File QA and Testing Wiki.md --- .../Direct File QA and Testing Wiki.md | 1899 ----------------- 1 file changed, 1899 deletions(-) delete mode 100644 docs/testing/Direct File QA /Direct File QA and Testing Wiki.md diff --git a/docs/testing/Direct File QA /Direct File QA and Testing Wiki.md b/docs/testing/Direct File QA /Direct File QA and Testing Wiki.md deleted file mode 100644 index 08927f7..0000000 --- a/docs/testing/Direct File QA /Direct File QA and Testing Wiki.md +++ /dev/null @@ -1,1899 +0,0 @@ -# **Direct File QA / Testing Wiki** - -# **Recipe Library** - -## **Recipes that apply across tax scope areas** - -### **How to create a dependent (qualifying child)** - -#### **Profile 1.1:** - -##### In Family and household \> person - -DOB: June 15, 2004 - -Your sibling - -Full-time student - -No permanent disability - -Not physically or mentally unable to care for themselves - -Lived with you all year - -Lived with you all year in the U.S. - -You paid more than half the cost of keeping up the home - -SSN - -No work restrictions - -Did not pay for more than half of own living expenses - -Married - -Filing a joint return - -Neither of them are required to file - -Only filing to claim a refund of taxes paid - -U.S. citizen - -No one else qualifies to claim them - -#### **Profile 1.2: a qualifying child dependent who also meets requirements for CTC** - -##### In Family and household \> person - -DOB: June 15, 2008 (for CTC they must be under 17 at the end of the tax year) - -Your biological child - -Not unable to care for themselves because of physical or mental disability - -Lived with you all year - -No other biological or adoptive parent - -Lived with you all year in the U.S. - -You paid more than half the cost of keeping up the home - -SSN - -No work restriction listed on their Social Security card - -Did not pay for more than half of own living expenses - -Not married - -U.S. citizen - -No one else qualifies to claim them - -Yes, claim them as a dependent - -SSN: 232-00-3232 - -IRS has not issued them an IP PIN - -### **How to create a dependent (qualifying relative)** - -#### **Profile 1.1:** - -##### In Family and household \> person - -DOB: April 15, 2010 - -Not related - -Not physically or mentally unable to care for themselves - -Lived with you all year - -SSN - -No work restrictions - -You paid more than half of their living expenses - -Their gross income was less than $5,050 - -Not married - -U.S. citizen - -No one else qualifies to claim - -Not required to file a tax return - -Not filing a tax return - -### **How to create a dependent taxpayer (non MFJ)** - -#### **Method 1** - -##### In About you: - -Could anyone claim you as a dependent on their federal tax return? - -Answer **Yes.** - -Is that person required to file a federal tax return? - -Answer **Yes.** - -Is that person claiming you as a dependent on their 2024 federal tax return? - -Answer **Yes** or **No** (doesn't matter). - -#### **Method 2** - -##### In About you: - -Could anyone claim you as a dependent on their federal tax return? - -Answer **Yes.** - -Is that person required to file a federal tax return? - -Answer **No.** - -Is that person filing a 2024 federal tax return? - -Answer **Yes.** - -Is that person only filing a 2024 federal tax return to get a refund of money they paid toward taxes? - -Answer **No.** - -Is that person claiming you as a dependent? - -Answer **Yes** or **No** \- does not matter for this situation. - -### **How to create dependent taxpayers (MFJ)** - -#### **Method 1** - -##### In About you: - -Could anyone claim you as a dependent on their \ federal tax return? - -Answer **Yes**. - -Is that person required to file a \ federal tax return? - -Answer **Yes**. - -Is that person claiming you as a dependent? - -Answer Yes or No \- does not matter for this situation. - -### **In Spouse:** - -Choose Married Filing Jointly filing status - -Could anyone claim \ as a dependent on their \ federal tax return? - -Answer **Yes**. - -Are you or \ required to file a \ federal tax return? - -Answer **No**. - -Do you and \ want the opportunity to claim tax benefits on this federal tax return? - -Answer **No.** - -Is that person claiming \ as a dependent? - -Answer Yes or No \- does not matter for this situation. - -#### **Method 2** - -##### In About you: - -Could anyone claim you as a dependent on their \ federal tax return? - -Answer **Yes**. - -Is that person required to file a federal tax return? - -Answer **No.** - -Is that person filing a 2024 federal tax return? - -Answer **Yes.** - -Is that person only filing a 2024 federal tax return to get a refund of money they paid toward taxes? - -Answer **No.** - -Is that person claiming you as a dependent? - -Answer Yes or No \- does not matter for this situation. - -### **In Spouse:** - -Choose Married Filing Jointly filing status - -Could anyone claim \ as a dependent on their \ federal tax return? - -Answer **Yes**. - -Are you or \ required to file a \ federal tax return? - -Answer **No**. - -Do you and \ want the opportunity to claim tax benefits on this federal tax return? - -Answer **No.** - -Is that person claiming \ as a dependent? - -Answer Yes or No \- does not matter for this situation. - -### **How to create a taxpayer that qualifies for the special benefit split (custodial parent)** - -#### **Profile 1.1** - -##### In Family and household \> person - -DOB: February 18, 2019 - -Your biological child - -Not unable to care for self - -Lived with you all year - -Has another biological or adoptive parent - -I signed a form stating I wouldn't claim them - -Still in custody on July 2 TY - -Lived with one or both of us for more than 6 months - -Spent more nights with me - -Divorced - -One or both of us paid for more than half of support - -Lived with me in the United States for 12 months - -I paid more than half the cost of keeping up the home - -SSN - -No work restrictions - -They did not pay more than half of their own living expenses - -Not married - -U.S. citizen - -### **How to create a taxpayer that qualifies for the special benefit split (noncustodial parent)** - -#### **Profile 1.1** - -##### In Family and household \> person - -DOB: February 18, 2019 - -Your biological child - -Not unable to care for self - -Lived with you all year - -Has another biological or adoptive parent - -The other biological or adoptive parent signed a form or declaration stating they wouldn’t claim them - -Still in custody on July 2 TY - -Lived with one or both of us for more than 6 months - -Spent fewer nights with me - -Divorced - -One or both of us paid for more than half of support - -### **How to create a taxpayer who is the "other eligible taxpayer" (non parent) in a special benefit split scenario who may qualify to use the child as their qualifying person for certain tax benefits** - -#### **Profile 1.1** - -##### In Family and household \> person - -DOB: June 8, 2022 - -Your foster child - -Not unable to care for self - -Lived with you all year - -In the legal custody of their biological or adoptive parents on July 2, \<2024\> - -Biological or adoptive parents are still alive - -One of the parents signed a form stating they wouldn't claim the child - -The parents meet the requirements of the rule for children of divorced or separated parents (or parents who live apart) - -The child's custodial parent is not using the child to qualify for tax benefits listed on screen - -Your AGI is higher than the child's custodial parent’s AGI - -Lived with you in the U.S. for 12 months - -You paid more than half the cost of keeping up the home - -Has tax ID \- SSN - -No work restrictions - -Did not pay for more than half of own living expenses - -Not married on December 31 - -U.S. citizen - -At this point, you should be told that the child didn’t meet the requirements to be your dependent, but that you may still be able to use them as your qualifying person for other tax benefits. - -## **Filing statuses** - -### **How to create a qualifying person for HOH filing status** - -#### **Method 1: HOH qualifying person who is your dependent** - -Start with a *Taxpayer who is otherwise eligible for HOH* - -##### In Family and household \> person - -Date of birth: 1/1/2020 - -Your biological child - -Not unable to care for self - -Lived with you all year - -Does not have another biological or adoptive parent - -Lived with you in the United States for 12 months - -You paid more than half the cost of keeping up the home you lived in with them - -SSN - -No work restrictions - -Did not pay for more than half of own living expenses - -Not married - -U.S. citizen - -No one else qualifies to claim them as their qualifying child - -Claim them as dependent - -SSN: 123-00-1234 - -No IP PIN - -#### **Method 2: HOH qualifying person who is NOT a dependent** - -Start with a *Taxpayer who is otherwise eligible for HOH* - -##### In Family and household \> person - -Date of birth: 1/1/2003 - -Your biological child - -Full time student - -No permanent disability that prevented them from engaging in substantial employment - -Not unable to care for self - -Lived with you more than 6 months - -Lived with you in the U.S. more than 6 months, less than 7 - -You paid more than half the cost of keeping up the home you lived in with them - -ITIN - -Did not pay for more than half of own living expenses - -Not married - -Not a U.S. citizen - -Not a U.S. resident - -Not a National - -Not a resident of Canada or Mexico - -No one else qualifies to claim them as their qualifying child - -(DF will prompt you to return and fill in this person's TIN, even though they are not your dependent) ITIN: 999-00-1234 - -### **How to create a taxpayer who is using Head of Household filing status and "considered unmarried"** - -#### **Method 1** - -##### In Spouse: - -Married - -Didn't live together all year - -Lived together for half the year or less - -Lived apart for the last 6 months of the year - -Spouse is U.S. citizen - -Use Head of Household filing status - -Spouse is filing a return - -Spouse is not itemizing deductions - -##### In Family and household \> person: - -Add an HOH qualifying person: - -* See “How to create a qualifying person for HOH filing status” - -* See CDCC qualifying person: Profile 1.1 who is also an HOH qualifying person - -#### **Method 2** - -##### In Spouse: - -Married - -Didn't live together all year - -Didn't live together at all in 2024 - -Spouse is U.S. citizen - -Use Head of Household filing status - -Spouse is filing a return - -Spouse is not itemizing deductions - -##### In Family and household \> person: - -Add an HOH qualifying person: - -* See “How to create a qualifying person for HOH filing status” - -* See CDCC qualifying person: Profile 1.1 who is also an HOH qualifying person - -#### **Method 3 (nonresident alien rule)** - -##### In Spouse: - -Married - -Lived together all year - -Spouse is not a U.S. citizen - -Spouse did not start the year with U.S. resident status and end with U.S. citizen status - -Spouse was not a U.S. resident all year - -Use Head of Household filing status - -Spouse is filing a return - -Spouse is not itemizing deductions - -##### In Family and household \> person: - -Add an HOH qualifying person: - -* See “How to create a qualifying person for HOH filing status” - -* See CDCC qualifying person: Profile 1.1 who is also an HOH qualifying person - -### **How to create a taxpayer who using Head of Household filing status and "considered married"** - -#### **Method 1** - -##### In Spouse: - -Married - -Lived together all year - -Spouse is U.S. citizen - -Use Head of Household filing status - -Spouse is filing a return - -Spouse is not itemizing deductions - -#### **Method 2** - -##### In Spouse: - -Married - -Didn't live together all year - -Lived together for more than half the year - -Spouse is U.S. citizen - -Use Head of Household filing status - -Spouse is filing a return - -Spouse is not itemizing deductions - -#### **Method 3** - -##### In Spouse: - -Married - -Didn't live together all year - -Lived together for half the year or less - -Didn't live apart for the last 6 months of 2024 - -Spouse is U.S. citizen - -Use Head of Household filing status - -Spouse is filing a return - -Spouse is not itemizing deductions - -## **Income-related recipes** - -### **How to fill out Income sources to be in scope** - -#### **Scenario** - -Yes, all of my income sources are supported by Direct File - -No financial interest in an account located in a foreign country - -No, didn't own a foreign trust - -No, didn't have foreign trust transactions - -No, didn't receive digital assets - -No, didn't sell digital assets - -### **How to add jobs income (Form W-2)** - -#### **Scenario 1: Lower income** - -Box a: Confirm SSN - -Box e: Confirm name - -Box f: Same address - -Box b, EIN: 00-2222222 - -Employer name: Stark Industries - -Employer Address: 123 Main Street - -Employer city, state and zip same as TP place of residence as entered in About You - -**Box 1, Wages, tips, other compensation: $16,000** - -Box 2: $300 - -Box 3: $16,000 - -Box 4: $992 - -Box 5: $16,000 - -Box 6: $232 - -Boxes 7-11: blank - -Box 12: no codes or amounts - -Box 13: nothing checked - -Box 14: no codes or amounts - -Boxes 15-20: blank - -Standard Form W-2 - -#### **Scenario 2: Higher income** - -Box a: Confirm SSN - -Box e: Confirm name - -Box f: Same address - -Box b, EIN: 00-2222222 - -Employer name: Stark Industries - -Employer Address: 123 Main Street - -Employer city, state and zip same as TP place of residence as entered in About You - -**Box 1, Wages, tips, other compensation: $120,000** - -Box 2: $10,000 - -Box 3: $120,000 - -Box 4: $7,440 - -Box 5: $120,000 - -Box 6: $1,740 - -Boxes 7-11: blank - -Box 12: no codes or amounts - -Box 13: nothing checked - -Box 14: no codes or amounts - -Boxes 15-20: blank - -Standard Form W-2 - -#### **For modifications to taxable amount** - -**Box 1** \= taxable amount for Form(s) W-2 - -You can update **box 1** amount as needed to adjust overall income on a federal tax return. - -***Note:*** *Boxes 2–6 don't need to be adjusted along with box 1\. But if you're looking to make a realistic W-2 scenario, here's how they generally relate to box 1:* - -* *Boxes 3 and 5 will generally be equal to box 1, plus any amounts in box 12, although box 3 can’t exceed $168,600.* -* *Box 4 equals box 3 times 6.2%.* -* *Box 6 equals box 5 times 1.45%.* -* *Box 2 depends on withholding. You can just pick something.* - -### **How to add interest income (Form 1099-INT)** - -#### **Scenario 1: No schedule needed** - -Yes, received 1099-INT - -Payer name: Gringotts - -FATCA filing requirement **not** checked - -**Box 1 \- Interest income: $200** - -Box 2–17: blank - -#### **Scenario 2: Schedule B get attached** - -Yes, received 1099-INT - -Payer name: Gringotts - -FATCA filing requirement **not** checked - -**Box 1 \- Interest income: more than $1500** - -Box 2–17: blank - -*This will attach Schedule B to the federal tax return.* - -#### **For modifications to taxable amount** - -**Box 1** \+ **Box 3** \= taxable amount for Form(s) 1099-INT - -You can update **box 1** and **box 3** amounts as needed to adjust overall income on a federal tax return. - -### **How to add unemployment compensation (Form 1099-G)** - -#### **Scenario 1** - -Yes, received Form 1099-G - -Payer name: New Jersey Department of Labor - -**Box 1, unemployment compensation: $10,000** - -No repayments - -Box 4: blank - -Boxes 10a, 10b, 11: blank - -#### **For modifications to taxable amount** - -**Box 1** \= taxable amount for unemployment compensation - -You can update **box 1** amount as needed to adjust overall income on a federal tax return. - -## **How to add Health Savings Accounts contributions and distributions (Form 1099-SA)** - -**First, some context...** - -A TP can make HSA contributions and/or take HSA distributions in the same year. So it's common to: - -* Have values just for contributions -* Have values just for distributions -* Have values for contributions and distributions - -**Contributions:** There's 2 different types of HSA contributions: - -* **Most common:** Employer contributions, which are marked on Form W-2, box 12, code W. They're reported in the Jobs subsection and have already been excluded from taxable income by your employer. -* **Less common:** Contributions not through an employer. You'll need to manually report these in the HSA subsection. And then they'll be deducted from your taxable income through the HSA deduction. - -You can have 1 or both types of contributions, as long as the total doesn't go over the contribution limit. - -**Contribution limit:** For 2024, when your coverage is the same all year: - -* If have Self-only coverage, max contribution amount is $4,150. -* If have Family coverage, max contribution amount is $8,300. (That's the total for both spouses, if you both have HSAs). - -If 55+, contribution limit is increased by $1,000 per spouse-who-has-an-HSA. - -**Distributions:** HSA distributions for the year are reported on Form 1099-SA. - -#### **Scenario 1: 1 TP has HSA employer contributions** - -##### Income \> Jobs - -* Add a Form W-2 and include **box 12, code W, $4,000** - -##### Income \> HSAs - -* \[Should note you've already reported $4,000 from your Form W-2\] -* **If MFJ:** No, spouse didn't have any HSAs in \ or \ -* No, didn't have medical savings accounts -* No, didn't have excess contributions left in an HSA from a previous year -* No, didn't withdraw excess contributions for \ before \ -* No, I'm not enrolled in Medicare -* Yes, I had HDHP coverage for the whole year -* Self-only coverage -* No, I didn't have other health coverage that would make you not eligible to contribute to an HSA -* **Conditional depending on marital and filing status:** - * No, spouse didn't have HSA with contributions - * No change in marital status -* Total amount of HSA contributions in \ for \ not reported on Form W-2: **blank** -* Total amount of HSA contributions in \ for \ not reported on Form W-2: **blank** -* No, I didn't have qualified HSA funding distributions -* On collection hub: I don't have any Forms 1099-SA to add - -#### **Scenario 2: 1 TP has HSA contributions not through an employer** - -##### Income \> Jobs - -* \[Nothing needed here\] - -##### Income \> HSAs - -* Yes, have an HSA in \ or \ -* Yes, have HSA activity to report -* **If MFJ:** No, spouse didn't have any HSA activity to report -* No, didn't have medical savings accounts -* No, didn't have excess contributions left in an HSA from a previous year -* No, didn't withdraw excess contributions for \ before \ -* No, I'm not enrolled in Medicare -* Yes, I had HDHP coverage for the whole year -* Self-only coverage -* No, I didn't have other health coverage that would make you not eligible to contribute to an HSA -* **Conditional depending on marital and filing status:** - * No, spouse didn't have HSA with contributions - * No change in marital status -* Total amount of HSA contributions in \ for \ not reported on Form W-2: **$500** -* Total amount of HSA contributions in \ for \ not reported on Form W-2: **$100** -* No, I didn't have qualified HSA funding distributions -* **If MFJ:** No, spouse didn't contribute to HSA in \ -* On collection hub: I don't have any Forms 1099-SA to add - -#### **Scenario 3: 1 TP has HSA distributions** - -##### Income \> HSAs - -* Yes, have an HSA in \ or \ -* Yes, have HSA activity to report -* **If MFJ:** No, spouse didn't have any HSA activity to report -* No, didn't have medical savings accounts -* No, didn't have excess contributions left in an HSA from a previous year -* No, didn't withdraw excess contributions for \ before \ -* No, I didn't have HSA contributions for \ -* No, didn't contribute to HSA in \ -* On collection hub: Add Form 1099-SA - * HSA trustee: The Best Trustee - * Box 1: **$1,000** - * No rollovers - * No excess contributions withdrawn before \ - * Box 2: blank - * Box 3: code 1 - * Box 4: blank - * Qualified medical expenses: **$1,000** - -#### **Scenario 4: 2 TPs each have HSA contributions and distributions** - -##### Filing status - -MFJ - -##### Income \> Jobs - -* Add a Form W-2 for TP1 and include **box 12, code W, $6,000** - -##### Income \> HSAs - -* \[Should note you've already reported $6,000 from your Form W-2\] -* Yes, TP2 had HSAs in \ or \ -* Yes, TP2 had HSA activity to report -* No, didn't have medical savings accounts -* No, didn't have excess contributions left in an HSA from a previous year -* No, I didn't withdraw excess contributions for \ before \ -* For TP1 - * No, not enrolled in Medicare - * Yes, had HDHP coverage for the whole year - * Family coverage - * No, didn't have other health coverage that would make you not eligible to contribute to an HSA - * No change in marital status - * Total amount of HSA contributions in \ for \ not reported on Form W-2: **blank** - * Total amount of HSA contributions in \ for \ not reported on Form W-2: **blank** - * No, didn't have qualified HSA funding distributions -* For TP2 - * Yes, had contributions to HSA in \ - * No, not enrolled in Medicare - * Yes, had HDHP coverage for the whole year - * Family coverage - * No, didn't have other health coverage that would make you not eligible to contribute to an HSA - * No change in marital status - * Total amount of HSA contributions in \ for \ not reported on Form W-2: blank - * Total amount of HSA contributions in \ for \ not reported on Form W-2: **$300** - * No, didn't have qualified HSA funding distributions -* On collection hub: Add Form 1099-SA - * HSA trustee: The Best Trustee - * Box 1: **$1,000** - * No rollovers - * No excess contributions withdrawn before \ - * Box 2: blank - * Box 3: code 1 - * Box 4: blank - * Qualified medical expenses: **$1,000** - -### **How to add Social Security benefits (Form SSA-1099)** - -#### **Scenario 1** - -**Box 5, Net benefits for \: $1,000** - -Box 6: blank - -#### **Taxable amount is complicated** - -**Box 5** \= net benefits from Social Security - -**The taxable amount is lower than the net benefits.** Calculating the taxable Social Security amount depends on the total amount of net Social Security benefits, other income, and certain deductions/exclusions. And there are instances where none of your benefits are taxable. - -Don't add Social Security if you're just trying to increase the overall taxable amount on a return. - -### **(see CDCC section for Dependent Care Benefits)** - -## - -## **Credit-related recipes** - -### **Child and Dependent Care Credit (CDCC)** - -#### **How to make a CDCC qualifying person** - -##### 1\. How to make a CDCC qualifying person who's your dependent \<13 (qualifying child, not qualifying relative) - -###### **Profile 1.1** - -**In Family and household \> person** - -DOB: January 15, 2022 - -Your biological child - -Not unable to care for self - -Lived with you all year - -Does not have another biological or adoptive parent - -Lived with you in the United States for 12 months - -You paid more than half the cost of keeping up the home you lived in with them (this question does not always appear) - -SSN - -No work restrictions - -Did not pay for more than half of own living expenses - -Not married - -U.S. citizen - -No one else qualifies to claim them as their qualifying child - -Claim them as dependent - -SSN: 123-00-1234 - -No IP PIN - -###### **Profile 1.2** - -**In Family and household \> person** - -DOB: December 12, 2014 - -Your sibling's child - -Not unable to care for self - -Lived with you for more than 6 months but less than a year - -Not in legal custody of parents as of July 2, 2024 - -Lived with you in the United States for 8 months - -ITIN - -Did not pay more than half of their own living expenses - -Not married - -Not a U.S. citizen - -Was a U.S. resident - -No one else qualifies to claim them - -Claim them as dependent - -ITIN: 999-00-1234 - -No IP PIN - -##### 2\. How to make a CDCC qualifying person who's your dependent (qualifying relative, not qualifying child) - -###### **Profile 2.1:** - -**In Family and household \> person** - -DOB: April 15, 2015 - -Not related - -Physically or mentally unable to care for themselves - -Lived with you all year - -SSN - -No work restrictions - -You paid more than half of their living expenses - -Their gross income was less than $5,050 - -Not married - -U.S. citizen - -No one else qualifies to claim - -Not required to file a tax return - -Not filing a tax return - -##### 3\. How to make a CDCC qualifying person who's not your dependent (aka nondependent CDCC qualifying person) - -###### **Profile 3.1** - -**In Family and household \> person** - -DOB: August 1, 2005 - -Biological child - -Full time student - -No permanent disability - -Unable to care for themselves - -Lived with you all year - -Lived with you in U.S. for 12 months - -You paid more than half the cost of keeping up the home - -SSN - -No work restrictions - -Did not pay for more than half of own living expenses - -Married - -Filing a joint return - -At least one of them is required to file - -U.S. citizen - -No one else qualifies to claim them - -###### **Profile 3.2** - -**In Family and household \> person** - -DOB: July 4, 2000 - -Not related - -Has a permanent disability - -Physically or mentally unable to care for themselves - -Lived with you all year - -SSN - -You paid more than half of their living expenses - -Their gross income was $5,050 or more - -Not married - -U.S. citizen - -No one else qualifies to claim - -Not required to file a tax return - -Not filing a tax return - -###### **Profile 3.3** - -**Pre-Family and household** - -Add a taxpayer who is a dependent taxpayer (non-MFJ) - -How to create a dependent taxpayer (non MFJ) - -**In Family and household \> person** - -DOB: October 8, 2020 - -Your biological child - -Physically or mentally unable to care for themselves - -Lived with you all year - -Does not have another biological or adoptive parent - -Lived with you all year in the U.S. - -You paid more than half the cost of keeping up the home - -SSN - -No work restrictions - -Did not pay for more than half of own living expenses - -Not married - -U.S. citizen - -No one else qualifies to claim them - -###### **Profile 3.4** - -**Pre-Family and household** - -Add a taxpayer who is a dependent taxpayer (non-MFJ) - -How to create a dependent taxpayer (non MFJ) - -**In Family and household \> person** - -DOB: April 15, 2010 - -Not related - -Physically or mentally unable to care for themselves - -Lived with you all year - -SSN - -You paid more than half of their living expenses - -Their gross income was $5,050 or more - -Married - -Filing a joint return - -Required to file - -U.S. citizen - -No one else qualifies to claim - -Not required to file a tax return - -Not filing a tax return - -###### **Profile 3.5** - -**In Family and household \> person** - -DOB: January 1, 2015 - -Not related - -Unable to care for themselves - -Lived with you all year - -SSN - -Taxpayer paid more than half of their living expenses - -Gross income **was** $5,050 or more - -Not married - -U.S. citizen - -##### 4\. How to make the taxpayer a CDCC qualifying person - -###### **Profile 4.1** - -**In About you:** - -Taxpayer is physically or mentally unable to care for themselves - -**In Spouse:** - -Married - -Lived together all year - -Use Married Filing Jointly filing status - -##### 5\. How to make the spouse a CDCC qualifying person - -###### **Profile 5.1** - -**In Spouse:** - -Married - -Lived together all year - -Use Married Filing Jointly filing status - -Spouse is physically or mentally unable to care for themselves - -##### 6\. How to make a CDCC qualifying person who's your dependent (any kind) and unable to care for themselves - -###### **Profile 6.1** - -**In Family and household \> person** - -DOB: June 15, 2004 - -Your sibling - -Full-time student - -No permanent disability - -Physically or mentally unable to care for themselves - -Lived with you all year - -Lived with you all year in the U.S. - -You paid more than half the cost of keeping up the home - -SSN - -No work restrictions - -Did not pay for more than half of own living expenses - -Married - -Filing a joint return - -Neither of them are required to file - -Only filing to claim a refund of taxes paid - -U.S. citizen - -No one else qualifies to claim them - -#### **How to create a taxpayer who is Married Filing Separately but "considered unmarried" for the dependent care benefits exclusion and CDCC** - -##### Method 1 - -###### **In Spouse:** - -Married - -Didn't live together all year - -Lived together for half the year or less - -Lived apart for the last 6 months of the year - -Spouse is U.S. citizen - -Use Married Filing Separately filing status - -Spouse is filing a return - -Spouse is not itemizing deductions - -###### **In Family and household:** - -Add a CDCC qualifying person (See “How to make a CDCC qualifying person”) - -Your lived with your CDCC qualifying person for more than half the year - -You paid more than half the cost of keeping up your home for the year - -##### Method 2 - -###### **In Spouse:** - -Married - -Didn't live together all year - -Didn't live together at all in 2024 - -Spouse is U.S. citizen - -Use Married Filing Separately filing status - -Spouse is filing a return - -Spouse is not itemizing deductions - -###### **In Family and household:** - -Add a CDCC qualifying person How to make a CDCC qualifying person - -Your lived with your CDCC qualifying person for more than half the year - -You paid more than half the cost of keeping up your home for the year - -#### **How to create a taxpayer who is Married Filing Separately and "considered married" for the dependent care benefits exclusion and CDCC** - -##### Method 1 - -###### **In Spouse:** - -Married - -Lived together all year - -Spouse is U.S. citizen - -Use Married Filing Separately filing status - -Spouse is filing a return - -Spouse is not itemizing deductions - -##### Method 2 - -###### **In Spouse:** - -Married - -Didn't live together all year - -Lived together for more than half the year - -Spouse is U.S. citizen - -Use Married Filing Separately filing status - -Spouse is filing a return - -Spouse is not itemizing deductions - -##### Method 3 - -###### **In Spouse:** - -Married - -Didn't live together all year - -Lived together for half the year or less - -Didn't live apart for the last 6 months of 2024 - -Spouse is U.S. citizen - -Use Married Filing Separately filing status - -Spouse is filing a return - -Spouse is not itemizing deductions - -### **Credit for the Elderly or Disabled (EDC) Specific Recipes** - -#### **How to make Single person who can qualify for Elderly or Disabled paths of the credit** - -##### Profile 1.1 — Elderly path - -*In order to see EDC screens for the Elderly path, you will need:* - -* *Age: 65+* -* *Filing status: Single* -* *AGI: greater than $16,550 and less than $17,500* - * *$16,550 is the standard deduction for Single filers who are 65+* - -###### **In You and your family** - -##### **About you** - -DOB: \[pick date *before* 01/02/1960\] - -##### **Spouse** - -Marital status: Never married (single) - -##### **Filing status** - -Single - -###### **Income** - -Need taxable income greater than $16,550 and less than $17,500: - -$16,550 \< **x** \< $17,500 - -*Note: don't add Social Security benefits. Nontaxable SS will change the calculation.* - -###### **Deductions** - -No deductions. This will give you an AGI greater than $16,550 and less than $17,500. Which you need for this credit. - -*Now you should see the EDC flow in credits.* - -###### **Credits \> Credit for the Elderly or the Disabled** - -No, didn't receive any other nontaxable pension, annuity, or disability payments - -##### Profile 2.1 — Disabled path - -*In order to see EDC screens for the Disabled path, you will need:* - -* *Age: less than 65* -* *Filing status: Single* -* *AGI: greater than $14,600 and less than $17,500* - * *$14,600 is the standard deduction for Single filers* - -###### **In You and your family** - -##### **About you** - -DOB: \[pick date *after* 01/01/1960\] - -##### **Spouse** - -Marital status: Never married (single) - -##### **Filing status** - -Single - -###### **Income** - -Need taxable income greater than $14,600 and less than $17,500: - -$14,600 \< **x** \< $17,500 - -At least some of this needs to be from Form(s) W-2. Check out these recipes for adding income: - -* How to add jobs income (Form W-2) -* How to add interest income (Form 1099-INT) - -*Note: don't add Social Security benefits. Nontaxable SS will change the calculation.* - -###### **Deductions** - -No deductions. This will give you an AGI greater than $14,600 and less than $17,500. Which you need for this credit. - -*Now you should see the EDC flow in credits.* - -###### **Credits \> Credit for the Elderly or the Disabled** - -Yes, retired on permanent and total disability - -Yes, employer has mandatory retirement age - -No, haven't reached mandatory retirement age - -Yes, taxable payments from Form W-2 were disability income - -Enter amount that is: - -* greater than $5,000 -* less than or equal to the W-2 amount you entered in Income - -No, didn't receive any other nontaxable pension, annuity, or disability payments - -*Now you'll see a screen saying you qualify for the Credit for the Elderly or the Disabled.* - -*Next are 2–3 Yes/No questions about doctor's statements. Any answers are fine.* - -### **PTC** - -#### **How to qualify for PTC (or not)** - -##### Overview of filing status - -###### **May qualify for PTC** - -* Single -* Married Filing Jointly (MFJ) -* Married Filing Separately (MFS), but only if you meet an exception -* Head of Household (HoH), unless you meet the specific conditions (listed in the right column) - -###### **Will not qualify for PTC** - -* Married Filing Jointly Dependents (MFJ Dependents) -* Dependents (non-MFJ) -* Married Filing Separately (MFS), assuming you don't meet the exception -* Head of Household \+ spouse is a nonresident \+ you did not live apart of for the last 6 months of the tax year - -##### Basic steps to qualify - -* Use a filing status that may qualify for PTC -* You and/or individuals listed on your federal tax return were enrolled in a qualified Marketplace health plan -* Don't get knocked out. For example: - * If you have dependents, they should not required to file a federal tax return for this year - * Only have one Form 1095-A -* If MFS: - * **Yes,** you meet both requirements for MFS taxpayers - * **No,** this will not be the fourth year in a row that you're claiming the Premium Tax Credit and using a MFS filing status because of domestic abuse or spousal abandonment -* If your household income was below %100 of the federal poverty line: **Yes,** there was someone on the qualified health plan who was not eligible for Medicaid because of their immigration status -* **Yes,** at least one person enrolled in the qualified health plan met all the requirements for at least one month in the tax year - -#### **How to have excess advance payments of PTC** - -##### Method 1 - -###### **In Credits \> Premium Tax Credit | Don’t qualify for PTC but have advance payments of PTC (APTC):** - -There are many ways to not qualify PTC. For a thrilling, choose-your-own adventure experience, see the How to qualify for PTC (or not) recipe. The steps below will ensure you don't qualify and focus on achieving the Excess APTC outcome. - -* Enrolled in a qualified Marketplace health plan -* (If you have dependents) No, none of them are required to file -* No, you don't have more than one Form 1095-A -* No, there isn't someone other than you and/or those listed on your tax return on your Form 1095-A -* No, you or your fam is not listed on someone else's Form 1095-A -* (If asked) No, nobody listed on Form 1095-A had an immigration status that wasn't eligible for Marketplace coverage -* Yes, advance payments of the Premium Tax Credits were made -* **No,** nobody was also eligible for or enrolled in employer-sponsored health coverage while enrolled in the qualified Marketplace health plan -* Policy number: 123456789 -* Any Marketplace state -* Policy dates: 1 or more months -* No, at least one person didn't see all the requirements for at least one month -* Enter the annual total for monthly advance payment of premium tax credit from column C, line 33\. **Answer:** Enter any amount. This amount will be considered excess because you didn’t qualify for the PTC. - -##### Method 2 - -###### **In Credits \> Premium Tax Credit | Qualify for PTC and enter more APTC than your allowed PTC:** - -There are many ways to qualify for PTC. For a thrilling, choose-your-own adventure experience, see the How to qualify for PTC (or not) recipe. The steps below will ensure you qualify and focus on achieving the Excess APTC outcome. - -* Enrolled in a qualified Marketplace health plan -* (If you have dependents) No, none of them are required to file -* No, you don't have more than one Form 1095-A -* No, there isn't someone other than you and/or those listed on your tax return on your Form 1095-A -* No, you or your fam is not listed on someone else's Form 1095-A -* (If asked) No, nobody listed on Form 1095-A had an immigration status that wasn't eligible for Marketplace coverage -* Yes, advance payments of the Premium Tax Credits were made -* No, nobody was also eligible for or enrolled in employer-sponsored health coverage while enrolled in the qualified Marketplace health plan -* Policy number: 123456789 -* Any Marketplace state -* Policy dates: 1 or more months -* **Yes**, at least one person didn't see all the requirements for at least one month -* Enter the enrollment premiums\* -* Enter the Second Lowest Cost Silver Plan (SLCSP) premium amount\* -* Enter the APTC amount.\* - * **The easy way:** - * Enter an APTC amount that is greater than the enrollment premium or SLCSP amount you entered, whichever of those is greater. - * **The slightly harder, more realistic way —** The APTC amount should be greater than the taxpayer’s allowed PTC, which is not displayed on the front-end but is based on their household income and family size, and the enrollment and SLCSP premium amounts you entered. How to ensure you end up with Excess APTC: - * Have household income and a family size that puts you above 151% of the federal poverty line (in this case, household income refers to AGI minus your deductions, aka MAGI, which is displayed at the end of the deductions section) — [https://www.irs.gov/instructions/i8962\#en\_US\_2023\_publink100044414](https://www.irs.gov/instructions/i8962#en_US_2023_publink100044414) — The greater your income, the more you’re expected to contribute to your premium payments. - * IRL, your APTC would never be greater than your enrollment premiums. Enter an APTC value equal to or smaller than the SLCSP premium amounts you entered. - - \* Direct File will ask you to enter either annual or monthly amounts. The option presented is based on how you answered earlier questions. - -#### **How to end up with a repayment limitation** - -##### In Credits \> Premium Tax Credit - -* Have taxable income (aka MAGI) that translates to less than 400% of the federal poverty line for your household and state. For the 48 Contiguous States and the District of Columbia: - * $54,156 for a family size of 1 - * $73,240 for a family size of 2 - * $92,120 for a family size of 3 - * See the [full breakdown for income levels at 100% of the federal poverty line](https://www.irs.gov/instructions/i8962#en_US_2023_publink100044414) for more detail (multiple by 4 to get the 400% value) -* See “How to have excess advance PTC” (either Method 1 or 2 will work) - * Your Excess APTC should be greater than the applicable repayment limitation for your [household income as a percentage of federal poverty line](https://www.irs.gov/instructions/i8962#en_US_2023_publink100010959%C2%A0) -* You’ll only see the Excess APTC amount, and whether a repayment limitation applies, on the outcome screens - -### **Savers** - -#### **Savers: How to make a Saver’s Credit qualifying person who is HOH** - -##### Saver's Credit - -The Saver's Credit, also known as the Retirement Savings Contributions Credit, is a tax benefit for low- to moderate-income taxpayers that offsets a portion of workers' voluntary contributions to their Individual Retirement Arrangements (IRAs), 401(k) plans and similar workplace retirement programs. - -###### **Profile 1.1** - -##### **In About you** - -* TP birthdate is before 1/1/2007 -* TP is not a full time student -* TP is not claimed as a dependent - -##### **In Family and household** - -Filing Status is HOH - -##### **In Income** - -* AGI is less than or equal to $57,375 -* Box 12: Select a code: D, E, H, S, AA, BB, or EE then enter $300 - -#### **Savers: How to make a Saver’s Credit qualifying person who is Single or MFS** - -##### Saver's Credit - -The Saver's Credit, also known as the Retirement Savings Contributions Credit, is a tax benefit for low- to moderate-income taxpayers that offsets a portion of workers' voluntary contributions to their Individual Retirement Arrangements (IRAs), 401(k) plans and similar workplace retirement programs. - -###### **Profile 1.2** - -**In About you** - -* TP birthdate is before 1/1/2007 - -* TP is not a full time student - -* TP is not claimed as a dependent - -**In Family and household** - -Filing Status is Single or MFS - -**In Income** - -* AGI is less than or equal to $38,250 - -* Box 12: Select a code: D, E, F, G, H, S, AA, BB, or EE then enter $300 - -#### **Savers: How to make a Saver’s Credit qualifying person who is MFJ** - -##### Saver's Credit - -The Saver's Credit, also known as the Retirement Savings Contributions Credit, is a tax benefit for low- to moderate-income taxpayers that offsets a portion of workers' voluntary contributions to their Individual Retirement Arrangements (IRAs), 401(k) plans and similar workplace retirement programs. - -*For MFJ, the Saver's Credit Form 8880 is a joint return.* - -###### **Profile 1.3** - -**In About you** - -* TP birthdate is before 1/1/2007 -* TP is not a full time student -* TP is not claimed as a dependent - -**In Spouse** - -* TP2 birthdate is before 1/1/2007 -* TP2 is not a full time student -* TP2 is not claimed as a dependent - -**In Family and household** - -Filing Status is MFJ - -**In Income** - -* AGI is less than or equal to $76,500 -* Box 12: Select a code: D, E, H, S, AA, BB, or EE then enter $300 for either taxpayer - -### **CTC** - -#### **How to qualify for the Child Tax Credit (CTC) / Additional Child Tax Credit (ACTC)** - -# - -##### Method 1 - -###### **In Family and household \> add person** - -Add a qualifying child dependent who meets requirements as a CTC qualifying child (Profile 1.2) - -###### **In Jobs** - -Add a W-2 and use an income amount in **box 1** that's at least a few hundred dollars more than the [standard deduction amount for the filing status you use](https://apps.irs.gov/app/vita/content/00/00_13_005.jsp) - -Note: DF's data import may offer to add a form W-2 for you automatically. If your aim is to qualify for CTC, you may need to update the amount of income that imported W-2 has in box 1, because: - -* If you go over the annual income limit for CTC, $200,000 ($400,000 if filing a joint return), you won't qualify for the credit. -* If you want to make sure you get an amount for CTC, make sure your AGI turns out to be more than your standard deduction. - -###### **In the remaining income sections** - -Note: the annual income limit for CTC is $200,000 ($400,000 if filing a joint return), adding too much income can disqualify you from CTC. - -###### **In Deductions** - -Note: the HSA, educator expense, or student loan interest deductions will reduce your AGI. If you want to make sure you get an amount for CTC, make sure your AGI turns out to be more than your standard deduction. - -###### **In Credits** - -IRS hasn't denied or reduced the amount of your credits for CTC, ACTC or the Credit for Other Dependents - -### **ODC** - -#### **ODC: How to qualify a child or dependent who is NOT a "qualifying child" for purposes of the Child Tax Credit.** - -##### Credit for Other Dependents - -Taxpayers with dependents who don't qualify for the Child Tax Credit may be able to claim the Credit for Other Dependents. - -A taxpayer can claim this credit if: - -* They claim the person as a [dependent](https://www.irs.gov/help/ita/whom-may-i-claim-as-a-dependent) on the taxpayer's return. -* They cannot use the dependent to claim the child tax credit or additional child tax credit. -* The dependent is a U.S. citizen, national or resident alien. - -###### **In Family and household** - -* Have a dependent (that does not qualify for CTC) - * Example: Not under age 17 at the end of the year - * Example: Has ITIN (not SSN) - -###### **In Income** - -* AGI does not exceed $200,000, $400,000 if MFJ - -###### **In Credits** - -* Can NOT claim Child Tax Credit (CTC) or additional child tax credit - -### **EITC** - -#### **How to make a TP who qualifies for EITC** - -##### Without a qualifying child - -###### **In About you** - -* Taxpayer's age is at least 25 but under 65 -* US Citizen -* SSN -* No work restriction on SSN - * Note: this question will show up if you made them a 'citizen by the end of the year' or a 'resident all year' but won't be asked you made them a citizen all year -* Can't be claimed as a dependent by another taxpayer - -###### **In Spouse** - -* Married -* Lived together all year -* US Citizen -* Choose Married Filing Jointly (do not use MFS) -* Taxpayer's age is at least 25 but under 65 -* SSN -* No work restriction on SSN - * Note: this question will show up if you made them a 'citizen by the end of the year' or a 'resident all year' but won't be asked you made them a citizen all year -* Can't be claimed as a dependent by another taxpayer - -###### **Filing Status** - -* Married Filing Jointly - -Note: you can do the EITC-without-a-qualifying-child scenario **ONLY** with filing statuses: **Single, QSS, or MFJ** - -###### **In Family and HH** - -* Skip/don't add a an EITC qualifying child - -##### Income - -###### **In Jobs** - -* W-2 box 1: $18,000 - -Note: this credit requires **earned** **income**, but has an [income limit tied to filing status](https://www.irs.gov/credits-deductions/individuals/earned-income-tax-credit/earned-income-and-earned-income-tax-credit-eitc-tables#eitctables) and an investment income limit, too. Keeping AGI to $18000 will work for Single, QSS, or MFJ, and low interest income $0-$1,550. - -###### **In Interest income** - -* Skip/or keep within EITC investment income limit - -Note: this credit requires **earned** **income**, but has an [income limit tied to filing status](https://www.irs.gov/credits-deductions/individuals/earned-income-tax-credit/earned-income-and-earned-income-tax-credit-eitc-tables#eitctables) and an investment income limit, too. Keeping AGI to $18000 will work for Single, QSS, or MFJ, and low interest income $0-$1,550. - -##### Credits \> EITC - -* You (and your spouse, if you have one) **could not** be someone else's qualifying child for EITC -* IRS has not denied or reduced the amount of your (or spouse's, if you have one) EITC - -##### With a qualifying child who is also the TP's dependent - -###### **In About you** - -* Taxpayer's age is at least 25 but under 65 -* US Citizen -* SSN -* No work restriction on SSN - * Note: this question will show up if you made them a 'citizen by the end of the year' or a 'resident all year' but won't be asked you made them a citizen all year -* Can't be claimed as a dependent by another taxpayer - -###### **In Spouse** - -* Married -* Lived together all year -* US Citizen -* Choose Married Filing Jointly (do not use MFS) -* Taxpayer's age is at least 25 but under 65 -* SSN -* No work restriction on SSN - * Note: this question will show up if you made them a 'citizen by the end of the year' or a 'resident all year' but won't be asked you made them a citizen all year -* Can't be claimed as a dependent by another taxpayer - -##### Filing Status - -* Married Filing Jointly - -Note: while you can do the EITC-with-qualifying-children scenario with different filing statuses, there are specific additional rules [for MFS](https://www.irs.gov/publications/p596#en_US_2023_publink1000297448) and HOH to be considered unmarried. - -##### In Family and HH \> add person - -* DOB: 1/1/2020 -* Relationship: biological child -* Not unable to care for self -* They lived with you all year -* No other parents -* They lived with me in the US 12 months -* SSN -* The card doesn’t list a work restriction -* They didn't pay more than half their own expenses -* They were not married -* US Citizen -* No one else can claim them -* Yes, claim them as a dependent -* 111-11-1111 -* No IP PIN - -##### Income - -###### **In Jobs** - -* W-2 box 1: $18,000 - -Note: this credit requires **earned** **income**, but has an [income limit tied to filing status](https://www.irs.gov/credits-deductions/individuals/earned-income-tax-credit/earned-income-and-earned-income-tax-credit-eitc-tables#eitctables) and an investment income limit, too. Keeping AGI to $18000 will work for Single, QSS, or MFJ, and low interest income $0-$1,550. - -###### **In Interest income** - -* Skip/or keep within EITC investment income limit - -Note: this credit requires **earned** **income**, but has an [income limit tied to filing status](https://www.irs.gov/credits-deductions/individuals/earned-income-tax-credit/earned-income-and-earned-income-tax-credit-eitc-tables#eitctables) and an investment income limit, too. Keeping AGI to $18000 will work for Single, QSS, or MFJ, and low interest income $0-$1,550. - -##### Credits \> EITC - -* You (and your spouse, if you have one) **could not** be someone else's qualifying child for EITC -* IRS has not denied or reduced the amount of your (or spouse's, if you have one) EITC - -##### With a qualifying child who is a nondependent - -###### **In About you** - -* Taxpayer's age is at least 25 but under 65 -* US Citizen -* SSN -* No work restriction on SSN - * Note: this question will show up if you made them a 'citizen by the end of the year' or a 'resident all year' but won't be asked you made them a citizen all year -* Can't be claimed as a dependent by another taxpayer - -###### **In Spouse** - -* Married -* Lived together all year -* US Citizen -* Choose Married Filing Jointly (do not use MFS) -* Taxpayer's age is at least 25 but under 65 -* SSN -* No work restriction on SSN - * Note: this question will show up if you made them a 'citizen by the end of the year' or a 'resident all year' but won't be asked you made them a citizen all year -* Can't be claimed as a dependent by another taxpayer - -###### **Filing Status** - -* Married Filing Jointly - -Note: while you can do the EITC-with-qualifying-children scenario with different filing statuses, there are specific additional rules [for MFS](https://www.irs.gov/publications/p596#en_US_2023_publink1000297448) and HOH to be considered unmarried. - -##### In Family and HH \> add person - -* DOB: 1/1/2020 -* Relationship: biological child -* Not unable to care for self -* They lived with you all year -* No other parents -* They lived with me in the US 12 months -* SSN -* The card doesn’t list a work restriction -* Yes, they paid more than half their own living expenses -* They were not married -* US Citizen - -Note: DF will ask you for this person's SSN and IP PIN at this point in the flow only if you've already gone through the Credits section, were determined to qualify for EITC and then went back to add another EITC qualifying child in Family and HH. Usually, it will just prompt you for this info in the Credits section. - -##### Income - -###### **In Jobs** - -* W-2 box 1: $18,000 - -Note: this credit requires **earned** **income**, but has an [income limit tied to filing status](https://www.irs.gov/credits-deductions/individuals/earned-income-tax-credit/earned-income-and-earned-income-tax-credit-eitc-tables#eitctables) and an investment income limit, too. Keeping AGI to $18000 will work for Single, QSS, or MFJ, and low interest income $0-$1,550. - -###### **In Interest income** - -* Skip/or keep within EITC investment income limit - -Note: this credit requires **earned** **income**, but has an [income limit tied to filing status](https://www.irs.gov/credits-deductions/individuals/earned-income-tax-credit/earned-income-and-earned-income-tax-credit-eitc-tables#eitctables) and an investment income limit, too. Keeping AGI to $18000 will work for Single, QSS, or MFJ, and low interest income $0-$1,550. - -##### Credits \> EITC - -* You (and your spouse, if you have one) **could not** be someone else's qualifying child for EITC -* IRS has not denied or reduced the amount of your (or spouse's, if you have one) EITC -* There’s no one else who could claim your qualifying child for EITC -* 111-11-1111 From 5d754abe13c16af7ff890c58a6920bdee5ac1d0d Mon Sep 17 00:00:00 2001 From: Kai Sereni Date: Thu, 7 Aug 2025 15:23:36 -0700 Subject: [PATCH 2/2] Updated to latest node version, typing, compatibility --- direct-file/.vscode/settings.json | 2 + .../df-client/df-client-app/package.json | 14 +- .../df-client/df-client-app/postcss.config.js | 4 +- .../df-client/df-client-app/src/App.test.tsx | 1 + .../df-client/df-client-app/src/App.tsx | 2 +- .../src/all-screens/AllScreensMenu.tsx | 8 +- .../all-screens/AllScreensScreenHeader.tsx | 8 +- .../stateTaxesSettingsDefaults.tsx | 2 +- .../df-client-app/src/auth/session.test.ts | 1 + .../src/components/Alert/MefAlert.test.tsx | 1 + .../CertifyCheckbox/CertifyCheckbox.test.tsx | 1 + .../ClosingSoonBanner.test.tsx | 1 + .../CollectionDataPreview.test.tsx | 3 +- .../ConfirmationModal.test.tsx | 1 + .../ConnectivityBanner.test.tsx | 1 + .../ContentDisplay/ContentDisplay.test.tsx | 1 + .../EndOfFilingSeasonBanner.test.tsx | 1 + .../FederalReturnStatusAlert.test.tsx | 1 + .../FormControl/ComplexFormControl.test.tsx | 1 + .../FormControl/DFTextInputMask.tsx | 2 +- .../FormControl/TextFormControl.test.tsx | 1 + .../FormControl/TextFormControl.tsx | 4 +- .../src/components/Head/Head.test.tsx | 1 + .../src/components/Header/Header.test.tsx | 1 + .../components/IconDisplay/IconDisplay.tsx | 3 +- .../src/components/IconList/IconList.test.tsx | 1 + .../IntroContent/IntroContent.test.tsx | 1 + .../src/components/QuietErrorMessage.tsx | 8 +- .../ScreenAlertAggregator.tsx | 10 +- .../SectionsAlertAggregator.test.tsx | 1 + .../StateTaxesCard/StateTaxesCard.test.tsx | 1 + .../SubmitButton/SubmitButton.test.tsx | 1 + .../AggregateSummaryAlert.test.tsx | 1 + .../SummaryAlert/SummaryErrorAlert.test.tsx | 1 + .../SummaryTable/SummaryTable.test.tsx | 1 + .../components/SurveyModal/SurveryModal.tsx | 2 +- .../SystemAlertAggregator.test.tsx | 1 + .../PriorYearTaxReturnCard.test.tsx | 1 + .../TaxReturnCard/TaxReturnCard.test.tsx | 1 + .../Translation/Translation.test.tsx | 1 + .../ChecklistSubcategory.test.tsx | 1 + .../factTypes/Address/Address.test.tsx | 1 + .../BankAccount/BankAccount.test.tsx | 1 + .../factTypes/Boolean/Boolean.test.tsx | 1 + .../CollectionItemReference.test.tsx | 1 + .../CollectionItemReference.tsx | 2 +- .../factTypes/DatePicker/DatePicker.test.tsx | 1 + .../src/components/factTypes/Ein/Ein.test.tsx | 1 + .../components/factTypes/Enum/Enum.test.tsx | 1 + .../src/components/factTypes/Enum/Enum.tsx | 4 +- .../GenericString/GenericString.test.tsx | 1 + .../factTypes/MultiEnum/MultiEnum.test.tsx | 1 + .../factTypes/MultiEnum/MultiEnum.tsx | 2 +- .../PhoneNumber/PhoneNumber.test.tsx | 1 + .../src/components/factTypes/Tin/Tin.test.tsx | 1 + .../src/components/screenUtils.ts | 2 +- .../customSystemAlertConfigs.tsx | 2 +- .../generate-src/readRawFacts.ts | 8 +- .../src/fact-dictionary/generate-src/xml-src | 1 - .../fact-dictionary/generate-src/xmlFactPaths | 1 - .../df-client-app/src/flow/Condition.test.ts | 1 + .../src/hooks/useApiHook.test.tsx | 1 + .../src/hooks/useEnumOptions.test.ts | 1 + .../src/hooks/useFactControl.test.ts | 1 + .../hooks/useGetTranslationValues.test.tsx | 1 + .../hooks/useNetworkConnectionStatus.test.tsx | 1 + .../hooks/usePollForSubmissionStatus.test.tsx | 1 + .../src/hooks/useSubmit.test.tsx | 1 + .../useTranslationContextFromFacts.test.ts | 1 + .../src/hooks/useUrlTranslator.test.tsx | 1 + .../df-client-app/src/misc/apiHelpers.test.ts | 1 + .../RejectedReturnDetails.test.tsx | 1 + .../slices/data-import/DevDataImportConfig.ts | 44 +- .../dataImportAllowMixOfValidW2s.test.ts | 2 +- .../dataImportIncompleteResponse.test.ts | 2 +- .../ErrorScreen/ErrorScreen.test.tsx | 1 + .../ReturnRejectedScreen.test.tsx | 1 + .../TransferInfoModal.test.tsx | 1 + .../TransferReturnScreen.test.tsx | 1 + .../WaitingForAcceptanceScreen.test.tsx | 1 + .../src/screens/DataView.test.tsx | 1 + .../src/screens/ScreenHeader.tsx | 2 +- .../data-view/CollectionHubDataView.test.tsx | 1 + .../CollectionHubDataViewInner.test.tsx | 1 + .../data-view/CollectionItemDataView.test.tsx | 1 + .../data-view/CollectionLoopRenderer.test.tsx | 1 + .../screens/data-view/SubSubCategory.test.tsx | 1 + .../src/screens/data-view/SubSubCategory.tsx | 11 +- .../src/test/FlowRender.test.tsx | 1 + .../factDictionaryTests/paymentMethod.test.ts | 1 + .../test/functionalFlowTests/aboutYou.test.ts | 1 + .../src/test/functionalFlowTests/cdcc.test.ts | 1 + .../test/functionalFlowTests/credits.test.ts | 1 + .../functionalFlowTests/deductions.test.ts | 1 + .../test/scenarioTests/flowSnapshots.test.ts | 3 +- .../src/test/scenarioTests/jsonScenarios | 1 - .../src/test/scenarioTests/scenarios.test.ts | 3 +- .../df-client-app/src/utils/condition.ts | 7 +- .../src/utils/errorBoundary.test.tsx | 3 +- .../df-client/df-client-app/vite.config.ts | 17 +- .../df-client/df-static-site/package.json | 9 +- .../df-static-site/postcss.config.js | 4 +- .../df-client/df-static-site/src/App.tsx | 2 +- .../df-client/df-static-site/tsconfig.json | 10 +- .../df-client/df-static-site/vite.config.ts | 6 +- .../eslint-plugin-df-rules/package.json | 6 +- .../eslint-plugin-df-rules/src/index.ts | 2 +- direct-file/df-client/package-lock.json | 4261 +++++++++++------ direct-file/df-client/package.json | 9 +- direct-file/docker-compose.yaml | 17 +- 110 files changed, 3088 insertions(+), 1494 deletions(-) delete mode 120000 direct-file/df-client/df-client-app/src/fact-dictionary/generate-src/xml-src delete mode 120000 direct-file/df-client/df-client-app/src/fact-dictionary/generate-src/xmlFactPaths delete mode 120000 direct-file/df-client/df-client-app/src/test/scenarioTests/jsonScenarios diff --git a/direct-file/.vscode/settings.json b/direct-file/.vscode/settings.json index 4e2bef5..8a20cc0 100644 --- a/direct-file/.vscode/settings.json +++ b/direct-file/.vscode/settings.json @@ -7,4 +7,6 @@ "files.watcherExclude": { "**/target": true }, + "java.compile.nullAnalysis.mode": "automatic", + "java.configuration.updateBuildConfiguration": "interactive", } diff --git a/direct-file/df-client/df-client-app/package.json b/direct-file/df-client/df-client-app/package.json index a1ec26a..15d6131 100644 --- a/direct-file/df-client/df-client-app/package.json +++ b/direct-file/df-client/df-client-app/package.json @@ -28,7 +28,7 @@ "react-router-dom": "^6.27.0", "ts-pattern": "^5.5.0", "uuid": "^9.0.0", - "vite": "^5.4.15", + "vite": "^7.1.0", "vite-tsconfig-paths": "^4.2.0", "web-vitals": "^2.1.0" }, @@ -43,8 +43,6 @@ "coverage": "vitest --coverage", "export-locales": "vite-node src/scripts/exportLocales.ts", "export-ga-events": "vite-node src/scripts/exportGAEvents.ts", - "format-write": "cd .. && npm run format-write", - "format": "cd .. && npm run format", "generate-dependency-graph": "vite-node src/fact-dictionary/generateDependencyGraph.ts", "generate-fact-dictionary": "vite-node src/fact-dictionary/generate-src/generate.ts", "generate-module-graph": "vite-node src/fact-dictionary/generateModuleGraph.ts", @@ -57,7 +55,7 @@ "postimport-locales": "prettier -w src/locales", "prebuild:ts": "npm run generate-fact-dictionary", "prelint:ts": "npm run build:ts", - "prestart": "npm install; npm run generate-fact-dictionary", + "prestart": "npm install && npm run generate-fact-dictionary", "prestart:promisc": "npm run generate-fact-dictionary", "pretest:ci:3": "npm run generate-fact-dictionary", "pretest:ci:2": "npm run generate-fact-dictionary", @@ -87,8 +85,8 @@ "@types/react-dom": "^18.3.1", "@types/stringify-object": "^4.0.5", "@types/uuid": "^9.0.1", - "@vitest/coverage-v8": "^1.4.0", - "@vitest/ui": "^1.4.0", + "@vitest/coverage-v8": "^3.2.4", + "@vitest/ui": "^3.2.4", "autoprefixer": "^10.4.14", "browserslist-to-esbuild": "^1.2.0", "eslint-plugin-df-rules": "^1.0.0", @@ -101,9 +99,9 @@ "stringify-object": "^5.0.0", "ts-node": "^10.9.1", "typescript": "5.6.3", - "vite-node": "^2.1.8", + "vite-node": "^3.2.4", "vite-plugin-singlefile": "^0.13.5", - "vitest": "^1.6.1", + "vitest": "^3.2.4", "zod": "^3.23.8" } } diff --git a/direct-file/df-client/df-client-app/postcss.config.js b/direct-file/df-client/df-client-app/postcss.config.js index a47ef4f..48b0d18 100644 --- a/direct-file/df-client/df-client-app/postcss.config.js +++ b/direct-file/df-client/df-client-app/postcss.config.js @@ -1,5 +1,5 @@ -module.exports = { +export default { plugins: { autoprefixer: {}, }, -}; +}; \ No newline at end of file diff --git a/direct-file/df-client/df-client-app/src/App.test.tsx b/direct-file/df-client/df-client-app/src/App.test.tsx index 2f62446..7038d3c 100644 --- a/direct-file/df-client/df-client-app/src/App.test.tsx +++ b/direct-file/df-client/df-client-app/src/App.test.tsx @@ -1,6 +1,7 @@ import { render, screen } from '@testing-library/react'; import { mockUseTranslation } from './test/mocks/mockFunctions.js'; import App from './App.js'; +import { vi } from 'vitest'; vi.mock(`react-i18next`, () => ({ useTranslation: mockUseTranslation, diff --git a/direct-file/df-client/df-client-app/src/App.tsx b/direct-file/df-client/df-client-app/src/App.tsx index 0eedff4..2431f81 100644 --- a/direct-file/df-client/df-client-app/src/App.tsx +++ b/direct-file/df-client/df-client-app/src/App.tsx @@ -36,7 +36,7 @@ import { isFlowEnabled } from './constants/pageConstants.js'; import { store } from './redux/store.js'; // These styles are global so we make sure it is imported at the root -import '@trussworks/react-uswds/lib/index.css'; +import '../node_modules/@trussworks/react-uswds/lib/index.css' import FileYourStateTaxesDetails from './components/FileYourStateTaxesDetails/FileYourStateTaxesDetails.js'; import { FactGraphTranslationContext } from './context/FactGraphTranslationContext.js'; import { DataImportMagicScreen } from './components/DataImportMagicScreen/DataImportMagicScreen.js'; diff --git a/direct-file/df-client/df-client-app/src/all-screens/AllScreensMenu.tsx b/direct-file/df-client/df-client-app/src/all-screens/AllScreensMenu.tsx index 128dc59..368aa2e 100644 --- a/direct-file/df-client/df-client-app/src/all-screens/AllScreensMenu.tsx +++ b/direct-file/df-client/df-client-app/src/all-screens/AllScreensMenu.tsx @@ -208,28 +208,28 @@ const AllScreensMenu: FC = ({ id='check-show-conditionals' name='conditionals' label='Show conditional screen logic' - onChange={(e) => onConditionalScreenLogicToggle(e.target.checked)} + onChange={(e: any) => onConditionalScreenLogicToggle(e.target.checked)} checked={showConditionalScreenLogic} /> setShowModals(e.target.checked)} + onChange={(e: any) => setShowModals(e.target.checked)} checked={showModals} /> setShowDataviews(e.target.checked)} + onChange={(e: any) => setShowDataviews(e.target.checked)} checked={showDataviews} /> setHideAlerts(e.target.checked)} + onChange={(e: any) => setHideAlerts(e.target.checked)} checked={hideAlerts} /> diff --git a/direct-file/df-client/df-client-app/src/all-screens/AllScreensScreenHeader.tsx b/direct-file/df-client/df-client-app/src/all-screens/AllScreensScreenHeader.tsx index 2c5e714..4a81c19 100644 --- a/direct-file/df-client/df-client-app/src/all-screens/AllScreensScreenHeader.tsx +++ b/direct-file/df-client/df-client-app/src/all-screens/AllScreensScreenHeader.tsx @@ -1,6 +1,6 @@ import { FC } from 'react'; import { Accordion, Tag } from '@trussworks/react-uswds'; -import { AccordionItemProps } from '@trussworks/react-uswds/lib/components/Accordion/Accordion.js'; +import { CommonAccordionItemProps } from '@irs/df-common'; import { dependenciesPerTaxTest } from './AllScreensContext.js'; import { BatchDetails, CONTENT_BATCHES, calculateScreenStatus } from '../flow/batches.js'; import { ScreenConfig } from '../flow/ScreenConfig.js'; @@ -85,7 +85,7 @@ const AllScreensScreenHeader: FC = ({ screen }) => ); if (taxTestsAffectedByScreen.length > 0) { - const taxTestsItems: AccordionItemProps[] = [ + const taxTestsItems: CommonAccordionItemProps[] = [ { title: `Tax tests affected (${taxTestsAffectedByScreen.length})`, content: ( @@ -106,7 +106,7 @@ const AllScreensScreenHeader: FC = ({ screen }) => if (screen.batches.length > 0) { const batchDetailsContent = getBatchDetailsContent(screen); - const batchDetailsItems: AccordionItemProps[] = [ + const batchDetailsItems: CommonAccordionItemProps[] = [ { title: `Batch Details`, content: batchDetailsContent, @@ -135,7 +135,7 @@ const AllScreensScreenHeader: FC = ({ screen }) => screenHeaderTitle.push({taxTestsAffectedByScreen.length} tests); } - const screenHeaderItems: AccordionItemProps[] = [ + const screenHeaderItems: CommonAccordionItemProps[] = [ { title: screenHeaderTitle, content: screenHeaderContent, diff --git a/direct-file/df-client/df-client-app/src/all-screens/postSubmission/stateTaxesSettingsDefaults.tsx b/direct-file/df-client/df-client-app/src/all-screens/postSubmission/stateTaxesSettingsDefaults.tsx index 54abab3..ac4a3c0 100644 --- a/direct-file/df-client/df-client-app/src/all-screens/postSubmission/stateTaxesSettingsDefaults.tsx +++ b/direct-file/df-client/df-client-app/src/all-screens/postSubmission/stateTaxesSettingsDefaults.tsx @@ -6,7 +6,7 @@ import { v4 as uuidv4 } from 'uuid'; import { SubmissionStatusContextType } from '../../context/SubmissionStatusContext/SubmissionStatusContext.js'; import { TaxReturnSubmissionStatus } from '../../types/core.js'; import { InterceptingFactGraph } from '../../factgraph/InterceptingFactGraph.js'; -import scenarioJson from '../../test/scenarioTests/jsonScenarios/mfj-all-income-types-withholding.json'; +import scenarioJson from '../../../../../backend/src/test/resources/scenarios/mfj-all-income-types-withholding.json' import { TaxReturnsSliceStateData } from '../../redux/slices/tax-return/taxReturnSlice.js'; const noop = () => { diff --git a/direct-file/df-client/df-client-app/src/auth/session.test.ts b/direct-file/df-client/df-client-app/src/auth/session.test.ts index 7055439..1057f28 100644 --- a/direct-file/df-client/df-client-app/src/auth/session.test.ts +++ b/direct-file/df-client/df-client-app/src/auth/session.test.ts @@ -1,5 +1,6 @@ import { sessionStorageMock } from '../test/mocks/mockFunctions.js'; import { SessionClock } from './session.js'; +import { vi } from 'vitest'; const SessionManagerMock = { closeAlert: vi.fn(), diff --git a/direct-file/df-client/df-client-app/src/components/Alert/MefAlert.test.tsx b/direct-file/df-client/df-client-app/src/components/Alert/MefAlert.test.tsx index 7a72aec..4ef0482 100644 --- a/direct-file/df-client/df-client-app/src/components/Alert/MefAlert.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/Alert/MefAlert.test.tsx @@ -1,5 +1,6 @@ import MefAlert, { MefAlertProps } from './MefAlert.js'; import { render, screen, within } from '@testing-library/react'; +import { vi } from 'vitest'; const { mockT, mockI18n } = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/components/CertifyCheckbox/CertifyCheckbox.test.tsx b/direct-file/df-client/df-client-app/src/components/CertifyCheckbox/CertifyCheckbox.test.tsx index dce2217..8c7671f 100644 --- a/direct-file/df-client/df-client-app/src/components/CertifyCheckbox/CertifyCheckbox.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/CertifyCheckbox/CertifyCheckbox.test.tsx @@ -1,4 +1,5 @@ import { i18n, renderWithTranslationProvider as render } from '../../test/test-utils.js'; +import { vi } from 'vitest'; import CertifyCheckbox from './CertifyCheckbox.js'; diff --git a/direct-file/df-client/df-client-app/src/components/ClosingSoonBanner/ClosingSoonBanner.test.tsx b/direct-file/df-client/df-client-app/src/components/ClosingSoonBanner/ClosingSoonBanner.test.tsx index 5634a90..71f75ef 100644 --- a/direct-file/df-client/df-client-app/src/components/ClosingSoonBanner/ClosingSoonBanner.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/ClosingSoonBanner/ClosingSoonBanner.test.tsx @@ -5,6 +5,7 @@ import { Mock } from 'vitest'; import mockEnYaml from '../../locales/en.yaml'; import { mockUseTranslation } from '../../test/mocks/mockFunctions.js'; import ClosingSoonBanner from './index.js'; +import { vi } from 'vitest'; vi.mock(`react-i18next`, () => ({ useTranslation: mockUseTranslation, diff --git a/direct-file/df-client/df-client-app/src/components/CollectionDataPreview/CollectionDataPreview.test.tsx b/direct-file/df-client/df-client-app/src/components/CollectionDataPreview/CollectionDataPreview.test.tsx index 25cd077..4eb628d 100644 --- a/direct-file/df-client/df-client-app/src/components/CollectionDataPreview/CollectionDataPreview.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/CollectionDataPreview/CollectionDataPreview.test.tsx @@ -5,13 +5,14 @@ import CollectionDataPreview from './CollectionDataPreview.js'; import { Path } from '../../flow/Path.js'; import { Provider } from 'react-redux'; import { store } from '../../redux/store.js'; -import marge from '../../redux/slices/data-import/mocks/marge.json'; +import marge from '../../../../../backend/src/main/resources/dataimportservice/mocks/marge.json' import { processPopulateResult } from '../../redux/slices/data-import/processPopulateResult.js'; import { DataImportRootResponseSchema } from '../../redux/slices/data-import/schema/DataImportServiceResponse.js'; import { FactGraphContextProvider } from '../../factgraph/FactGraphContext.js'; import mockEnYaml from '../../locales/en.yaml'; import { getEmptySystemAlertsMap, SystemAlertContext } from '../../context/SystemAlertContext/SystemAlertContext.js'; import * as useApiHook from '../../hooks/useApiHook.js'; +import { vi } from 'vitest'; vi.mock(`react-i18next`, () => ({ useTranslation: mockUseTranslation, diff --git a/direct-file/df-client/df-client-app/src/components/ConfirmationModal/ConfirmationModal.test.tsx b/direct-file/df-client/df-client-app/src/components/ConfirmationModal/ConfirmationModal.test.tsx index fa3f1e7..c9589fb 100644 --- a/direct-file/df-client/df-client-app/src/components/ConfirmationModal/ConfirmationModal.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/ConfirmationModal/ConfirmationModal.test.tsx @@ -2,6 +2,7 @@ import { render, screen } from '@testing-library/react'; import { initI18n } from '../../i18n.js'; import ConfirmationModal from './ConfirmationModal.js'; +import { vi } from 'vitest'; const i18next = await initI18n(); i18next.addResourceBundle(`test`, `translation`, { diff --git a/direct-file/df-client/df-client-app/src/components/ConnectivityBanner/ConnectivityBanner.test.tsx b/direct-file/df-client/df-client-app/src/components/ConnectivityBanner/ConnectivityBanner.test.tsx index 6e315d3..81c2b61 100644 --- a/direct-file/df-client/df-client-app/src/components/ConnectivityBanner/ConnectivityBanner.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/ConnectivityBanner/ConnectivityBanner.test.tsx @@ -7,6 +7,7 @@ import { mockUseTranslation } from '../../test/mocks/mockFunctions.js'; import { NetworkConnectionContext } from '../../context/networkConnectionContext.js'; import ConnectivityBanner from './index.js'; import { NetworkStatus } from '../../hooks/useNetworkConnectionStatus.js'; +import { vi } from 'vitest'; vi.mock(`react-i18next`, () => ({ useTranslation: mockUseTranslation, diff --git a/direct-file/df-client/df-client-app/src/components/ContentDisplay/ContentDisplay.test.tsx b/direct-file/df-client/df-client-app/src/components/ContentDisplay/ContentDisplay.test.tsx index e0bd5a5..b22757d 100644 --- a/direct-file/df-client/df-client-app/src/components/ContentDisplay/ContentDisplay.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/ContentDisplay/ContentDisplay.test.tsx @@ -2,6 +2,7 @@ import { render, screen } from '@testing-library/react'; import { initI18n } from '../../i18n.js'; import ContentDisplay from './ContentDisplay.js'; +import { vi } from 'vitest'; vi.mock(`../../hooks/useTranslationContextFromFacts`, () => ({ default: () => { diff --git a/direct-file/df-client/df-client-app/src/components/EndOfFilingSeasonBanner/EndOfFilingSeasonBanner.test.tsx b/direct-file/df-client/df-client-app/src/components/EndOfFilingSeasonBanner/EndOfFilingSeasonBanner.test.tsx index da4e440..0b80fa6 100644 --- a/direct-file/df-client/df-client-app/src/components/EndOfFilingSeasonBanner/EndOfFilingSeasonBanner.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/EndOfFilingSeasonBanner/EndOfFilingSeasonBanner.test.tsx @@ -9,6 +9,7 @@ import { } from '../../constants/taxConstants.js'; import { v4 as uuidv4 } from 'uuid'; import { expect } from 'vitest'; +import { vi } from 'vitest'; // This mock allows for testing of any component that is rendered using the // useTranslation hook from react-i18next. diff --git a/direct-file/df-client/df-client-app/src/components/FederalReturnStatusAlert/FederalReturnStatusAlert.test.tsx b/direct-file/df-client/df-client-app/src/components/FederalReturnStatusAlert/FederalReturnStatusAlert.test.tsx index 2a162ae..224fb54 100644 --- a/direct-file/df-client/df-client-app/src/components/FederalReturnStatusAlert/FederalReturnStatusAlert.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/FederalReturnStatusAlert/FederalReturnStatusAlert.test.tsx @@ -8,6 +8,7 @@ import { v4 as uuidv4 } from 'uuid'; import { beforeAll, afterAll } from 'vitest'; import { MEF_REJECTION_ERROR_CODES } from '../../constants/rejectionConstants.js'; import { FactGraphContextProvider } from '../../factgraph/FactGraphContext.js'; +import { vi } from 'vitest'; const { t } = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/components/FormControl/ComplexFormControl.test.tsx b/direct-file/df-client/df-client-app/src/components/FormControl/ComplexFormControl.test.tsx index 28b43cb..1f501d3 100644 --- a/direct-file/df-client/df-client-app/src/components/FormControl/ComplexFormControl.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/FormControl/ComplexFormControl.test.tsx @@ -4,6 +4,7 @@ import { ComplexFormControl } from './ComplexFormControl.js'; import { PAGE_HEADING_ID } from '../PageTitle/index.js'; import { ConcretePath } from '@irs/js-factgraph-scala'; import { Path } from '../../fact-dictionary/Path.js'; +import { vi } from 'vitest'; const mocks = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/components/FormControl/DFTextInputMask.tsx b/direct-file/df-client/df-client-app/src/components/FormControl/DFTextInputMask.tsx index fbdf446..df9374b 100644 --- a/direct-file/df-client/df-client-app/src/components/FormControl/DFTextInputMask.tsx +++ b/direct-file/df-client/df-client-app/src/components/FormControl/DFTextInputMask.tsx @@ -1,6 +1,6 @@ import React, { forwardRef, useEffect, useState } from 'react'; import classnames from 'classnames'; -import type { TextInputProps } from '@trussworks/react-uswds/lib/components/forms/TextInput/TextInput.js'; +import type { TextInputProps } from './DFTextInput.js'; import { DFTextInput } from './DFTextInput.js'; export type AllProps = TextInputProps & { diff --git a/direct-file/df-client/df-client-app/src/components/FormControl/TextFormControl.test.tsx b/direct-file/df-client/df-client-app/src/components/FormControl/TextFormControl.test.tsx index 6534023..6bbe13c 100644 --- a/direct-file/df-client/df-client-app/src/components/FormControl/TextFormControl.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/FormControl/TextFormControl.test.tsx @@ -4,6 +4,7 @@ import { userEvent } from '@testing-library/user-event'; import { TextFormControl } from './TextFormControl.js'; import { ConcretePath, JSEitherL, JSEitherR, JSeither } from '@irs/js-factgraph-scala'; import { Path } from '../../fact-dictionary/Path.js'; +import { vi } from 'vitest'; const mocks = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/components/FormControl/TextFormControl.tsx b/direct-file/df-client/df-client-app/src/components/FormControl/TextFormControl.tsx index 4cfc1f2..8d4fa6e 100644 --- a/direct-file/df-client/df-client-app/src/components/FormControl/TextFormControl.tsx +++ b/direct-file/df-client/df-client-app/src/components/FormControl/TextFormControl.tsx @@ -1,7 +1,7 @@ import { Dispatch, SetStateAction, useId } from 'react'; import { ConcretePath, JSeither } from '@irs/js-factgraph-scala'; import { FormGroup, InputGroup, InputPrefix, TextInput, InputSuffix } from '@trussworks/react-uswds'; -import type { TextInputProps } from '@trussworks/react-uswds/lib/components/forms/TextInput/TextInput.js'; +import type { TextInputProps } from './DFTextInput.js'; import { useFactControl } from '../../hooks/useFactControl.js'; import { buildControlErrorId, buildFormControlId, buildHintId, buildHintKey, sanitizeString } from './helpers.js'; import Translation from '../Translation/index.js'; @@ -191,7 +191,7 @@ export function TextFormControl({ onChange(event.target.value)} + onChange={(event: any) => onChange(event.target.value)} {...formControlProps} /> ); diff --git a/direct-file/df-client/df-client-app/src/components/Head/Head.test.tsx b/direct-file/df-client/df-client-app/src/components/Head/Head.test.tsx index 3088830..6032d8f 100644 --- a/direct-file/df-client/df-client-app/src/components/Head/Head.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/Head/Head.test.tsx @@ -5,6 +5,7 @@ import { mockUseTranslation } from '../../test/mocks/mockFunctions.js'; import Head from './Head.js'; import { NetworkConnectionContext } from '../../context/networkConnectionContext.js'; import { Helmet, HelmetProvider } from 'react-helmet-async'; +import { vi } from 'vitest'; vi.mock(`react-i18next`, () => ({ useTranslation: mockUseTranslation, diff --git a/direct-file/df-client/df-client-app/src/components/Header/Header.test.tsx b/direct-file/df-client/df-client-app/src/components/Header/Header.test.tsx index 0f55db4..e1cb5d8 100644 --- a/direct-file/df-client/df-client-app/src/components/Header/Header.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/Header/Header.test.tsx @@ -5,6 +5,7 @@ import { BrowserRouter } from 'react-router-dom'; import mockEnYaml from '../../locales/en.yaml'; import { sessionStorageMock, mockUseTranslation } from '../../test/mocks/mockFunctions.js'; import { authKeys } from '../../auth/constants.js'; +import { vi } from 'vitest'; import Header from './Header.js'; diff --git a/direct-file/df-client/df-client-app/src/components/IconDisplay/IconDisplay.tsx b/direct-file/df-client/df-client-app/src/components/IconDisplay/IconDisplay.tsx index 84e83b3..0e3fca8 100644 --- a/direct-file/df-client/df-client-app/src/components/IconDisplay/IconDisplay.tsx +++ b/direct-file/df-client/df-client-app/src/components/IconDisplay/IconDisplay.tsx @@ -2,7 +2,6 @@ import { FC, PropsWithChildren } from 'react'; import { Icon } from '@trussworks/react-uswds'; // mysterious linter error, but the build is fine // eslint-disable-next-line import/no-unresolved -import { IconProps } from '@trussworks/react-uswds/lib/components/Icon/Icon.js'; import classNames from 'classnames'; import styles from './IconDisplay.module.scss'; import { useTranslation } from 'react-i18next'; @@ -18,7 +17,7 @@ export type IconDisplayProps = PropsWithChildren< style?: React.CSSProperties; i18nKey?: string; isCentered?: boolean; - } & Omit + } & any >; /* we can pass in className and bare style props, which will be merged with the styles from the module, diff --git a/direct-file/df-client/df-client-app/src/components/IconList/IconList.test.tsx b/direct-file/df-client/df-client-app/src/components/IconList/IconList.test.tsx index a0fb079..022591e 100644 --- a/direct-file/df-client/df-client-app/src/components/IconList/IconList.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/IconList/IconList.test.tsx @@ -4,6 +4,7 @@ import { FactGraphContextProvider } from '../../factgraph/FactGraphContext.js'; import { setupStore } from '../../redux/store.js'; import { render, screen } from '@testing-library/react'; import { BrowserRouter } from 'react-router-dom'; +import { vi } from 'vitest'; import IconList from './IconList.js'; diff --git a/direct-file/df-client/df-client-app/src/components/IntroContent/IntroContent.test.tsx b/direct-file/df-client/df-client-app/src/components/IntroContent/IntroContent.test.tsx index 0382e01..7941775 100644 --- a/direct-file/df-client/df-client-app/src/components/IntroContent/IntroContent.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/IntroContent/IntroContent.test.tsx @@ -2,6 +2,7 @@ import { PropsWithoutRef, ComponentProps } from 'react'; import { render, screen } from '@testing-library/react'; import IntroContent from './IntroContent.js'; import { initI18n } from '../../i18n.js'; +import { vi } from 'vitest'; vi.mock(`../../hooks/useTranslationContextFromFacts`, () => ({ default: () => { diff --git a/direct-file/df-client/df-client-app/src/components/QuietErrorMessage.tsx b/direct-file/df-client/df-client-app/src/components/QuietErrorMessage.tsx index af7f10d..dea0d3b 100644 --- a/direct-file/df-client/df-client-app/src/components/QuietErrorMessage.tsx +++ b/direct-file/df-client/df-client-app/src/components/QuietErrorMessage.tsx @@ -1,10 +1,16 @@ import type { ErrorMessage } from '@trussworks/react-uswds'; import classnames from 'classnames'; +import React from 'react'; /** * Stylistically identical to trusswork's ErrorMessage component, but without the alert role */ -export const QuietErrorMessage: typeof ErrorMessage = ({ children, className, id }) => { +type Props = { + children: React.ReactNode; + className: string; + id: string; +} +export const QuietErrorMessage: typeof ErrorMessage = ({ children, className, id }: Props) => { const classes = classnames(`usa-error-message`, className); return ( diff --git a/direct-file/df-client/df-client-app/src/components/ScreenAlertAggregator/ScreenAlertAggregator.tsx b/direct-file/df-client/df-client-app/src/components/ScreenAlertAggregator/ScreenAlertAggregator.tsx index e0cb53c..68002e7 100644 --- a/direct-file/df-client/df-client-app/src/components/ScreenAlertAggregator/ScreenAlertAggregator.tsx +++ b/direct-file/df-client/df-client-app/src/components/ScreenAlertAggregator/ScreenAlertAggregator.tsx @@ -28,8 +28,6 @@ function parseAlertsByType(alerts: Al case `error`: errors.push(alert); break; - default: - assertNever(alert.props.type); } }); @@ -94,7 +92,7 @@ const ScreenAlertAggregator = ({ // Mef errors mefErrors.map((mefError) => ( @@ -103,7 +101,7 @@ const ScreenAlertAggregator = ({ { // Tax return errors taxReturnErrors.map((taxReturnError) => ( - + )) } { @@ -114,7 +112,7 @@ const ScreenAlertAggregator = ({ // MeF warnings mefWarnings.map((mefWarning) => ( @@ -126,7 +124,7 @@ const ScreenAlertAggregator = ({ const { childConfigs, ...props } = taxReturnWarning.props; return ( - + {childConfigs?.map((childConfig) => { return ( { return { diff --git a/direct-file/df-client/df-client-app/src/components/StateTaxesCard/StateTaxesCard.test.tsx b/direct-file/df-client/df-client-app/src/components/StateTaxesCard/StateTaxesCard.test.tsx index 882f671..c709525 100644 --- a/direct-file/df-client/df-client-app/src/components/StateTaxesCard/StateTaxesCard.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/StateTaxesCard/StateTaxesCard.test.tsx @@ -8,6 +8,7 @@ import { FactGraphContextProvider } from '../../factgraph/FactGraphContext.js'; import { TaxReturnsContext } from '../../context/TaxReturnsContext.js'; import { wrapComponent } from '../../test/helpers.js'; import { setupStore } from '../../redux/store.js'; +import { vi } from 'vitest'; const { t } = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/components/SubmitButton/SubmitButton.test.tsx b/direct-file/df-client/df-client-app/src/components/SubmitButton/SubmitButton.test.tsx index 2d6706a..5837329 100644 --- a/direct-file/df-client/df-client-app/src/components/SubmitButton/SubmitButton.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/SubmitButton/SubmitButton.test.tsx @@ -13,6 +13,7 @@ import { } from '../../context/SystemAlertContext/SystemAlertContext.js'; import { TaxReturnsContext } from '../../context/TaxReturnsContext.js'; import { userEvent } from '@testing-library/user-event'; +import { vi } from 'vitest'; const mocks = vi.hoisted(() => { const submit = vi.fn(() => ({ hasSubmitError: false, isRetryDisabled: false })); diff --git a/direct-file/df-client/df-client-app/src/components/SummaryAlert/AggregateSummaryAlert.test.tsx b/direct-file/df-client/df-client-app/src/components/SummaryAlert/AggregateSummaryAlert.test.tsx index 16af968..1362b2d 100644 --- a/direct-file/df-client/df-client-app/src/components/SummaryAlert/AggregateSummaryAlert.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/SummaryAlert/AggregateSummaryAlert.test.tsx @@ -1,6 +1,7 @@ import AggregateSummaryAlert, { AggregateSummaryAlertProps } from './AggregateSummaryAlert.js'; import { render, screen } from '@testing-library/react'; import { MutableRefObject } from 'react'; +import { vi } from 'vitest'; const { mockT, mockI18n } = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/components/SummaryAlert/SummaryErrorAlert.test.tsx b/direct-file/df-client/df-client-app/src/components/SummaryAlert/SummaryErrorAlert.test.tsx index c32b796..c1a0915 100644 --- a/direct-file/df-client/df-client-app/src/components/SummaryAlert/SummaryErrorAlert.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/SummaryAlert/SummaryErrorAlert.test.tsx @@ -10,6 +10,7 @@ import { FactGraphContextProvider } from '../../factgraph/FactGraphContext.js'; import { ConcretePath } from '@irs/js-factgraph-scala'; import { MutableRefObject } from 'react'; import { setupStore } from '../../redux/store.js'; +import { vi } from 'vitest'; // This mock allows for testing of any component that is rendered using the // useTranslation hook from react-i18next. diff --git a/direct-file/df-client/df-client-app/src/components/SummaryTable/SummaryTable.test.tsx b/direct-file/df-client/df-client-app/src/components/SummaryTable/SummaryTable.test.tsx index cc1fd87..4e856f6 100644 --- a/direct-file/df-client/df-client-app/src/components/SummaryTable/SummaryTable.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/SummaryTable/SummaryTable.test.tsx @@ -3,6 +3,7 @@ import { initI18n } from '../../i18n.js'; import mockEnYaml from '../../locales/en.yaml'; import { SummaryTable } from './SummaryTable.js'; import { getByTextWithTags } from '../../utils/test-utils.js'; +import { vi } from 'vitest'; const i18next = await initI18n(); i18next.addResourceBundle(`test`, `translation`, mockEnYaml); diff --git a/direct-file/df-client/df-client-app/src/components/SurveyModal/SurveryModal.tsx b/direct-file/df-client/df-client-app/src/components/SurveyModal/SurveryModal.tsx index cbe460a..3742c5e 100644 --- a/direct-file/df-client/df-client-app/src/components/SurveyModal/SurveryModal.tsx +++ b/direct-file/df-client/df-client-app/src/components/SurveyModal/SurveryModal.tsx @@ -122,7 +122,7 @@ const SurveyModal = ({ modalRef, toggleModal, openSurveyConfirmationModal }: Sur checked={isChecked} required className='full-width-checkbox' - onChange={(e) => setIsChecked(e.target.checked ? true : false)} + onChange={(e: any) => setIsChecked(e.target.checked ? true : false)} /> diff --git a/direct-file/df-client/df-client-app/src/components/SystemAlertAggregator/SystemAlertAggregator.test.tsx b/direct-file/df-client/df-client-app/src/components/SystemAlertAggregator/SystemAlertAggregator.test.tsx index b99909f..e427c18 100644 --- a/direct-file/df-client/df-client-app/src/components/SystemAlertAggregator/SystemAlertAggregator.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/SystemAlertAggregator/SystemAlertAggregator.test.tsx @@ -6,6 +6,7 @@ import { SystemAlertKey, } from '../../context/SystemAlertContext/SystemAlertContext.js'; import { render, screen } from '@testing-library/react'; +import { vi } from 'vitest'; const { mockT, mockI18n } = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/components/TaxReturnCard/PriorYearTaxReturnCard.test.tsx b/direct-file/df-client/df-client-app/src/components/TaxReturnCard/PriorYearTaxReturnCard.test.tsx index 339541f..7b607d5 100644 --- a/direct-file/df-client/df-client-app/src/components/TaxReturnCard/PriorYearTaxReturnCard.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/TaxReturnCard/PriorYearTaxReturnCard.test.tsx @@ -7,6 +7,7 @@ import { Provider } from 'react-redux'; import { TaxReturnsContext } from '../../context/TaxReturnsContext.js'; import { v4 as uuidv4 } from 'uuid'; import { getCurrentTaxYearReturn } from '../../utils/taxReturnUtils.js'; +import { vi } from 'vitest'; const currentTaxYear = parseInt(CURRENT_TAX_YEAR); const previousTaxYear = Number.parseInt(CURRENT_TAX_YEAR) - 1; diff --git a/direct-file/df-client/df-client-app/src/components/TaxReturnCard/TaxReturnCard.test.tsx b/direct-file/df-client/df-client-app/src/components/TaxReturnCard/TaxReturnCard.test.tsx index 6d37435..3ee8d9d 100644 --- a/direct-file/df-client/df-client-app/src/components/TaxReturnCard/TaxReturnCard.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/TaxReturnCard/TaxReturnCard.test.tsx @@ -8,6 +8,7 @@ import { CreateTaxReturnCard } from './CreateTaxReturnCard.js'; import en from '../../locales/en.yaml'; import { store } from '../../redux/store.js'; import { Provider } from 'react-redux'; +import { vi } from 'vitest'; const { mockIsFlowEnabled } = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/components/Translation/Translation.test.tsx b/direct-file/df-client/df-client-app/src/components/Translation/Translation.test.tsx index 9416715..57a0e5a 100644 --- a/direct-file/df-client/df-client-app/src/components/Translation/Translation.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/Translation/Translation.test.tsx @@ -2,6 +2,7 @@ import { render, screen } from '@testing-library/react'; import Translation from './Translation.js'; import { initI18n } from '../../i18n.js'; +import { vi } from 'vitest'; vi.mock(`../../hooks/useTranslationContextFromFacts`, () => ({ default: () => { diff --git a/direct-file/df-client/df-client-app/src/components/checklist/ChecklistSubcategory/ChecklistSubcategory.test.tsx b/direct-file/df-client/df-client-app/src/components/checklist/ChecklistSubcategory/ChecklistSubcategory.test.tsx index d7267fb..f41954a 100644 --- a/direct-file/df-client/df-client-app/src/components/checklist/ChecklistSubcategory/ChecklistSubcategory.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/checklist/ChecklistSubcategory/ChecklistSubcategory.test.tsx @@ -6,6 +6,7 @@ import { screen } from '@testing-library/react'; import { HelmetProvider } from 'react-helmet-async'; import { FactGraphContextProvider } from '../../../factgraph/FactGraphContext.js'; import { setupStore } from '../../../redux/store.js'; +import { vi } from 'vitest'; const sharedProps = { isNext: true, diff --git a/direct-file/df-client/df-client-app/src/components/factTypes/Address/Address.test.tsx b/direct-file/df-client/df-client-app/src/components/factTypes/Address/Address.test.tsx index 8e743cf..7197c93 100644 --- a/direct-file/df-client/df-client-app/src/components/factTypes/Address/Address.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/factTypes/Address/Address.test.tsx @@ -11,6 +11,7 @@ import { setupStore } from '../../../redux/store.js'; import { createRef } from 'react'; import { ConcretePath } from '@irs/js-factgraph-scala'; import { Path } from '../../../flow/Path.js'; +import { vi } from 'vitest'; // This mock allows for testing of any component that is rendered using the // useTranslation hook from react-i18next. diff --git a/direct-file/df-client/df-client-app/src/components/factTypes/BankAccount/BankAccount.test.tsx b/direct-file/df-client/df-client-app/src/components/factTypes/BankAccount/BankAccount.test.tsx index e457b0b..330b347 100644 --- a/direct-file/df-client/df-client-app/src/components/factTypes/BankAccount/BankAccount.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/factTypes/BankAccount/BankAccount.test.tsx @@ -8,6 +8,7 @@ import { setupStore } from '../../../redux/store.js'; import { Path } from '../../../flow/Path.js'; import type { useFactControl } from '../../../hooks/useFactControl.js'; import type { BankAccount as SFGBankAccount, BankAccountValidationFailure } from '@irs/js-factgraph-scala'; +import { vi } from 'vitest'; const mockUseFactControl = await vi.hoisted(async () => { type UseFactControl = typeof useFactControl; diff --git a/direct-file/df-client/df-client-app/src/components/factTypes/Boolean/Boolean.test.tsx b/direct-file/df-client/df-client-app/src/components/factTypes/Boolean/Boolean.test.tsx index 6fb71ef..254e086 100644 --- a/direct-file/df-client/df-client-app/src/components/factTypes/Boolean/Boolean.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/factTypes/Boolean/Boolean.test.tsx @@ -7,6 +7,7 @@ import { setupStore } from '../../../redux/store.js'; import { ConcretePath } from '@irs/js-factgraph-scala'; import { test, expect } from 'vitest'; import { AbsolutePath } from '../../../fact-dictionary/Path.js'; +import { vi } from 'vitest'; const mocks = vi.hoisted(() => { // useFact related hooks diff --git a/direct-file/df-client/df-client-app/src/components/factTypes/CollectionItemReference/CollectionItemReference.test.tsx b/direct-file/df-client/df-client-app/src/components/factTypes/CollectionItemReference/CollectionItemReference.test.tsx index f28adca..9d8aeda 100644 --- a/direct-file/df-client/df-client-app/src/components/factTypes/CollectionItemReference/CollectionItemReference.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/factTypes/CollectionItemReference/CollectionItemReference.test.tsx @@ -10,6 +10,7 @@ import { Path } from '../../../flow/Path.js'; import { mockUseTranslation } from '../../../test/mocks/mockFunctions.js'; import CollectionItemReference from './CollectionItemReference.js'; +import { vi } from 'vitest'; const mocks = vi.hoisted(() => { const getCollectionPath = vi.fn((path: FgPath) => path); diff --git a/direct-file/df-client/df-client-app/src/components/factTypes/CollectionItemReference/CollectionItemReference.tsx b/direct-file/df-client/df-client-app/src/components/factTypes/CollectionItemReference/CollectionItemReference.tsx index fa7e862..7a11270 100644 --- a/direct-file/df-client/df-client-app/src/components/factTypes/CollectionItemReference/CollectionItemReference.tsx +++ b/direct-file/df-client/df-client-app/src/components/factTypes/CollectionItemReference/CollectionItemReference.tsx @@ -62,7 +62,7 @@ const CollectionItemReference = forwardRef( name={path} label={} value={value} - onChange={(event) => onChange(event.target.value)} + onChange={(event: any) => onChange(event.target.value)} defaultChecked={defaultChecked} required key={fullPath} diff --git a/direct-file/df-client/df-client-app/src/components/factTypes/DatePicker/DatePicker.test.tsx b/direct-file/df-client/df-client-app/src/components/factTypes/DatePicker/DatePicker.test.tsx index 79f6e0a..4c39221 100644 --- a/direct-file/df-client/df-client-app/src/components/factTypes/DatePicker/DatePicker.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/factTypes/DatePicker/DatePicker.test.tsx @@ -4,6 +4,7 @@ import { Path } from '../../../flow/Path.js'; import { i18n, renderWithTranslationProvider as render, fireEvent } from '../../../test/test-utils.js'; import { DatePicker, validateDate } from './DatePicker.js'; import { ConcretePath, Day } from '@irs/js-factgraph-scala'; +import { vi } from 'vitest'; const mocks = vi.hoisted(() => { // useFact related hooks diff --git a/direct-file/df-client/df-client-app/src/components/factTypes/Ein/Ein.test.tsx b/direct-file/df-client/df-client-app/src/components/factTypes/Ein/Ein.test.tsx index 494512f..37a1dab 100644 --- a/direct-file/df-client/df-client-app/src/components/factTypes/Ein/Ein.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/factTypes/Ein/Ein.test.tsx @@ -5,6 +5,7 @@ import { createRef } from 'react'; import { Path } from '../../../flow/Path.js'; import { customRender } from '../../../utils/test-utils.js'; import Ein from './Ein.js'; +import { vi } from 'vitest'; // This mock allows for testing of any component that is rendered using the // useTranslation hook from react-i18next. diff --git a/direct-file/df-client/df-client-app/src/components/factTypes/Enum/Enum.test.tsx b/direct-file/df-client/df-client-app/src/components/factTypes/Enum/Enum.test.tsx index f56fda8..a0a185e 100644 --- a/direct-file/df-client/df-client-app/src/components/factTypes/Enum/Enum.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/factTypes/Enum/Enum.test.tsx @@ -6,6 +6,7 @@ import { Path as FgPath } from '../../../fact-dictionary/Path.js'; import { FactGraphContextProvider } from '../../../factgraph/FactGraphContext.js'; import { setupStore } from '../../../redux/store.js'; import { Path } from '../../../flow/Path.js'; +import { vi } from 'vitest'; import Enum from './Enum.js'; diff --git a/direct-file/df-client/df-client-app/src/components/factTypes/Enum/Enum.tsx b/direct-file/df-client/df-client-app/src/components/factTypes/Enum/Enum.tsx index 210217d..9f100b4 100644 --- a/direct-file/df-client/df-client-app/src/components/factTypes/Enum/Enum.tsx +++ b/direct-file/df-client/df-client-app/src/components/factTypes/Enum/Enum.tsx @@ -99,7 +99,7 @@ const Enum = forwardRef( id={path} name={path} validationStatus={showError ? `error` : undefined} - onChange={(event) => handleValueChange(event.target.value)} + onChange={(event: any) => handleValueChange(event.target.value)} value={selectedValue} aria-describedby={errorId} required={required} @@ -125,7 +125,7 @@ const Enum = forwardRef( name={path} label={} value={value} - onChange={(event) => handleValueChange(event.target.value)} + onChange={(event: any) => handleValueChange(event.target.value)} defaultChecked={value === fact?.getValue()} key={fullPath} required diff --git a/direct-file/df-client/df-client-app/src/components/factTypes/GenericString/GenericString.test.tsx b/direct-file/df-client/df-client-app/src/components/factTypes/GenericString/GenericString.test.tsx index 839325c..9873803 100644 --- a/direct-file/df-client/df-client-app/src/components/factTypes/GenericString/GenericString.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/factTypes/GenericString/GenericString.test.tsx @@ -10,6 +10,7 @@ import { FactGraphContextProvider } from '../../../factgraph/FactGraphContext.js import { setupStore } from '../../../redux/store.js'; import { ConcretePath } from '@irs/js-factgraph-scala'; import { Path } from '../../../flow/Path.js'; +import { vi } from 'vitest'; // This mock allows for testing of any component that is rendered using the // useTranslation hook from react-i18next. diff --git a/direct-file/df-client/df-client-app/src/components/factTypes/MultiEnum/MultiEnum.test.tsx b/direct-file/df-client/df-client-app/src/components/factTypes/MultiEnum/MultiEnum.test.tsx index 66ca0b9..298de4c 100644 --- a/direct-file/df-client/df-client-app/src/components/factTypes/MultiEnum/MultiEnum.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/factTypes/MultiEnum/MultiEnum.test.tsx @@ -3,6 +3,7 @@ import { render } from '@testing-library/react'; import MultiEnum from './MultiEnum.js'; import { Path as FgPath } from '../../../fact-dictionary/Path.js'; import { Path } from '../../../flow/Path.js'; +import { vi } from 'vitest'; const mocks = vi.hoisted(() => { const getOptionsPath = vi.fn((path: FgPath) => { diff --git a/direct-file/df-client/df-client-app/src/components/factTypes/MultiEnum/MultiEnum.tsx b/direct-file/df-client/df-client-app/src/components/factTypes/MultiEnum/MultiEnum.tsx index 61a5062..a691855 100644 --- a/direct-file/df-client/df-client-app/src/components/factTypes/MultiEnum/MultiEnum.tsx +++ b/direct-file/df-client/df-client-app/src/components/factTypes/MultiEnum/MultiEnum.tsx @@ -104,7 +104,7 @@ const MultiEnum = forwardRef( name={path} value={value} checked={selectedValues.has(value)} - onChange={(event) => handleValueChange(event.target.value)} + onChange={(event: any) => handleValueChange(event.target.value)} /> ))} diff --git a/direct-file/df-client/df-client-app/src/components/factTypes/PhoneNumber/PhoneNumber.test.tsx b/direct-file/df-client/df-client-app/src/components/factTypes/PhoneNumber/PhoneNumber.test.tsx index 0bd00a5..b12e40f 100644 --- a/direct-file/df-client/df-client-app/src/components/factTypes/PhoneNumber/PhoneNumber.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/factTypes/PhoneNumber/PhoneNumber.test.tsx @@ -11,6 +11,7 @@ import { setupStore } from '../../../redux/store.js'; import { createRef } from 'react'; import { ConcretePath } from '@irs/js-factgraph-scala'; import { Path } from '../../../flow/Path.js'; +import { vi } from 'vitest'; // This mock allows for testing of any component that is rendered using the // useTranslation hook from react-i18next. diff --git a/direct-file/df-client/df-client-app/src/components/factTypes/Tin/Tin.test.tsx b/direct-file/df-client/df-client-app/src/components/factTypes/Tin/Tin.test.tsx index d95935e..377eeba 100644 --- a/direct-file/df-client/df-client-app/src/components/factTypes/Tin/Tin.test.tsx +++ b/direct-file/df-client/df-client-app/src/components/factTypes/Tin/Tin.test.tsx @@ -5,6 +5,7 @@ import { createRef } from 'react'; import { Path } from '../../../flow/Path.js'; import { customRender } from '../../../utils/test-utils.js'; import Tin from './Tin.js'; +import { vi } from 'vitest'; // This mock allows for testing of any component that is rendered using the // useTranslation hook from react-i18next. diff --git a/direct-file/df-client/df-client-app/src/components/screenUtils.ts b/direct-file/df-client/df-client-app/src/components/screenUtils.ts index 7ccd992..419fd5b 100644 --- a/direct-file/df-client/df-client-app/src/components/screenUtils.ts +++ b/direct-file/df-client/df-client-app/src/components/screenUtils.ts @@ -53,7 +53,7 @@ export function conditionsAsKeySuffix({ props: { condition, conditions } }: Scre const normalizedConditions = condition === undefined ? conditions ?? [] : [condition]; return normalizedConditions - .map((condition) => + .map((condition: any) => typeof condition === `string` ? condition : `${condition.operator ?? `isTrue`}:${condition.condition}` ) .join(`-`); diff --git a/direct-file/df-client/df-client-app/src/context/SystemAlertContext/customSystemAlertConfigs.tsx b/direct-file/df-client/df-client-app/src/context/SystemAlertContext/customSystemAlertConfigs.tsx index 1035145..57f396a 100644 --- a/direct-file/df-client/df-client-app/src/context/SystemAlertContext/customSystemAlertConfigs.tsx +++ b/direct-file/df-client/df-client-app/src/context/SystemAlertContext/customSystemAlertConfigs.tsx @@ -52,7 +52,7 @@ const getTinMismatchCustomConfig: CustomSystemAlertConfigBuilder = (options = {} : { primaryFilerSsnOrItinLink: , }, - }; + } as any; }; /** diff --git a/direct-file/df-client/df-client-app/src/fact-dictionary/generate-src/readRawFacts.ts b/direct-file/df-client/df-client-app/src/fact-dictionary/generate-src/readRawFacts.ts index b0ba612..6fc28d1 100644 --- a/direct-file/df-client/df-client-app/src/fact-dictionary/generate-src/readRawFacts.ts +++ b/direct-file/df-client/df-client-app/src/fact-dictionary/generate-src/readRawFacts.ts @@ -1,9 +1,10 @@ import fs from 'fs'; import { XMLParser, XMLValidator, X2jOptions } from 'fast-xml-parser'; import { RawFact } from '../FactTypes.js'; +import path from 'path'; export default function readRawFacts(): RawFact[] { - const FACT_DICTIONARY_FOLDER = `./src/fact-dictionary/generate-src/xml-src/`; + const FACT_DICTIONARY_FOLDER = `../../backend/src/main/resources/tax/`; const XML_PARSER_OPTIONS: X2jOptions = { ignoreAttributes: false, @@ -22,7 +23,10 @@ export default function readRawFacts(): RawFact[] { // eslint-disable-next-line no-console console.log(`Reading file ${dictionaryFile}`); // nosemgrep: eslint.detect-non-literal-fs-filename - const rawXmlString = fs.readFileSync(FACT_DICTIONARY_FOLDER + dictionaryFile, `utf-8`); + const rawXmlString = fs.readFileSync( + path.join(FACT_DICTIONARY_FOLDER, dictionaryFile), + `utf-8` + ); const xmlValidationResult = XMLValidator.validate(rawXmlString, { allowBooleanAttributes: true, diff --git a/direct-file/df-client/df-client-app/src/fact-dictionary/generate-src/xml-src b/direct-file/df-client/df-client-app/src/fact-dictionary/generate-src/xml-src deleted file mode 120000 index 3eca942..0000000 --- a/direct-file/df-client/df-client-app/src/fact-dictionary/generate-src/xml-src +++ /dev/null @@ -1 +0,0 @@ -../../../../../backend/src/main/resources/tax \ No newline at end of file diff --git a/direct-file/df-client/df-client-app/src/fact-dictionary/generate-src/xmlFactPaths b/direct-file/df-client/df-client-app/src/fact-dictionary/generate-src/xmlFactPaths deleted file mode 120000 index d3dc5af..0000000 --- a/direct-file/df-client/df-client-app/src/fact-dictionary/generate-src/xmlFactPaths +++ /dev/null @@ -1 +0,0 @@ -../../../../../backend/src/main/resources/factgraphservice/xmlFactPaths \ No newline at end of file diff --git a/direct-file/df-client/df-client-app/src/flow/Condition.test.ts b/direct-file/df-client/df-client-app/src/flow/Condition.test.ts index 5b1455a..615e881 100644 --- a/direct-file/df-client/df-client-app/src/flow/Condition.test.ts +++ b/direct-file/df-client/df-client-app/src/flow/Condition.test.ts @@ -9,6 +9,7 @@ import { initialState as initialTelemetryState } from '../redux/slices/telemetry import { initialState as initialESigState } from '../redux/slices/electronic-signature/electronicSignatureSlice.js'; import { initialSystemAlertState } from '../redux/slices/system-alert/systemAlertSlice.js'; +import { vi } from 'vitest'; vi.mock(`../redux/store.js`); diff --git a/direct-file/df-client/df-client-app/src/hooks/useApiHook.test.tsx b/direct-file/df-client/df-client-app/src/hooks/useApiHook.test.tsx index 13aa985..a93b5bc 100644 --- a/direct-file/df-client/df-client-app/src/hooks/useApiHook.test.tsx +++ b/direct-file/df-client/df-client-app/src/hooks/useApiHook.test.tsx @@ -15,6 +15,7 @@ import { taxReturnFetch } from '../redux/slices/tax-return/taxReturnFetch.js'; import { Provider } from 'react-redux'; import { store } from '../redux/store.js'; import { fetchTaxReturns } from '../redux/slices/tax-return/taxReturnSlice.js'; +import { vi } from 'vitest'; vi.mock(`../redux/slices/tax-return/taxReturnFetch.js`, () => ({ taxReturnFetch: vi.fn(), // Mock the function diff --git a/direct-file/df-client/df-client-app/src/hooks/useEnumOptions.test.ts b/direct-file/df-client/df-client-app/src/hooks/useEnumOptions.test.ts index ad7cb6a..5c74b5e 100644 --- a/direct-file/df-client/df-client-app/src/hooks/useEnumOptions.test.ts +++ b/direct-file/df-client/df-client-app/src/hooks/useEnumOptions.test.ts @@ -1,5 +1,6 @@ import { Path } from '../fact-dictionary/Path.js'; import { useEnumOptions } from './useEnumOptions.js'; +import { vi } from 'vitest'; const mockFactGraph = vi.hoisted(() => { const getOptionsPathForEnum = vi.fn(); diff --git a/direct-file/df-client/df-client-app/src/hooks/useFactControl.test.ts b/direct-file/df-client/df-client-app/src/hooks/useFactControl.test.ts index 9d8b1a6..52d649b 100644 --- a/direct-file/df-client/df-client-app/src/hooks/useFactControl.test.ts +++ b/direct-file/df-client/df-client-app/src/hooks/useFactControl.test.ts @@ -3,6 +3,7 @@ import { useFactControl, UseFactControlParameters } from './useFactControl.js'; import { EitherL, EitherR } from '@irs/js-factgraph-scala/src/typings/utils/JSEither.js'; import { Dispatch, SetStateAction } from 'react'; import { renderHook } from '@testing-library/react'; +import { vi } from 'vitest'; type TestError = string; type TestRawValue = { isValid: true } | { isValid: false; error: TestError }; diff --git a/direct-file/df-client/df-client-app/src/hooks/useGetTranslationValues.test.tsx b/direct-file/df-client/df-client-app/src/hooks/useGetTranslationValues.test.tsx index 1d24881..095cc30 100644 --- a/direct-file/df-client/df-client-app/src/hooks/useGetTranslationValues.test.tsx +++ b/direct-file/df-client/df-client-app/src/hooks/useGetTranslationValues.test.tsx @@ -1,6 +1,7 @@ import { useGetTranslationValues } from './useGetTranslationValues.js'; import { renderHook } from '@testing-library/react'; import { getTranslationValuesRecursive } from '../utils/i18nUtils.js'; +import { vi } from 'vitest'; const { mockT, mockI18n } = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/hooks/useNetworkConnectionStatus.test.tsx b/direct-file/df-client/df-client-app/src/hooks/useNetworkConnectionStatus.test.tsx index 28e5102..bfb460d 100644 --- a/direct-file/df-client/df-client-app/src/hooks/useNetworkConnectionStatus.test.tsx +++ b/direct-file/df-client/df-client-app/src/hooks/useNetworkConnectionStatus.test.tsx @@ -2,6 +2,7 @@ import { renderHook, act } from '@testing-library/react'; import useNetworkConnectionStatus from './useNetworkConnectionStatus.js'; import App from '../App.js'; import { renderWithTranslationProvider } from '../test/test-utils.js'; +import { vi } from 'vitest'; const intervalTime = 50; const initialStatus = { online: true, prevOnlineStatus: true }; diff --git a/direct-file/df-client/df-client-app/src/hooks/usePollForSubmissionStatus.test.tsx b/direct-file/df-client/df-client-app/src/hooks/usePollForSubmissionStatus.test.tsx index fe0b1da..cb4373f 100644 --- a/direct-file/df-client/df-client-app/src/hooks/usePollForSubmissionStatus.test.tsx +++ b/direct-file/df-client/df-client-app/src/hooks/usePollForSubmissionStatus.test.tsx @@ -10,6 +10,7 @@ import { getCurrentTaxYearReturn, getLatestSubmission } from '../utils/taxReturn import { TaxReturnsContext } from '../context/TaxReturnsContext.js'; import { store } from '../redux/store.js'; import { Provider } from 'react-redux'; +import { vi } from 'vitest'; const mockFetchTaxReturnsApiRequest = vi.fn(); const mockFetchSubmissionStatusApiRequest = vi.fn(); diff --git a/direct-file/df-client/df-client-app/src/hooks/useSubmit.test.tsx b/direct-file/df-client/df-client-app/src/hooks/useSubmit.test.tsx index 72bcbf8..6113d74 100644 --- a/direct-file/df-client/df-client-app/src/hooks/useSubmit.test.tsx +++ b/direct-file/df-client/df-client-app/src/hooks/useSubmit.test.tsx @@ -15,6 +15,7 @@ import { SystemAlertContext, SystemAlertKey, } from '../context/SystemAlertContext/SystemAlertContext.js'; +import { vi } from 'vitest'; const mocks = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/hooks/useTranslationContextFromFacts.test.ts b/direct-file/df-client/df-client-app/src/hooks/useTranslationContextFromFacts.test.ts index 54dc6cc..9a31c45 100644 --- a/direct-file/df-client/df-client-app/src/hooks/useTranslationContextFromFacts.test.ts +++ b/direct-file/df-client/df-client-app/src/hooks/useTranslationContextFromFacts.test.ts @@ -1,6 +1,7 @@ import { Path } from '../fact-dictionary/Path.js'; import useTranslationContextFromFacts from './useTranslationContextFromFacts.js'; import { Day, FactGraph } from '@irs/js-factgraph-scala'; +import { vi } from 'vitest'; const mocks = vi.hoisted(() => { // translation diff --git a/direct-file/df-client/df-client-app/src/hooks/useUrlTranslator.test.tsx b/direct-file/df-client/df-client-app/src/hooks/useUrlTranslator.test.tsx index 3c20660..fd6b656 100644 --- a/direct-file/df-client/df-client-app/src/hooks/useUrlTranslator.test.tsx +++ b/direct-file/df-client/df-client-app/src/hooks/useUrlTranslator.test.tsx @@ -2,6 +2,7 @@ import useUrlTranslator from './useUrlTranslator.js'; import { renderHook } from '@testing-library/react'; import { LANGUAGE_CODE_PLACEHOLDER } from '../utils/urlUtils.js'; import { StateProfile } from '../types/StateProfile.js'; +import { vi } from 'vitest'; const { mockUseTranslation } = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/misc/apiHelpers.test.ts b/direct-file/df-client/df-client-app/src/misc/apiHelpers.test.ts index 7b8aae7..bc9a313 100644 --- a/direct-file/df-client/df-client-app/src/misc/apiHelpers.test.ts +++ b/direct-file/df-client/df-client-app/src/misc/apiHelpers.test.ts @@ -1,5 +1,6 @@ import { formatAndAppendHeaders, SM_UNIVERSALID, XFF_HEADER, TID_HEADER } from './apiHelpers.js'; import { v4 as uuidv4 } from 'uuid'; +import { vi } from 'vitest'; const { VITE_SADI_AUTH_ID, diff --git a/direct-file/df-client/df-client-app/src/pages/TaxReturnDetails/RejectedReturnDetails/RejectedReturnDetails.test.tsx b/direct-file/df-client/df-client-app/src/pages/TaxReturnDetails/RejectedReturnDetails/RejectedReturnDetails.test.tsx index e65edc4..1ed4266 100644 --- a/direct-file/df-client/df-client-app/src/pages/TaxReturnDetails/RejectedReturnDetails/RejectedReturnDetails.test.tsx +++ b/direct-file/df-client/df-client-app/src/pages/TaxReturnDetails/RejectedReturnDetails/RejectedReturnDetails.test.tsx @@ -5,6 +5,7 @@ import { v4 as uuidv4 } from 'uuid'; import { BrowserRouter } from 'react-router-dom'; import { TaxReturn } from '../../../types/core.js'; import enLocale from '../../../locales/en.yaml'; +import { vi } from 'vitest'; const { mockT, mockI18n } = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/redux/slices/data-import/DevDataImportConfig.ts b/direct-file/df-client/df-client-app/src/redux/slices/data-import/DevDataImportConfig.ts index 1815193..2e20c4b 100644 --- a/direct-file/df-client/df-client-app/src/redux/slices/data-import/DevDataImportConfig.ts +++ b/direct-file/df-client/df-client-app/src/redux/slices/data-import/DevDataImportConfig.ts @@ -1,25 +1,25 @@ -import homer from './mocks/homer.json'; -import marge from './mocks/marge.json'; -import lisa from './mocks/lisa.json'; -import lisaKnockout from './mocks/lisa_knockout.json'; -import bart from './mocks/bart.json'; -import sean from './mocks/sean.json'; -import abe from './mocks/abe.json'; -import grandma from './mocks/grandma.json'; -import milhouse from './mocks/milhouse.json'; -import sideshowbob from './mocks/sideshowbob.json'; -import krusty from './mocks/krusty.json'; -import margeWithOnlySadiSuccess from './mocks/marge_with_only_sadi_success.json'; -import ned from './mocks/ned.json'; -import december27 from './mocks/december27.json'; -import kent from './mocks/kent.json'; -import jon from './mocks/jon.json'; -import margeWithSpaces from './mocks/marge__simpson.json'; -import w2ParseError from './mocks/w2_parse_error.json'; -import carly from './mocks/carly.json'; -import w2_with_decimal_values from './mocks/w2_with_decimal_values.json'; -import maude from './mocks/maude.json'; -import rod from './mocks/rod.json'; +import homer from '../../../../../../backend/src/main/resources/dataimportservice/mocks/homer.json'; +import marge from '../../../../../../backend/src/main/resources/dataimportservice/mocks/marge.json'; +import lisa from '../../../../../../backend/src/main/resources/dataimportservice/mocks/lisa.json'; +import lisaKnockout from '../../../../../../backend/src/main/resources/dataimportservice/mocks/lisa_knockout.json'; +import bart from '../../../../../../backend/src/main/resources/dataimportservice/mocks/bart.json'; +import sean from '../../../../../../backend/src/main/resources/dataimportservice/mocks/sean.json'; +import abe from '../../../../../../backend/src/main/resources/dataimportservice/mocks/abe.json'; +import grandma from '../../../../../../backend/src/main/resources/dataimportservice/mocks/grandma.json'; +import milhouse from '../../../../../../backend/src/main/resources/dataimportservice/mocks/milhouse.json'; +import sideshowbob from '../../../../../../backend/src/main/resources/dataimportservice/mocks/sideshowbob.json'; +import krusty from '../../../../../../backend/src/main/resources/dataimportservice/mocks/krusty.json'; +import margeWithOnlySadiSuccess from '../../../../../../backend/src/main/resources/dataimportservice/mocks/marge_with_only_sadi_success.json'; +import ned from '../../../../../../backend/src/main/resources/dataimportservice/mocks/ned.json'; +import december27 from '../../../../../../backend/src/main/resources/dataimportservice/mocks/december27.json'; +import kent from '../../../../../../backend/src/main/resources/dataimportservice/mocks/kent.json'; +import jon from '../../../../../../backend/src/main/resources/dataimportservice/mocks/jon.json'; +import margeWithSpaces from '../../../../../../backend/src/main/resources/dataimportservice/mocks/marge__simpson.json'; +import w2ParseError from '../../../../../../backend/src/main/resources/dataimportservice/mocks/w2_parse_error.json'; +import carly from '../../../../../../backend/src/main/resources/dataimportservice/mocks/carly.json'; +import w2_with_decimal_values from '../../../../../../backend/src/main/resources/dataimportservice/mocks/w2_with_decimal_values.json'; +import maude from '../../../../../../backend/src/main/resources/dataimportservice/mocks/maude.json'; +import rod from '../../../../../../backend/src/main/resources/dataimportservice/mocks/rod.json'; import { DataImportProfile } from './dataImportProfileTypes.js'; import { DataImportRootResponseSchema } from './schema/DataImportServiceResponse.js'; diff --git a/direct-file/df-client/df-client-app/src/redux/slices/data-import/tests/dataImportAllowMixOfValidW2s.test.ts b/direct-file/df-client/df-client-app/src/redux/slices/data-import/tests/dataImportAllowMixOfValidW2s.test.ts index 82c5a19..d306609 100644 --- a/direct-file/df-client/df-client-app/src/redux/slices/data-import/tests/dataImportAllowMixOfValidW2s.test.ts +++ b/direct-file/df-client/df-client-app/src/redux/slices/data-import/tests/dataImportAllowMixOfValidW2s.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from 'vitest'; import { processPopulateResult } from '../processPopulateResult.js'; import { DataImportRootResponseSchema } from '../schema/DataImportServiceResponse.js'; -import marge from '../mocks/marge.json'; +import marge from '../../../../../../../backend/src/main/resources/dataimportservice/mocks/marge.json' const copy = (data: unknown) => JSON.parse(JSON.stringify(data)); diff --git a/direct-file/df-client/df-client-app/src/redux/slices/data-import/tests/dataImportIncompleteResponse.test.ts b/direct-file/df-client/df-client-app/src/redux/slices/data-import/tests/dataImportIncompleteResponse.test.ts index 2b21357..c673e3b 100644 --- a/direct-file/df-client/df-client-app/src/redux/slices/data-import/tests/dataImportIncompleteResponse.test.ts +++ b/direct-file/df-client/df-client-app/src/redux/slices/data-import/tests/dataImportIncompleteResponse.test.ts @@ -3,7 +3,7 @@ import { store } from '../../../store.js'; import { fetchProfile } from '../dataImportProfileSlice.js'; import { fetchDataImportProfile } from '../fetchDataImportProfile.js'; import { Mock, describe, expect, it, vi } from 'vitest'; -import marge from '../mocks/marge.json'; +import marge from '../../../../../../../backend/src/main/resources/dataimportservice/mocks/marge.json' vi.mock(`../fetchDataImportProfile.js`, () => ({ fetchDataImportProfile: vi.fn(), // Mock the function diff --git a/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/ErrorScreen/ErrorScreen.test.tsx b/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/ErrorScreen/ErrorScreen.test.tsx index 3d7a14a..7b9aa6f 100644 --- a/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/ErrorScreen/ErrorScreen.test.tsx +++ b/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/ErrorScreen/ErrorScreen.test.tsx @@ -5,6 +5,7 @@ import { SystemAlertContextProvider } from '../../../context/SystemAlertContext/ import { store } from '../../../redux/store.js'; import { Provider } from 'react-redux'; import { wrapComponent } from '../../../test/helpers.js'; +import { vi } from 'vitest'; const handleGoBack = vi.fn(); const errorMessage = `Details about an error!`; diff --git a/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/ReturnRejectedScreen/ReturnRejectedScreen.test.tsx b/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/ReturnRejectedScreen/ReturnRejectedScreen.test.tsx index 9a611b2..f84e9e9 100644 --- a/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/ReturnRejectedScreen/ReturnRejectedScreen.test.tsx +++ b/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/ReturnRejectedScreen/ReturnRejectedScreen.test.tsx @@ -3,6 +3,7 @@ import { render, screen, within } from '@testing-library/react'; import { CURRENT_TAX_YEAR, FEDERAL_RETURN_STATUS } from '../../../constants/taxConstants.js'; import { userEvent } from '@testing-library/user-event'; import { wrapComponent } from '../../../test/helpers.js'; +import { vi } from 'vitest'; const mockHandleGoBack = vi.fn(); diff --git a/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/TransferInfoModal/TransferInfoModal.test.tsx b/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/TransferInfoModal/TransferInfoModal.test.tsx index 8415f63..a3265bf 100644 --- a/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/TransferInfoModal/TransferInfoModal.test.tsx +++ b/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/TransferInfoModal/TransferInfoModal.test.tsx @@ -6,6 +6,7 @@ import TransferInfoModal, { TransferInfoModalProps } from './TransferInfoModal.j import { v4 as uuidv4 } from 'uuid'; import { userEvent } from '@testing-library/user-event'; import { InterceptingFactGraph } from '../../../factgraph/InterceptingFactGraph.js'; +import { vi } from 'vitest'; const mockFetchPdf = vi.fn(); const { mockUseFetchPdf, mockI18n, mockUseFactGraph } = vi.hoisted(() => ({ diff --git a/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/TransferReturnScreen/TransferReturnScreen.test.tsx b/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/TransferReturnScreen/TransferReturnScreen.test.tsx index 3fb556b..f805b9c 100644 --- a/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/TransferReturnScreen/TransferReturnScreen.test.tsx +++ b/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/TransferReturnScreen/TransferReturnScreen.test.tsx @@ -8,6 +8,7 @@ import { InterceptingFactGraph } from '../../../factgraph/InterceptingFactGraph. import { SystemAlertConfigs, SystemAlertContext } from '../../../context/SystemAlertContext/SystemAlertContext.js'; import { initI18n } from '../../../i18n.js'; import { StateApiErrorCode } from '../../../constants/stateApiConstants.js'; +import { vi } from 'vitest'; const { mockUseFactGraph } = vi.hoisted(() => ({ mockUseFactGraph: vi.fn(() => ({ diff --git a/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/WaitingForAcceptanceScreen/WaitingForAcceptanceScreen.test.tsx b/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/WaitingForAcceptanceScreen/WaitingForAcceptanceScreen.test.tsx index f523841..84cc504 100644 --- a/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/WaitingForAcceptanceScreen/WaitingForAcceptanceScreen.test.tsx +++ b/direct-file/df-client/df-client-app/src/screens/AuthorizeStateScreen/WaitingForAcceptanceScreen/WaitingForAcceptanceScreen.test.tsx @@ -14,6 +14,7 @@ import { TaxReturnSubmissionStatus } from '../../../types/core.js'; import { Provider } from 'react-redux'; import { store } from '../../../redux/store.js'; import { getEmptySystemAlertsMap, SystemAlertContext } from '../../../context/SystemAlertContext/SystemAlertContext.js'; +import { vi } from 'vitest'; const NOW = new Date(); const BEFORE_LOCKOUT = new Date(new Date().setSeconds(NOW.getSeconds() - (STATUS_FETCH_LOCKOUT_SECONDS + 1))); diff --git a/direct-file/df-client/df-client-app/src/screens/DataView.test.tsx b/direct-file/df-client/df-client-app/src/screens/DataView.test.tsx index 8dfec3c..103af13 100644 --- a/direct-file/df-client/df-client-app/src/screens/DataView.test.tsx +++ b/direct-file/df-client/df-client-app/src/screens/DataView.test.tsx @@ -33,6 +33,7 @@ import { ReactNode } from 'react'; import { getEmptySystemAlertsMap, SystemAlertContext } from '../context/SystemAlertContext/SystemAlertContext.js'; import * as pageConstants from '../constants/pageConstants.js'; import CollectionItemDataView from './data-view/CollectionItemDataView.js'; +import { vi } from 'vitest'; const mocks = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/screens/ScreenHeader.tsx b/direct-file/df-client/df-client-app/src/screens/ScreenHeader.tsx index 25a4b8b..ba76ace 100644 --- a/direct-file/df-client/df-client-app/src/screens/ScreenHeader.tsx +++ b/direct-file/df-client/df-client-app/src/screens/ScreenHeader.tsx @@ -16,7 +16,7 @@ export const BackButton = () => { type='button' className='screen__back-button' unstyled - onClick={(evt) => { + onChange={(evt: any) => { evt.preventDefault(); // @ts-expect-error react navigation type is not defined correctly navigate(-1, { preventScrollReset: true }); diff --git a/direct-file/df-client/df-client-app/src/screens/data-view/CollectionHubDataView.test.tsx b/direct-file/df-client/df-client-app/src/screens/data-view/CollectionHubDataView.test.tsx index 22ba7c4..a16b3f7 100644 --- a/direct-file/df-client/df-client-app/src/screens/data-view/CollectionHubDataView.test.tsx +++ b/direct-file/df-client/df-client-app/src/screens/data-view/CollectionHubDataView.test.tsx @@ -23,6 +23,7 @@ import { baseFilerData, primaryFilerId, makeInterestReportData } from '../../tes import CollectionHubDataView from './CollectionHubDataView.js'; import { initI18n } from '../../i18n.js'; import { setupStore } from '../../redux/store.js'; +import { vi } from 'vitest'; const intReportId1 = `9d164507-0c5a-469d-8d36-49d2f7af0b7a`; const intReportId2 = `24aa5dee-e381-4927-a0d9-07658287086c`; diff --git a/direct-file/df-client/df-client-app/src/screens/data-view/CollectionHubDataViewInner.test.tsx b/direct-file/df-client/df-client-app/src/screens/data-view/CollectionHubDataViewInner.test.tsx index 937a87c..b322a34 100644 --- a/direct-file/df-client/df-client-app/src/screens/data-view/CollectionHubDataViewInner.test.tsx +++ b/direct-file/df-client/df-client-app/src/screens/data-view/CollectionHubDataViewInner.test.tsx @@ -20,6 +20,7 @@ import en from '../../locales/en.yaml'; import { baseFilerData, primaryFilerId, makeSocialSecurityReport } from '../../test/testData.js'; import CollectionHubDataView from './CollectionHubDataView.js'; import { initI18n } from '../../i18n.js'; +import { vi } from 'vitest'; const ssReportId1 = `423bef54-e524-463c-829f-0948df47a4bd`; const ssReportId2 = `08eea4dd-c0ee-4128-9afc-2b74dca27101`; diff --git a/direct-file/df-client/df-client-app/src/screens/data-view/CollectionItemDataView.test.tsx b/direct-file/df-client/df-client-app/src/screens/data-view/CollectionItemDataView.test.tsx index e60ee0e..113ba6e 100644 --- a/direct-file/df-client/df-client-app/src/screens/data-view/CollectionItemDataView.test.tsx +++ b/direct-file/df-client/df-client-app/src/screens/data-view/CollectionItemDataView.test.tsx @@ -24,6 +24,7 @@ import CollectionItemDataView from './CollectionItemDataView.js'; import { SystemAlertContext, getEmptySystemAlertsMap } from '../../context/SystemAlertContext/SystemAlertContext.js'; import { setupStore } from '../../redux/store.js'; import { ReactNode } from 'react'; +import { vi } from 'vitest'; const mocks = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/screens/data-view/CollectionLoopRenderer.test.tsx b/direct-file/df-client/df-client-app/src/screens/data-view/CollectionLoopRenderer.test.tsx index 9b4658b..3bded43 100644 --- a/direct-file/df-client/df-client-app/src/screens/data-view/CollectionLoopRenderer.test.tsx +++ b/direct-file/df-client/df-client-app/src/screens/data-view/CollectionLoopRenderer.test.tsx @@ -25,6 +25,7 @@ import { makeW2Data, primaryFilerId, } from '../../test/testData.js'; +import { vi } from 'vitest'; const mocks = vi.hoisted(() => { return { diff --git a/direct-file/df-client/df-client-app/src/screens/data-view/SubSubCategory.test.tsx b/direct-file/df-client/df-client-app/src/screens/data-view/SubSubCategory.test.tsx index d73b9bb..ede0601 100644 --- a/direct-file/df-client/df-client-app/src/screens/data-view/SubSubCategory.test.tsx +++ b/direct-file/df-client/df-client-app/src/screens/data-view/SubSubCategory.test.tsx @@ -21,6 +21,7 @@ import { createTinWrapper, } from '../../test/persistenceWrappers.js'; import { setupFactGraph } from '../../test/setupFactGraph.js'; +import { vi } from 'vitest'; // Test data for rendering subsubcategories const w2Id = `0b1e355e-3d19-415d-8470-fbafd9f58361`; diff --git a/direct-file/df-client/df-client-app/src/screens/data-view/SubSubCategory.tsx b/direct-file/df-client/df-client-app/src/screens/data-view/SubSubCategory.tsx index 0146c85..3e6854a 100644 --- a/direct-file/df-client/df-client-app/src/screens/data-view/SubSubCategory.tsx +++ b/direct-file/df-client/df-client-app/src/screens/data-view/SubSubCategory.tsx @@ -533,10 +533,13 @@ export function SubSubCategory({ const allAssertions = availableScreens .flatMap((sc) => - sc.content.filter( - (c) => - conditionsPass(c.props, factGraph, collectionId) && - (c.componentName === `FactAssertion` || c.componentName === `FactResultAssertion`) + sc.content.filter((c) => + { + return ( + conditionsPass(c.props, factGraph, collectionId) && + (c.componentName === `FactAssertion` || c.componentName === `FactResultAssertion`) + ) + } ) ) .filter((result) => result); diff --git a/direct-file/df-client/df-client-app/src/test/FlowRender.test.tsx b/direct-file/df-client/df-client-app/src/test/FlowRender.test.tsx index 2e6b95d..e573594 100644 --- a/direct-file/df-client/df-client-app/src/test/FlowRender.test.tsx +++ b/direct-file/df-client/df-client-app/src/test/FlowRender.test.tsx @@ -13,6 +13,7 @@ import { store } from '../redux/store.js'; import { taxReturnFetch } from '../redux/slices/tax-return/taxReturnFetch.js'; import { Mock } from 'vitest'; import { taxReturnCreate } from '../redux/slices/tax-return/taxReturnCreate.js'; +import { vi } from 'vitest'; vi.mock(`../redux/slices/tax-return/taxReturnFetch.js`, () => ({ taxReturnFetch: vi.fn(), // Mock the function diff --git a/direct-file/df-client/df-client-app/src/test/factDictionaryTests/paymentMethod.test.ts b/direct-file/df-client/df-client-app/src/test/factDictionaryTests/paymentMethod.test.ts index b3cec89..eefc424 100644 --- a/direct-file/df-client/df-client-app/src/test/factDictionaryTests/paymentMethod.test.ts +++ b/direct-file/df-client/df-client-app/src/test/factDictionaryTests/paymentMethod.test.ts @@ -4,6 +4,7 @@ import { createBooleanWrapper, createDayWrapper } from '../persistenceWrappers.j import { baseFilerData, filerWithPaymentDueData } from '../testData.js'; import { setupFactGraph } from '../setupFactGraph.js'; import { CURRENT_TAX_YEAR } from '../../constants/taxConstants.js'; +import { vi } from 'vitest'; describe(`Payment method`, () => { const basePaymentMethodData = { diff --git a/direct-file/df-client/df-client-app/src/test/functionalFlowTests/aboutYou.test.ts b/direct-file/df-client/df-client-app/src/test/functionalFlowTests/aboutYou.test.ts index 5ef1a49..9c97b38 100644 --- a/direct-file/df-client/df-client-app/src/test/functionalFlowTests/aboutYou.test.ts +++ b/direct-file/df-client/df-client-app/src/test/functionalFlowTests/aboutYou.test.ts @@ -22,6 +22,7 @@ import { CURRENT_TAX_YEAR } from '../../constants/taxConstants.js'; import { v4 as uuidv4 } from 'uuid'; import { fetchTaxReturns } from '../../redux/slices/tax-return/taxReturnSlice.js'; import { fetchProfile } from '../../redux/slices/data-import/dataImportProfileSlice.js'; +import { vi } from 'vitest'; vi.mock(`../../redux/slices/tax-return/taxReturnFetch.js`, () => ({ taxReturnFetch: vi.fn(), // Mock the function diff --git a/direct-file/df-client/df-client-app/src/test/functionalFlowTests/cdcc.test.ts b/direct-file/df-client/df-client-app/src/test/functionalFlowTests/cdcc.test.ts index 2cdb71b..50a16c6 100644 --- a/direct-file/df-client/df-client-app/src/test/functionalFlowTests/cdcc.test.ts +++ b/direct-file/df-client/df-client-app/src/test/functionalFlowTests/cdcc.test.ts @@ -12,6 +12,7 @@ import flowNodes from '../../flow/flow.js'; import makeGivenFacts from './functionalFlowUtils.js'; import { CollectionItemReferenceFactory } from '@irs/js-factgraph-scala'; import { setupFactGraph } from '../setupFactGraph.js'; +import { vi } from 'vitest'; const flow = createFlowConfig(flowNodes); const givenFacts = makeGivenFacts(flow); diff --git a/direct-file/df-client/df-client-app/src/test/functionalFlowTests/credits.test.ts b/direct-file/df-client/df-client-app/src/test/functionalFlowTests/credits.test.ts index 5769801..21548c8 100644 --- a/direct-file/df-client/df-client-app/src/test/functionalFlowTests/credits.test.ts +++ b/direct-file/df-client/df-client-app/src/test/functionalFlowTests/credits.test.ts @@ -13,6 +13,7 @@ import flowNodes from '../../flow/flow.js'; import { TAX_YEAR_2023 } from '../../constants/taxConstants.js'; import makeGivenFacts from './functionalFlowUtils.js'; import { setupFactGraph } from '../setupFactGraph.js'; +import { vi } from 'vitest'; const flow = createFlowConfig(flowNodes); const givenFacts = makeGivenFacts(flow); diff --git a/direct-file/df-client/df-client-app/src/test/functionalFlowTests/deductions.test.ts b/direct-file/df-client/df-client-app/src/test/functionalFlowTests/deductions.test.ts index 1353f0e..321873f 100644 --- a/direct-file/df-client/df-client-app/src/test/functionalFlowTests/deductions.test.ts +++ b/direct-file/df-client/df-client-app/src/test/functionalFlowTests/deductions.test.ts @@ -13,6 +13,7 @@ import { } from '../testData.js'; import makeGivenFacts from './functionalFlowUtils.js'; import { setupFactGraph } from '../setupFactGraph.js'; +import { vi } from 'vitest'; const flow = createFlowConfig(flowNodes); const givenFacts = makeGivenFacts(flow); diff --git a/direct-file/df-client/df-client-app/src/test/scenarioTests/flowSnapshots.test.ts b/direct-file/df-client/df-client-app/src/test/scenarioTests/flowSnapshots.test.ts index 14c7d3a..52ba387 100644 --- a/direct-file/df-client/df-client-app/src/test/scenarioTests/flowSnapshots.test.ts +++ b/direct-file/df-client/df-client-app/src/test/scenarioTests/flowSnapshots.test.ts @@ -11,7 +11,8 @@ import { fetchDataImportProfile } from '../../redux/slices/data-import/fetchData import { fetchProfile } from '../../redux/slices/data-import/dataImportProfileSlice.js'; import { store } from '../../redux/store.js'; import { TaxReturn } from '../../types/core.js'; -import marge from '../../redux/slices/data-import/mocks/marge.json'; +import { vi } from 'vitest'; +import marge from '../../../../../backend/src/main/resources/dataimportservice/mocks/marge.json' vi.mock(`../../redux/slices/data-import/fetchDataImportProfile.js`, () => ({ fetchDataImportProfile: vi.fn(), // Mock the function diff --git a/direct-file/df-client/df-client-app/src/test/scenarioTests/jsonScenarios b/direct-file/df-client/df-client-app/src/test/scenarioTests/jsonScenarios deleted file mode 120000 index b80cd2b..0000000 --- a/direct-file/df-client/df-client-app/src/test/scenarioTests/jsonScenarios +++ /dev/null @@ -1 +0,0 @@ -../../../../../backend/src/test/resources/scenarios \ No newline at end of file diff --git a/direct-file/df-client/df-client-app/src/test/scenarioTests/scenarios.test.ts b/direct-file/df-client/df-client-app/src/test/scenarioTests/scenarios.test.ts index 29621d1..371f350 100644 --- a/direct-file/df-client/df-client-app/src/test/scenarioTests/scenarios.test.ts +++ b/direct-file/df-client/df-client-app/src/test/scenarioTests/scenarios.test.ts @@ -1,5 +1,6 @@ // eslint-disable-next-line max-len -import scenarioO1Json from './jsonScenarios/ats-1.json'; +// import scenarioO1Json from './jsonScenarios/ats-1.json'; +import scenarioO1Json from '../../../../../backend/src/test/resources/scenarios/ats-1.json' import { ConcretePath, FactGraph, ScalaList } from '@irs/js-factgraph-scala'; import { singleNoDependentsWithTwoW2s01 as snapshotScenario01 } from './goldenScenarios.js'; import { FactValue } from '../../types/core.js'; diff --git a/direct-file/df-client/df-client-app/src/utils/condition.ts b/direct-file/df-client/df-client-app/src/utils/condition.ts index 72de752..ccc424c 100644 --- a/direct-file/df-client/df-client-app/src/utils/condition.ts +++ b/direct-file/df-client/df-client-app/src/utils/condition.ts @@ -1,13 +1,14 @@ import { FactGraph } from '@irs/js-factgraph-scala'; import { Condition, RawCondition } from '../flow/Condition.js'; -type HasConditions = { condition?: RawCondition; conditions?: RawCondition[] }; +import { ConfigProps, FlowComponentName, FlowNodeType } from '../flow/ContentDeclarations.js'; +import { ComponentProps } from 'react'; -export const conditionsPass = (props: HasConditions, fg: FactGraph, collectionId: string | null) => { +export const conditionsPass = (props: ConfigProps>>, fg: FactGraph, collectionId: string | null) => { if (props && props.condition) { return new Condition(props.condition).evaluate(fg, collectionId); // eslint-disable-next-line eqeqeq } else if (props.conditions != undefined) { - return props.conditions.every((c) => { + return props.conditions.every((c: RawCondition) => { const result = new Condition(c).evaluate(fg, collectionId); return result; }); diff --git a/direct-file/df-client/df-client-app/src/utils/errorBoundary.test.tsx b/direct-file/df-client/df-client-app/src/utils/errorBoundary.test.tsx index 26abd73..8d54d0e 100644 --- a/direct-file/df-client/df-client-app/src/utils/errorBoundary.test.tsx +++ b/direct-file/df-client/df-client-app/src/utils/errorBoundary.test.tsx @@ -4,7 +4,8 @@ import ErrorBoundary from './errorBoundary.js'; import { Provider } from 'react-redux'; import { store } from '../redux/store.js'; import { isTelemetryEnabled } from '../constants/pageConstants.js'; -import { Mock } from 'vitest'; +import { Mock, vi } from 'vitest'; + vi.useFakeTimers(); vi.mock(`../constants/pageConstants.js`, () => ({ diff --git a/direct-file/df-client/df-client-app/vite.config.ts b/direct-file/df-client/df-client-app/vite.config.ts index bc6bf24..ab33292 100644 --- a/direct-file/df-client/df-client-app/vite.config.ts +++ b/direct-file/df-client/df-client-app/vite.config.ts @@ -1,4 +1,4 @@ -import { UserConfig, defineConfig } from 'vitest/config'; +import { defineConfig } from 'vitest/config'; import react from '@vitejs/plugin-react'; import browserslistToEsbuild from 'browserslist-to-esbuild'; import { JSON_SCHEMA } from 'js-yaml'; @@ -7,7 +7,7 @@ import viteTsconfigPaths from 'vite-tsconfig-paths'; import autoprefixer from 'autoprefixer'; import path from 'path'; -export const configOptions: UserConfig = { +export default defineConfig({ base: process.env.DF_CLIENT_PUBLIC_PATH || '/df/file', assetsInclude: ['**/*.svg'], plugins: [react(), viteTsconfigPaths(), ViteYaml({ schema: JSON_SCHEMA })], @@ -17,11 +17,11 @@ export const configOptions: UserConfig = { localsConvention: 'camelCaseOnly', }, postcss: { - plugins: [autoprefixer()], + plugins: [autoprefixer() as any], }, preprocessorOptions: { scss: { - includePaths: ['../node_modules/@uswds', '../node_modules/@uswds/uswds/packages'], + loadPaths: ['../node_modules/@uswds', '../node_modules/@uswds/uswds/packages'], silenceDeprecations: ['legacy-js-api'], }, }, @@ -38,7 +38,7 @@ export const configOptions: UserConfig = { // Mock OLA '/ola/rest/taxpayer/taxRecord': { bypass: (_req, res, _options) => { - res.write( + res!.write( JSON.stringify({ transcriptSummary: { panelShowing: true, @@ -58,7 +58,7 @@ export const configOptions: UserConfig = { }, }) ); - res.end(); + res!.end(); return 'Bypassed'; // string return value prevents this from going to the original req.target }, }, @@ -97,7 +97,4 @@ export const configOptions: UserConfig = { }, }, }, -}; - -// https://vitejs.dev/config/ -export default defineConfig(configOptions); +}); diff --git a/direct-file/df-client/df-static-site/package.json b/direct-file/df-client/df-static-site/package.json index 7c8c029..d3a1b0d 100644 --- a/direct-file/df-client/df-static-site/package.json +++ b/direct-file/df-client/df-static-site/package.json @@ -9,6 +9,7 @@ "@types/js-yaml": "^4.0.5", "@uswds/uswds": "^3.7.1", "@vitejs/plugin-react": "^4.2.0", + "@vitest/coverage-v8": "3.2.4", "assert-never": "^1.2.1", "classnames": "^2.3.2", "crypto-js": "4.2.0", @@ -21,7 +22,7 @@ "react-i18next": "^15.1.0", "react-router-dom": "^6.27.0", "uuid": "^9.0.0", - "vite": "^5.4.15", + "vite": "^7.1.0", "vite-tsconfig-paths": "^4.2.0", "web-vitals": "^2.1.0" }, @@ -57,7 +58,7 @@ "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/uuid": "^9.0.1", - "@vitest/ui": "^1.4.0", + "@vitest/ui": "^3.2.4", "autoprefixer": "^10.4.14", "browserslist-to-esbuild": "^1.2.0", "eslint-plugin-df-rules": "^1.0.0", @@ -68,8 +69,8 @@ "sass": "^1.63.5", "ts-node": "^10.9.1", "typescript": "5.6.3", - "vite-node": "^2.1.8", - "vitest": "^1.6.1", + "vite-node": "^3.2.4", + "vitest": "^3.2.4", "zod": "^3.23.8" } } diff --git a/direct-file/df-client/df-static-site/postcss.config.js b/direct-file/df-client/df-static-site/postcss.config.js index a47ef4f..48b0d18 100644 --- a/direct-file/df-client/df-static-site/postcss.config.js +++ b/direct-file/df-client/df-static-site/postcss.config.js @@ -1,5 +1,5 @@ -module.exports = { +export default { plugins: { autoprefixer: {}, }, -}; +}; \ No newline at end of file diff --git a/direct-file/df-client/df-static-site/src/App.tsx b/direct-file/df-client/df-static-site/src/App.tsx index 15a9146..6b5c6bb 100644 --- a/direct-file/df-client/df-static-site/src/App.tsx +++ b/direct-file/df-client/df-static-site/src/App.tsx @@ -18,7 +18,7 @@ import { State, } from './pages/index.js'; -import '@trussworks/react-uswds/lib/index.css'; +import '../node_modules/@trussworks/react-uswds/lib/index.css' function App() { const { t, i18n } = useTranslation(`translation`); diff --git a/direct-file/df-client/df-static-site/tsconfig.json b/direct-file/df-client/df-static-site/tsconfig.json index 24f8f3e..7adec1e 100644 --- a/direct-file/df-client/df-static-site/tsconfig.json +++ b/direct-file/df-client/df-static-site/tsconfig.json @@ -7,5 +7,13 @@ "eslint-plugin-df-rules": ["../eslint-plugin-df-rules/src"] } }, - "include": ["src", "../node_modules/vitest/globals.d.ts"] + "include": ["src", "../node_modules/vitest/globals.d.ts"], + "exclude": [ + "node_modules", + "dist", + "**/*.test.ts", + "**/*.test.tsx", + "**/*.spec.ts", + "**/*.spec.tsx" + ] } diff --git a/direct-file/df-client/df-static-site/vite.config.ts b/direct-file/df-client/df-static-site/vite.config.ts index 1b22506..5f84ba2 100644 --- a/direct-file/df-client/df-static-site/vite.config.ts +++ b/direct-file/df-client/df-static-site/vite.config.ts @@ -1,4 +1,3 @@ -import { defineConfig } from 'vitest/config'; import react from '@vitejs/plugin-react'; import browserslistToEsbuild from 'browserslist-to-esbuild'; import { JSON_SCHEMA } from 'js-yaml'; @@ -6,6 +5,7 @@ import ViteYaml from '@modyfi/vite-plugin-yaml'; import viteTsconfigPaths from 'vite-tsconfig-paths'; import autoprefixer from 'autoprefixer'; import path from 'path'; +import { defineConfig } from 'vite'; // https://vitejs.dev/config/ export default defineConfig({ @@ -18,11 +18,11 @@ export default defineConfig({ localsConvention: 'camelCaseOnly', }, postcss: { - plugins: [autoprefixer()], + plugins: [autoprefixer() as any], }, preprocessorOptions: { scss: { - includePaths: [`../node_modules/@uswds`, `../node_modules/@uswds/uswds/packages`], + loadPaths: [`../node_modules/@uswds`, `../node_modules/@uswds/uswds/packages`], }, }, }, diff --git a/direct-file/df-client/eslint-plugin-df-rules/package.json b/direct-file/df-client/eslint-plugin-df-rules/package.json index ceb8491..cb3f4df 100644 --- a/direct-file/df-client/eslint-plugin-df-rules/package.json +++ b/direct-file/df-client/eslint-plugin-df-rules/package.json @@ -11,6 +11,10 @@ }, "devDependencies": { "@typescript-eslint/utils": "^5.59.6", - "vitest": "^1.6.1" + "vitest": "^3.2.4" + }, + "dependencies": { + "vite": "7.1.0", + "vite-node": "3.2.4" } } diff --git a/direct-file/df-client/eslint-plugin-df-rules/src/index.ts b/direct-file/df-client/eslint-plugin-df-rules/src/index.ts index c891e2e..277d97a 100644 --- a/direct-file/df-client/eslint-plugin-df-rules/src/index.ts +++ b/direct-file/df-client/eslint-plugin-df-rules/src/index.ts @@ -1,6 +1,6 @@ import { noFactGraphSaveRule } from './no-factgraph-save.js'; -module.exports = { +export default { rules: { 'no-factgraph-save': noFactGraphSaveRule, }, diff --git a/direct-file/df-client/package-lock.json b/direct-file/df-client/package-lock.json index c7f58bb..7d1db46 100644 --- a/direct-file/df-client/package-lock.json +++ b/direct-file/df-client/package-lock.json @@ -13,6 +13,7 @@ "packages/*" ], "dependencies": { + "@trussworks/react-uswds": "^10.0.2", "@typescript-eslint/eslint-plugin": "^5.59.6", "@typescript-eslint/parser": "^5.59.6", "dotenv-expand": "^10.0.0", @@ -40,7 +41,7 @@ "typescript-eslint": "^8.12.1" }, "engines": { - "node": "18.20.4" + "node": "22.18.0" } }, "df-client-app": { @@ -71,7 +72,7 @@ "react-router-dom": "^6.27.0", "ts-pattern": "^5.5.0", "uuid": "^9.0.0", - "vite": "^5.4.15", + "vite": "^7.1.0", "vite-tsconfig-paths": "^4.2.0", "web-vitals": "^2.1.0" }, @@ -85,8 +86,8 @@ "@types/react-dom": "^18.3.1", "@types/stringify-object": "^4.0.5", "@types/uuid": "^9.0.1", - "@vitest/coverage-v8": "^1.4.0", - "@vitest/ui": "^1.4.0", + "@vitest/coverage-v8": "^3.2.4", + "@vitest/ui": "^3.2.4", "autoprefixer": "^10.4.14", "browserslist-to-esbuild": "^1.2.0", "eslint-plugin-df-rules": "^1.0.0", @@ -99,16 +100,24 @@ "stringify-object": "^5.0.0", "ts-node": "^10.9.1", "typescript": "5.6.3", - "vite-node": "^2.1.8", + "vite-node": "^3.2.4", "vite-plugin-singlefile": "^0.13.5", - "vitest": "^1.6.1", + "vitest": "^3.2.4", "zod": "^3.23.8" } }, + "df-client-app/node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "df-client-app/node_modules/@reduxjs/toolkit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.3.0.tgz", - "integrity": "sha512-WC7Yd6cNGfHx8zf+iu+Q1UPTfEcXhQ+ATi7CV1hlrSAaQBdlPzg7Ww/wJHNQem7qG9rxmWoFCDCPubSvFObGzA==", "license": "MIT", "dependencies": { "immer": "^10.0.3", @@ -129,28 +138,13 @@ } } }, - "df-client-app/node_modules/@testing-library/react": { - "version": "14.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^9.0.0", - "@types/react-dom": "^18.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - } - }, "df-client-app/node_modules/@trussworks/react-uswds": { - "version": "7.0.0", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@trussworks/react-uswds/-/react-uswds-8.0.0.tgz", + "integrity": "sha512-VxllH/CbqKKnHgjPGJltdssPRxo/km6uNfRAC0MvYTqHcLoeg+0/5omdG6gh94KAil1ZxEqiCadbEzPIn9jg/w==", "license": "Apache-2.0", "engines": { - "node": ">= 16.20.0" + "node": ">= 18" }, "peerDependencies": { "@uswds/uswds": "^3.7.1", @@ -158,6 +152,236 @@ "react-dom": "^16.x || ^17.x || ^18.x" } }, + "df-client-app/node_modules/@vitest/coverage-v8": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", + "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@bcoe/v8-coverage": "^1.0.2", + "ast-v8-to-istanbul": "^0.3.3", + "debug": "^4.4.1", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.1.7", + "magic-string": "^0.30.17", + "magicast": "^0.3.5", + "std-env": "^3.9.0", + "test-exclude": "^7.0.1", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "3.2.4", + "vitest": "3.2.4" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } + } + }, + "df-client-app/node_modules/@vitest/expect": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "df-client-app/node_modules/@vitest/runner": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "df-client-app/node_modules/@vitest/snapshot": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "df-client-app/node_modules/@vitest/ui": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-3.2.4.tgz", + "integrity": "sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.4", + "fflate": "^0.8.2", + "flatted": "^3.3.3", + "pathe": "^2.0.3", + "sirv": "^3.0.1", + "tinyglobby": "^0.2.14", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "3.2.4" + } + }, + "df-client-app/node_modules/@vitest/utils": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "df-client-app/node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "df-client-app/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "df-client-app/node_modules/chai": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.1.tgz", + "integrity": "sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "df-client-app/node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "df-client-app/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "df-client-app/node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "df-client-app/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "df-client-app/node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "df-client-app/node_modules/has-flag": { "version": "3.0.0", "dev": true, @@ -166,6 +390,20 @@ "node": ">=4" } }, + "df-client-app/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "df-client-app/node_modules/loupe": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.0.tgz", + "integrity": "sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==", + "dev": true, + "license": "MIT" + }, "df-client-app/node_modules/nodemon": { "version": "3.0.1", "dev": true, @@ -195,23 +433,73 @@ }, "df-client-app/node_modules/nodemon/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "df-client-app/node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "df-client-app/node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "df-client-app/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "df-client-app/node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } }, "df-client-app/node_modules/react-redux": { "version": "9.1.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", - "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", "license": "MIT", "dependencies": { "@types/use-sync-external-store": "^0.0.3", @@ -231,6 +519,34 @@ } } }, + "df-client-app/node_modules/sirv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", + "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "df-client-app/node_modules/strip-literal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "df-client-app/node_modules/supports-color": { "version": "5.5.0", "dev": true, @@ -242,115 +558,149 @@ "node": ">=4" } }, - "df-client-app/node_modules/vite": { - "version": "5.4.14", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", - "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", + "df-client-app/node_modules/test-exclude": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", + "dev": true, + "license": "ISC", "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" - }, - "bin": { - "vite": "bin/vite.js" + "@istanbuljs/schema": "^0.1.2", + "glob": "^10.4.1", + "minimatch": "^9.0.4" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": ">=18" + } + }, + "df-client-app/node_modules/test-exclude/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } + "url": "https://github.com/sponsors/isaacs" + } + }, + "df-client-app/node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" } }, "df-client-app/node_modules/vite-node": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.8.tgz", - "integrity": "sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dev": true, + "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.3.7", - "es-module-lexer": "^1.5.4", - "pathe": "^1.1.2", - "vite": "^5.0.0" + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "df-client-app/node_modules/zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "df-client-app/node_modules/vitest": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, "funding": { - "url": "https://github.com/sponsors/colinhacks" + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } } }, - "df-common": { - "name": "@irs/df-common", - "version": "0.1.0", - "extraneous": true, - "dependencies": { - "@trussworks/react-uswds": "^8.0.0", - "@uswds/uswds": "^3.7.1", - "autoprefixer": "^10.4.15", - "classnames": "^2.3.2", - "i18next": "23.16.4", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-i18next": "^15.1.0", - "react-router-dom": "^6.27.0" - }, - "devDependencies": { - "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.1", - "eslint-plugin-df-rules": "^1.0.0", - "typescript": "5.6.3" + "df-client-app/node_modules/zod": { + "version": "3.23.8", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, "df-static-site": { @@ -362,6 +712,7 @@ "@types/js-yaml": "^4.0.5", "@uswds/uswds": "^3.7.1", "@vitejs/plugin-react": "^4.2.0", + "@vitest/coverage-v8": "3.2.4", "assert-never": "^1.2.1", "classnames": "^2.3.2", "crypto-js": "4.2.0", @@ -374,7 +725,7 @@ "react-i18next": "^15.1.0", "react-router-dom": "^6.27.0", "uuid": "^9.0.0", - "vite": "^5.4.15", + "vite": "^7.1.0", "vite-tsconfig-paths": "^4.2.0", "web-vitals": "^2.1.0" }, @@ -387,7 +738,7 @@ "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/uuid": "^9.0.1", - "@vitest/ui": "^1.4.0", + "@vitest/ui": "^3.2.4", "autoprefixer": "^10.4.14", "browserslist-to-esbuild": "^1.2.0", "eslint-plugin-df-rules": "^1.0.0", @@ -398,11 +749,20 @@ "sass": "^1.63.5", "ts-node": "^10.9.1", "typescript": "5.6.3", - "vite-node": "^2.1.8", - "vitest": "^1.6.1", + "vite-node": "^3.2.4", + "vitest": "^3.2.4", "zod": "^3.23.8" } }, + "df-static-site/node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "df-static-site/node_modules/@testing-library/jest-dom": { "version": "6.0.1", "dev": true, @@ -443,28 +803,13 @@ } } }, - "df-static-site/node_modules/@testing-library/react": { - "version": "14.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^9.0.0", - "@types/react-dom": "^18.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - } - }, "df-static-site/node_modules/@trussworks/react-uswds": { - "version": "7.0.0", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@trussworks/react-uswds/-/react-uswds-8.0.0.tgz", + "integrity": "sha512-VxllH/CbqKKnHgjPGJltdssPRxo/km6uNfRAC0MvYTqHcLoeg+0/5omdG6gh94KAil1ZxEqiCadbEzPIn9jg/w==", "license": "Apache-2.0", "engines": { - "node": ">= 16.20.0" + "node": ">= 18" }, "peerDependencies": { "@uswds/uswds": "^3.7.1", @@ -472,6 +817,153 @@ "react-dom": "^16.x || ^17.x || ^18.x" } }, + "df-static-site/node_modules/@vitest/coverage-v8": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", + "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@bcoe/v8-coverage": "^1.0.2", + "ast-v8-to-istanbul": "^0.3.3", + "debug": "^4.4.1", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.1.7", + "magic-string": "^0.30.17", + "magicast": "^0.3.5", + "std-env": "^3.9.0", + "test-exclude": "^7.0.1", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "3.2.4", + "vitest": "3.2.4" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } + } + }, + "df-static-site/node_modules/@vitest/expect": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "df-static-site/node_modules/@vitest/runner": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "df-static-site/node_modules/@vitest/snapshot": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "df-static-site/node_modules/@vitest/ui": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-3.2.4.tgz", + "integrity": "sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.4", + "fflate": "^0.8.2", + "flatted": "^3.3.3", + "pathe": "^2.0.3", + "sirv": "^3.0.1", + "tinyglobby": "^0.2.14", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "3.2.4" + } + }, + "df-static-site/node_modules/@vitest/utils": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "df-static-site/node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "df-static-site/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "df-static-site/node_modules/chai": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.1.tgz", + "integrity": "sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==", + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, "df-static-site/node_modules/chalk": { "version": "3.0.0", "dev": true, @@ -484,122 +976,592 @@ "node": ">=8" } }, - "df-static-site/node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true - }, - "df-static-site/node_modules/sass": { - "version": "1.65.1", - "devOptional": true, + "df-static-site/node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "license": "MIT", - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, "engines": { - "node": ">=14.0.0" + "node": ">= 16" } }, - "df-static-site/node_modules/vite": { - "version": "5.4.14", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", - "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", + "df-static-site/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" - }, - "bin": { - "vite": "bin/vite.js" + "ms": "^2.1.3" }, "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "node": ">=6.0" }, "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { + "supports-color": { "optional": true } } }, - "df-static-site/node_modules/vite-node": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.8.tgz", - "integrity": "sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==", + "df-static-site/node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "df-static-site/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "df-static-site/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "license": "MIT" + }, + "df-static-site/node_modules/loupe": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.0.tgz", + "integrity": "sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==", + "license": "MIT" + }, + "df-static-site/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "df-static-site/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "df-static-site/node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "df-static-site/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "df-static-site/node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "df-static-site/node_modules/sirv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", + "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "df-static-site/node_modules/strip-literal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "df-static-site/node_modules/test-exclude": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^10.4.1", + "minimatch": "^9.0.4" + }, + "engines": { + "node": ">=18" + } + }, + "df-static-site/node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "df-static-site/node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.3.7", - "es-module-lexer": "^1.5.4", - "pathe": "^1.1.2", - "vite": "^5.0.0" + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, + "df-static-site/node_modules/vitest": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, "df-static-site/node_modules/zod": { "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } }, "eslint-plugin-df-rules": { "version": "1.0.0", + "dependencies": { + "vite": "7.1.0", + "vite-node": "3.2.4" + }, "devDependencies": { "@typescript-eslint/utils": "^5.59.6", - "vitest": "^1.6.1" + "vitest": "^3.2.4" + } + }, + "eslint-plugin-df-rules/node_modules/@vitest/expect": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "eslint-plugin-df-rules/node_modules/@vitest/runner": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "eslint-plugin-df-rules/node_modules/@vitest/snapshot": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "eslint-plugin-df-rules/node_modules/@vitest/utils": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "eslint-plugin-df-rules/node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "eslint-plugin-df-rules/node_modules/chai": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.1.tgz", + "integrity": "sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "eslint-plugin-df-rules/node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "eslint-plugin-df-rules/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "eslint-plugin-df-rules/node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "eslint-plugin-df-rules/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "eslint-plugin-df-rules/node_modules/loupe": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.0.tgz", + "integrity": "sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==", + "dev": true, + "license": "MIT" + }, + "eslint-plugin-df-rules/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "eslint-plugin-df-rules/node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "eslint-plugin-df-rules/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "eslint-plugin-df-rules/node_modules/strip-literal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "eslint-plugin-df-rules/node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "eslint-plugin-df-rules/node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "eslint-plugin-df-rules/node_modules/vitest": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } } }, "js-factgraph-scala": { @@ -620,11 +1582,13 @@ "license": "MIT" }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -699,26 +1663,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.7", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.7", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -733,33 +1701,54 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.23.6", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", "license": "MIT", "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -769,6 +1758,8 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "license": "ISC", "dependencies": { "yallist": "^3.0.2" @@ -776,6 +1767,8 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -783,55 +1776,41 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "license": "ISC" }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "license": "MIT", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -841,60 +1820,49 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.7", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.2.tgz", + "integrity": "sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==", "license": "MIT", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.2" }, "engines": { "node": ">=6.9.0" @@ -970,8 +1938,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.4", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.0" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -980,10 +1953,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.23.3", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -993,10 +1968,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.23.3", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1006,70 +1983,87 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.2.tgz", + "integrity": "sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==", "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.22.15", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.7", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", + "node_modules/@babel/traverse/node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.24.0", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "dev": true, - "license": "MIT" - }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "dev": true, @@ -1162,8 +2156,74 @@ "postcss-selector-parser": "^6.0.13" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", + "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", + "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", + "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", + "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", + "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", "cpu": [ "arm64" ], @@ -1173,7 +2233,343 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", + "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", + "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", + "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", + "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", + "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", + "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", + "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", + "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", + "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", + "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", + "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", + "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", + "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", + "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", + "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", + "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", + "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", + "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", + "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", + "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", + "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -1191,16 +2587,14 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -1221,8 +2615,7 @@ }, "node_modules/@eslint/eslintrc/node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1236,14 +2629,12 @@ }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "license": "MIT" }, "node_modules/@eslint/js": { "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", - "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -1294,9 +2685,7 @@ }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", @@ -1319,9 +2708,7 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead" + "license": "BSD-3-Clause" }, "node_modules/@irs/df-client-app": { "resolved": "df-client-app", @@ -1339,9 +2726,75 @@ "resolved": "js-factgraph-scala", "link": true }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -1386,15 +2839,13 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, "node_modules/@jridgewell/resolve-uri": { @@ -1404,19 +2855,16 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1424,7 +2872,9 @@ } }, "node_modules/@modyfi/vite-plugin-yaml": { - "version": "1.1.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@modyfi/vite-plugin-yaml/-/vite-plugin-yaml-1.1.1.tgz", + "integrity": "sha512-rEbfFNlMGLKpAYs2RsfLAhxCHFa6M4QKHHk0A4EYcCJAUwFtFO6qiEdLjUGUTtnRUxAC7GxxCa+ZbeUILSDvqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1433,7 +2883,7 @@ "tosource": "2.0.0-alpha.3" }, "peerDependencies": { - "vite": "^3.2.7 || ^4.0.5 || ^5.0.5" + "vite": ">=3.2.7" } }, "node_modules/@nodelib/fs.scandir": { @@ -1497,28 +2947,19 @@ "@parcel/watcher-win32-x64": "2.4.1" } }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.4.1", - "cpu": [ - "arm64" - ], + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "license": "MIT", "optional": true, - "os": [ - "darwin" - ], - "peer": true, "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=14" } }, "node_modules/@polka/url": { "version": "1.0.0-next.25", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@remix-run/router": { @@ -1528,6 +2969,12 @@ "node": ">=14.0.0" } }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "license": "MIT" + }, "node_modules/@rollup/pluginutils": { "version": "5.1.0", "dev": true, @@ -1555,120 +3002,143 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.3.tgz", - "integrity": "sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", + "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", "cpu": [ "arm" ], + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.3.tgz", - "integrity": "sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", + "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.3.tgz", - "integrity": "sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", + "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.3.tgz", - "integrity": "sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", + "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.3.tgz", - "integrity": "sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", + "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.3.tgz", - "integrity": "sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", + "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.3.tgz", - "integrity": "sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", + "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", "cpu": [ "arm" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.3.tgz", - "integrity": "sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", + "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", "cpu": [ "arm" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.3.tgz", - "integrity": "sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", + "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.3.tgz", - "integrity": "sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", + "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", "cpu": [ "arm64" ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", + "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", + "cpu": [ + "loong64" + ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -1681,78 +3151,112 @@ "cpu": [ "ppc64" ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", + "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.3.tgz", - "integrity": "sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", + "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", "cpu": [ "riscv64" ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", + "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.3.tgz", - "integrity": "sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", + "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", "cpu": [ "s390x" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.3.tgz", - "integrity": "sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", + "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.3.tgz", - "integrity": "sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", + "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.3.tgz", - "integrity": "sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", + "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.3.tgz", - "integrity": "sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", + "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -1760,11 +3264,11 @@ }, "node_modules/@rollup/rollup-win32-x64-msvc": { "version": "4.24.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.3.tgz", - "integrity": "sha512-HGZgRFFYrMrP3TJlq58nR1xy8zHKId25vhmm5S9jETEfDf6xybPxsavFTJaufe2zgOGYJBskGlj49CwtEuFhWQ==", "cpu": [ "x64" ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1776,21 +3280,21 @@ "license": "MIT" }, "node_modules/@testing-library/dom": { - "version": "9.3.1", + "version": "10.4.1", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", - "chalk": "^4.1.0", + "aria-query": "5.3.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", + "picocolors": "1.1.1", "pretty-format": "^27.0.2" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@testing-library/dom/node_modules/ansi-styles": { @@ -1855,6 +3359,29 @@ "node": ">=8" } }, + "node_modules/@testing-library/react": { + "version": "15.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^10.0.0", + "@types/react-dom": "^18.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@testing-library/user-event": { "version": "14.5.2", "dev": true, @@ -1868,16 +3395,20 @@ } }, "node_modules/@trussworks/react-uswds": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@trussworks/react-uswds/-/react-uswds-8.0.0.tgz", - "integrity": "sha512-VxllH/CbqKKnHgjPGJltdssPRxo/km6uNfRAC0MvYTqHcLoeg+0/5omdG6gh94KAil1ZxEqiCadbEzPIn9jg/w==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@trussworks/react-uswds/-/react-uswds-10.0.2.tgz", + "integrity": "sha512-FW5WPMPyevDmy3CSIWKx7BS6qb0/JlMv/VhGSdYuNMtM0vKaFVrqGGHS1w4UGvnGxLb+xi+873Ycoxe1NkeGwg==", + "license": "Apache-2.0", "engines": { - "node": ">= 18" + "node": ">= 20" }, "peerDependencies": { + "@types/react": "^16.x || ^17.x || ^18.x || ^19.x", + "@types/react-dom": "^16.x || ^17.x || ^18.x || ^19.x", "@uswds/uswds": "^3.7.1", - "react": "^16.x || ^17.x || ^18.x", - "react-dom": "^16.x || ^17.x || ^18.x" + "focus-trap-react": "^10.2.3", + "react": "^16.x || ^17.x || ^18.x || ^19.x", + "react-dom": "^16.x || ^17.x || ^18.x || ^19.x" } }, "node_modules/@tsconfig/node10": { @@ -1938,15 +3469,29 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/chai": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*" + } + }, "node_modules/@types/crypto-js": { "version": "4.2.1", "license": "MIT" }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "license": "MIT" + }, "node_modules/@types/eslint": { "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -1954,9 +3499,8 @@ }, "node_modules/@types/eslint__js": { "version": "8.42.3", - "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", - "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint": "*" } @@ -2001,8 +3545,7 @@ }, "node_modules/@types/json-schema": { "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", @@ -2013,12 +3556,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.8.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.2.tgz", - "integrity": "sha512-NzaRNFV+FZkvK/KLCsNdTvID0SThyrs5SHB6tsD/lajr22FGC73N2QeDPM2wHtVde8mgcXuSsHQkH5cX1pbPLw==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.2.0.tgz", + "integrity": "sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw==", "devOptional": true, + "license": "MIT", "dependencies": { - "undici-types": "~6.19.8" + "undici-types": "~7.10.0" } }, "node_modules/@types/normalize-package-data": { @@ -2032,12 +3576,10 @@ }, "node_modules/@types/prop-types": { "version": "15.7.5", - "devOptional": true, "license": "MIT" }, "node_modules/@types/react": { "version": "18.3.12", - "devOptional": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -2046,7 +3588,6 @@ }, "node_modules/@types/react-dom": { "version": "18.3.1", - "dev": true, "license": "MIT", "dependencies": { "@types/react": "*" @@ -2054,8 +3595,7 @@ }, "node_modules/@types/semver": { "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==" + "license": "MIT" }, "node_modules/@types/stack-utils": { "version": "2.0.1", @@ -2077,8 +3617,6 @@ }, "node_modules/@types/use-sync-external-store": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", - "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==", "license": "MIT" }, "node_modules/@types/uuid": { @@ -2158,8 +3696,7 @@ }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -2224,8 +3761,7 @@ }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -2261,9 +3797,8 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "8.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.12.1.tgz", - "integrity": "sha512-k/o9khHOckPeDXilFTIPsP9iAYhhdMh3OsOL3i2072PNpFqhqzRHx472/0DeC8H/WZee3bZG0z2ddGRSPgeOKw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "8.12.1", "@typescript-eslint/visitor-keys": "8.12.1", @@ -2289,9 +3824,8 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { "version": "8.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.12.1.tgz", - "integrity": "sha512-anMS4es5lxBe4UVcDXOkcDb3csnm5BvaNIbOFfvy/pJEohorsggdVB8MFbl5EZiEuBnZZ0ei1z7W5b6FdFiV1Q==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -2302,9 +3836,8 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": { "version": "8.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.12.1.tgz", - "integrity": "sha512-2RwdwnNGuOQKdGjuhujQHUqBZhEuodg2sLVPvOfWktvA9sOXOVqARjOyHSyhN2LiJGKxV6c8oOcmOtRcAnEeFw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.12.1", "eslint-visitor-keys": "^3.4.3" @@ -2318,19 +3851,19 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2343,8 +3876,7 @@ }, "node_modules/@typescript-eslint/utils": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", @@ -2368,8 +3900,7 @@ }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -2409,8 +3940,7 @@ }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + "license": "ISC" }, "node_modules/@uswds/uswds": { "version": "3.7.1", @@ -2429,139 +3959,70 @@ } }, "node_modules/@vitejs/plugin-react": { - "version": "4.2.1", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", "license": "MIT", "dependencies": { - "@babel/core": "^7.23.5", - "@babel/plugin-transform-react-jsx-self": "^7.23.3", - "@babel/plugin-transform-react-jsx-source": "^7.23.3", + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.0" + "react-refresh": "^0.17.0" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0" + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, - "node_modules/@vitest/coverage-v8": { - "version": "1.5.0", - "dev": true, + "node_modules/@vitest/mocker": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.1", - "@bcoe/v8-coverage": "^0.2.3", - "debug": "^4.3.4", - "istanbul-lib-coverage": "^3.2.2", - "istanbul-lib-report": "^3.0.1", - "istanbul-lib-source-maps": "^5.0.4", - "istanbul-reports": "^3.1.6", - "magic-string": "^0.30.5", - "magicast": "^0.3.3", - "picocolors": "^1.0.0", - "std-env": "^3.5.0", - "strip-literal": "^2.0.0", - "test-exclude": "^6.0.0" + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "1.5.0" - } - }, - "node_modules/@vitest/expect": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz", - "integrity": "sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "1.6.1", - "@vitest/utils": "1.6.1", - "chai": "^4.3.10" + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } } }, - "node_modules/@vitest/runner": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz", - "integrity": "sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==", - "dev": true, + "node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "license": "MIT", "dependencies": { - "@vitest/utils": "1.6.1", - "p-limit": "^5.0.0", - "pathe": "^1.1.1" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz", - "integrity": "sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "pretty-format": "^29.7.0" + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz", - "integrity": "sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==", - "dev": true, + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", "license": "MIT", "dependencies": { - "tinyspy": "^2.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/ui": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-1.6.1.tgz", - "integrity": "sha512-xa57bCPGuzEFqGjPs3vVLyqareG8DX0uMkr5U/v5vLv5/ZUrBrPL7gzxzTJedEyZxFMfsozwTIbbYfEQVo3kgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "1.6.1", - "fast-glob": "^3.3.2", - "fflate": "^0.8.1", - "flatted": "^3.2.9", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "sirv": "^2.0.4" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "vitest": "1.6.1" - } - }, - "node_modules/@vitest/utils": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.1.tgz", - "integrity": "sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "diff-sequences": "^29.6.3", - "estree-walker": "^3.0.3", - "loupe": "^2.3.7", - "pretty-format": "^29.7.0" + "tinyspy": "^4.0.3" }, "funding": { "url": "https://opencollective.com/vitest" @@ -2584,8 +4045,7 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -2634,7 +4094,7 @@ }, "node_modules/anymatch": { "version": "3.1.3", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", @@ -2710,11 +4170,11 @@ "license": "Python-2.0" }, "node_modules/aria-query": { - "version": "5.1.3", + "version": "5.3.0", "dev": true, "license": "Apache-2.0", "dependencies": { - "deep-equal": "^2.0.5" + "dequal": "^2.0.3" } }, "node_modules/array-buffer-byte-length": { @@ -2806,16 +4266,23 @@ "version": "1.2.1", "license": "MIT" }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.4.tgz", + "integrity": "sha512-cxrAnZNLBnQwBPByK4CeDaw5sWZtMilJE/Q3iDA0aamgaIVNDF9T6K2/8DfYDZEejZ2jNnDrG9m8MY72HFd0KA==", "license": "MIT", - "engines": { - "node": "*" + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.29", + "estree-walker": "^3.0.3", + "js-tokens": "^9.0.1" } }, + "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "license": "MIT" + }, "node_modules/astral-regex": { "version": "2.0.0", "license": "MIT", @@ -2912,7 +4379,7 @@ }, "node_modules/binary-extensions": { "version": "2.2.0", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2934,7 +4401,9 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -2953,8 +4422,6 @@ }, "node_modules/browserslist": { "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "funding": [ { "type": "opencollective", @@ -2969,6 +4436,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001669", "electron-to-chromium": "^1.5.41", @@ -3041,7 +4509,6 @@ }, "node_modules/cac": { "version": "6.7.14", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3102,9 +4569,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001673", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001673.tgz", - "integrity": "sha512-WTrjUCSMp3LYX0nE12ECkV0a+e6LC85E0Auz75555/qr78Oc8YWhEPNfDd6SHdtlCMSzqtuXY0uyEMNRcsKpKw==", + "version": "1.0.30001731", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001731.tgz", + "integrity": "sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==", "funding": [ { "type": "opencollective", @@ -3118,26 +4585,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] - }, - "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" - }, - "engines": { - "node": ">=4" - } + ], + "license": "CC-BY-4.0" }, "node_modules/chainsaw": { "version": "0.1.0", @@ -3161,22 +4610,9 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, "node_modules/chokidar": { "version": "3.5.3", - "devOptional": true, + "dev": true, "funding": [ { "type": "individual", @@ -3260,6 +4696,8 @@ }, "node_modules/convert-source-map": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "license": "MIT" }, "node_modules/core-util-is": { @@ -3313,8 +4751,7 @@ }, "node_modules/cross-spawn": { "version": "7.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", - "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -3363,7 +4800,6 @@ }, "node_modules/csstype": { "version": "3.1.2", - "devOptional": true, "license": "MIT" }, "node_modules/dayjs": { @@ -3417,47 +4853,6 @@ "node": ">=0.10.0" } }, - "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-equal": { - "version": "2.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.1", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/deep-is": { "version": "0.1.4", "license": "MIT" @@ -3476,6 +4871,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/dequal": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/detect-libc": { "version": "1.0.3", "devOptional": true, @@ -3562,10 +4965,15 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, "node_modules/electron-to-chromium": { "version": "1.5.48", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.48.tgz", - "integrity": "sha512-FXULnNK7ACNI9MTMOVAzUGiz/YrK9Kcb0s/JT4aJgsam7Eh6XYe7Y6q95lPq+VdBe1DpT2eTnfXFtnuPGCks4w==" + "license": "ISC" }, "node_modules/element-closest": { "version": "2.0.2", @@ -3600,7 +5008,7 @@ }, "node_modules/entities": { "version": "4.5.0", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -3662,30 +5070,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "license": "MIT" }, "node_modules/es-set-tostringtag": { "version": "2.0.1", @@ -3722,45 +5111,49 @@ } }, "node_modules/esbuild": { - "version": "0.21.5", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", + "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", "hasInstallScript": true, "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/aix-ppc64": "0.25.8", + "@esbuild/android-arm": "0.25.8", + "@esbuild/android-arm64": "0.25.8", + "@esbuild/android-x64": "0.25.8", + "@esbuild/darwin-arm64": "0.25.8", + "@esbuild/darwin-x64": "0.25.8", + "@esbuild/freebsd-arm64": "0.25.8", + "@esbuild/freebsd-x64": "0.25.8", + "@esbuild/linux-arm": "0.25.8", + "@esbuild/linux-arm64": "0.25.8", + "@esbuild/linux-ia32": "0.25.8", + "@esbuild/linux-loong64": "0.25.8", + "@esbuild/linux-mips64el": "0.25.8", + "@esbuild/linux-ppc64": "0.25.8", + "@esbuild/linux-riscv64": "0.25.8", + "@esbuild/linux-s390x": "0.25.8", + "@esbuild/linux-x64": "0.25.8", + "@esbuild/netbsd-arm64": "0.25.8", + "@esbuild/netbsd-x64": "0.25.8", + "@esbuild/openbsd-arm64": "0.25.8", + "@esbuild/openbsd-x64": "0.25.8", + "@esbuild/openharmony-arm64": "0.25.8", + "@esbuild/sunos-x64": "0.25.8", + "@esbuild/win32-arm64": "0.25.8", + "@esbuild/win32-ia32": "0.25.8", + "@esbuild/win32-x64": "0.25.8" } }, "node_modules/escalade": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -3777,9 +5170,7 @@ }, "node_modules/eslint": { "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -4077,8 +5468,7 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -4089,16 +5479,14 @@ }, "node_modules/eslint-scope/node_modules/estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4108,8 +5496,7 @@ }, "node_modules/eslint/node_modules/@eslint/js": { "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -4130,8 +5517,7 @@ }, "node_modules/eslint/node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -4141,8 +5527,7 @@ }, "node_modules/eslint/node_modules/eslint-scope": { "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -4170,8 +5555,7 @@ }, "node_modules/espree": { "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -4213,9 +5597,6 @@ }, "node_modules/estree-walker": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" @@ -4255,28 +5636,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/execa": { - "version": "8.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, "node_modules/expect": { "version": "29.6.1", "dev": true, @@ -4293,6 +5652,15 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/expect-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/fast-csv": { "version": "4.3.6", "dev": true, @@ -4374,8 +5742,10 @@ } }, "node_modules/fflate": { - "version": "0.8.1", - "dev": true, + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "devOptional": true, "license": "MIT" }, "node_modules/file-entry-cache": { @@ -4424,13 +5794,14 @@ } }, "node_modules/flatted": { - "version": "3.2.9", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "license": "ISC" }, "node_modules/focus-trap": { "version": "7.6.2", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.2.tgz", - "integrity": "sha512-9FhUxK1hVju2+AiQIDJ5Dd//9R2n2RAfJ0qfhF4IHGHgcoEUTMpbTeG/zbEuwaiYXfuAH6XE0/aCyxDdRM+W5w==", + "license": "MIT", "peer": true, "dependencies": { "tabbable": "^6.2.0" @@ -4438,8 +5809,7 @@ }, "node_modules/focus-trap-react": { "version": "10.3.1", - "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-10.3.1.tgz", - "integrity": "sha512-PN4Ya9xf9nyj/Nd9VxBNMuD7IrlRbmaG6POAQ8VLqgtc6IY/Ln1tYakow+UIq4fihYYYFM70/2oyidE6bbiPgw==", + "license": "MIT", "peer": true, "dependencies": { "focus-trap": "^7.6.1", @@ -4458,10 +5828,39 @@ "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/fraction.js": { "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", "engines": { "node": "*" }, @@ -4481,6 +5880,9 @@ }, "node_modules/fsevents": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ @@ -4547,21 +5949,13 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/get-intrinsic": { "version": "1.2.1", "license": "MIT", @@ -4586,17 +5980,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-stream": { - "version": "8.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-symbol-description": { "version": "1.0.0", "license": "MIT", @@ -4684,8 +6067,7 @@ }, "node_modules/globals": { "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -4698,8 +6080,7 @@ }, "node_modules/globals/node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -4767,9 +6148,8 @@ }, "node_modules/happy-dom": { "version": "15.10.2", - "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-15.10.2.tgz", - "integrity": "sha512-NbA5XrSovenJIIcfixCREX3ZnV7yHP4phhbfuxxf4CPn+LZpz/jIM9EqJ2DrPwgVDSMoAKH3pZwQvkbsSiCrUw==", - "dev": true, + "devOptional": true, + "license": "MIT", "dependencies": { "entities": "^4.5.0", "webidl-conversions": "^7.0.0", @@ -4875,7 +6255,6 @@ }, "node_modules/html-escaper": { "version": "2.0.2", - "dev": true, "license": "MIT" }, "node_modules/html-parse-stringify": { @@ -4895,18 +6274,8 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/human-signals": { - "version": "5.0.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, "node_modules/i18next": { "version": "23.16.4", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.4.tgz", - "integrity": "sha512-9NIYBVy9cs4wIqzurf7nLXPyf3R78xYbxExVqHLK9od3038rjpyOEzW+XB130kZ1N4PZ9inTtJ471CRJ4Ituyg==", "funding": [ { "type": "individual", @@ -4921,6 +6290,7 @@ "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" } ], + "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.2" } @@ -4946,8 +6316,7 @@ }, "node_modules/ignore": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -4964,8 +6333,6 @@ }, "node_modules/immer": { "version": "10.1.1", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", - "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", "license": "MIT", "funding": { "type": "opencollective", @@ -5055,21 +6422,6 @@ "loose-envify": "^1.0.0" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-array-buffer": { "version": "3.0.2", "license": "MIT", @@ -5098,7 +6450,7 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -5181,14 +6533,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-map": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-negative-zero": { "version": "2.0.2", "license": "MIT", @@ -5232,8 +6576,7 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -5277,14 +6620,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-set": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "license": "MIT", @@ -5295,17 +6630,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-string": { "version": "1.0.7", "license": "MIT", @@ -5349,14 +6673,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-weakref": { "version": "1.0.2", "license": "MIT", @@ -5367,30 +6683,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakset": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, "node_modules/isexe": { "version": "2.0.0", "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=8" @@ -5398,7 +6696,6 @@ }, "node_modules/istanbul-lib-report": { "version": "3.0.1", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", @@ -5411,7 +6708,6 @@ }, "node_modules/istanbul-lib-report/node_modules/make-dir": { "version": "4.0.0", - "dev": true, "license": "MIT", "dependencies": { "semver": "^7.5.3" @@ -5424,8 +6720,9 @@ } }, "node_modules/istanbul-lib-source-maps": { - "version": "5.0.4", - "dev": true, + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "license": "BSD-3-Clause", "dependencies": { "@jridgewell/trace-mapping": "^0.3.23", @@ -5437,8 +6734,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "dev": true, + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", @@ -5448,6 +6746,21 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jest-diff": { "version": "29.6.1", "dev": true, @@ -5534,13 +6847,15 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-parse-even-better-errors": { @@ -5557,6 +6872,8 @@ }, "node_modules/json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -5565,11 +6882,6 @@ "node": ">=6" } }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "dev": true, - "license": "MIT" - }, "node_modules/jsx-ast-utils": { "version": "3.3.4", "license": "MIT", @@ -5686,21 +6998,6 @@ "dev": true, "license": "ISC" }, - "node_modules/local-pkg": { - "version": "0.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "mlly": "^1.4.2", - "pkg-types": "^1.0.3" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/locate-path": { "version": "6.0.0", "license": "MIT", @@ -5802,16 +7099,6 @@ "loose-envify": "cli.js" } }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } - }, "node_modules/lru-cache": { "version": "6.0.0", "license": "ISC", @@ -5831,23 +7118,22 @@ } }, "node_modules/magic-string": { - "version": "0.30.5", - "dev": true, + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/magicast": { - "version": "0.3.4", - "dev": true, + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.24.4", - "@babel/types": "^7.24.0", + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, @@ -5947,11 +7233,6 @@ "node": ">=10" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/merge2": { "version": "1.4.1", "license": "MIT", @@ -5970,17 +7251,6 @@ "node": ">=8.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/min-indent": { "version": "1.0.1", "license": "MIT", @@ -6017,6 +7287,15 @@ "node": ">= 6" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mkdirp": { "version": "0.5.6", "dev": true, @@ -6028,20 +7307,9 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/mlly": { - "version": "1.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.10.0", - "pathe": "^1.1.1", - "pkg-types": "^1.0.3", - "ufo": "^1.3.0" - } - }, "node_modules/mrmime": { "version": "2.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=10" @@ -6052,15 +7320,16 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -6083,8 +7352,7 @@ }, "node_modules/node-releases": { "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" + "license": "MIT" }, "node_modules/nopt": { "version": "1.0.10", @@ -6124,31 +7392,6 @@ "node": ">=0.10.0" } }, - "node_modules/npm-run-path": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/object-assign": { "version": "4.1.1", "license": "MIT", @@ -6163,21 +7406,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-is": { - "version": "1.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object-keys": { "version": "1.1.1", "license": "MIT", @@ -6261,20 +7489,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/optionator": { "version": "0.9.3", "license": "MIT", @@ -6290,22 +7504,6 @@ "node": ">= 0.8.0" } }, - "node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-locate": { "version": "5.0.0", "license": "MIT", @@ -6342,6 +7540,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, "node_modules/pako": { "version": "1.0.11", "dev": true, @@ -6398,6 +7602,28 @@ "version": "1.0.7", "license": "MIT" }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, "node_modules/path-type": { "version": "4.0.0", "license": "MIT", @@ -6405,23 +7631,8 @@ "node": ">=8" } }, - "node_modules/pathe": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/picocolors": { - "version": "1.1.0", + "version": "1.1.1", "license": "ISC" }, "node_modules/picomatch": { @@ -6434,16 +7645,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pkg-types": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "jsonc-parser": "^3.2.0", - "mlly": "^1.2.0", - "pathe": "^1.1.0" - } - }, "node_modules/postcss": { "version": "8.4.47", "funding": [ @@ -6682,8 +7883,7 @@ }, "node_modules/react-i18next": { "version": "15.1.0", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.1.0.tgz", - "integrity": "sha512-zj3nJynMnZsy2gPZiOTC7XctCY5eQGqT3tcKMmfJWC9FMvgd+960w/adq61j8iPzpwmsXejqID9qC3Mqu1Xu2Q==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.0", "html-parse-stringify": "^3.0.1" @@ -6707,7 +7907,9 @@ "license": "MIT" }, "node_modules/react-refresh": { - "version": "0.14.0", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6794,7 +7996,9 @@ } }, "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.0.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6814,7 +8018,7 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -6847,23 +8051,15 @@ }, "node_modules/redux": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", - "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", "license": "MIT" }, "node_modules/redux-thunk": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", - "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", "license": "MIT", "peerDependencies": { "redux": "^5.0.0" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.0", - "license": "MIT" - }, "node_modules/regexp.prototype.flags": { "version": "1.5.0", "license": "MIT", @@ -6888,8 +8084,6 @@ }, "node_modules/reselect": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", - "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", "license": "MIT" }, "node_modules/resolve": { @@ -6949,8 +8143,8 @@ }, "node_modules/rollup": { "version": "4.24.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.3.tgz", - "integrity": "sha512-HBW896xR5HGmoksbi3JBDtmVzWiPAYqp7wip50hjQ67JbDz61nyoMPdqu1DvVW9asYb2M65Z20ZHsyJCMqMyDg==", + "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.6" }, @@ -6983,6 +8177,230 @@ "fsevents": "~2.3.2" } }, + "node_modules/rollup/node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.3.tgz", + "integrity": "sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-android-arm64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.3.tgz", + "integrity": "sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.3.tgz", + "integrity": "sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-darwin-x64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.3.tgz", + "integrity": "sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.3.tgz", + "integrity": "sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.3.tgz", + "integrity": "sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.3.tgz", + "integrity": "sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.3.tgz", + "integrity": "sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.3.tgz", + "integrity": "sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.3.tgz", + "integrity": "sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.3.tgz", + "integrity": "sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.3.tgz", + "integrity": "sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.3.tgz", + "integrity": "sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.3.tgz", + "integrity": "sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.3.tgz", + "integrity": "sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/rollup/node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.3.tgz", + "integrity": "sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/run-parallel": { "version": "1.2.0", "funding": [ @@ -7132,7 +8550,6 @@ }, "node_modules/siginfo": { "version": "2.0.0", - "dev": true, "license": "ISC" }, "node_modules/signal-exit": { @@ -7156,19 +8573,6 @@ "node": ">=10" } }, - "node_modules/sirv": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/slash": { "version": "3.0.0", "license": "MIT", @@ -7243,25 +8647,14 @@ }, "node_modules/stackback": { "version": "0.0.2", - "dev": true, "license": "MIT" }, "node_modules/std-env": { - "version": "3.7.0", - "dev": true, + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", "license": "MIT" }, - "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "internal-slot": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/string_decoder": { "version": "1.1.1", "dev": true, @@ -7282,6 +8675,21 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.matchall": { "version": "4.0.8", "license": "MIT", @@ -7364,6 +8772,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "license": "MIT", @@ -7371,17 +8792,6 @@ "node": ">=4" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-indent": { "version": "3.0.0", "dev": true, @@ -7395,8 +8805,7 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -7404,22 +8813,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-literal": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/strnum": { "version": "1.0.5", "license": "MIT" @@ -7589,8 +8982,7 @@ }, "node_modules/tabbable": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "license": "MIT", "peer": true }, "node_modules/table": { @@ -7630,62 +9022,90 @@ "node": ">=6" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/text-table": { "version": "0.2.0", "license": "MIT" }, "node_modules/tinybench": { - "version": "2.5.1", - "dev": true, + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", "license": "MIT" }, - "node_modules/tinypool": { - "version": "0.8.4", - "dev": true, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/tinyspy": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", - "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", - "dev": true, + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", + "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/tmp": { - "version": "0.2.1", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.4.tgz", + "integrity": "sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ==", "dev": true, "license": "MIT", - "dependencies": { - "rimraf": "^3.0.0" - }, "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" + "node": ">=14.14" } }, "node_modules/to-regex-range": { @@ -7707,7 +9127,7 @@ }, "node_modules/totalist": { "version": "3.0.1", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -7741,9 +9161,8 @@ }, "node_modules/ts-api-utils": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -7753,9 +9172,8 @@ }, "node_modules/ts-node": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, + "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -7804,8 +9222,7 @@ }, "node_modules/ts-pattern": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.5.0.tgz", - "integrity": "sha512-jqbIpTsa/KKTJYWgPNsFNbLVpwCgzXfFJ1ukNn4I8hMwyQzHMJnk/BqWzggB0xpkILuKzaO/aMYhS0SkaJyKXg==" + "license": "MIT" }, "node_modules/tsconfck": { "version": "2.1.1", @@ -7876,16 +9293,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/type-fest": { "version": "1.4.0", "license": "(MIT OR CC0-1.0)", @@ -7910,8 +9317,7 @@ }, "node_modules/typescript": { "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -7922,9 +9328,8 @@ }, "node_modules/typescript-eslint": { "version": "8.12.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.12.1.tgz", - "integrity": "sha512-SsKedZnq4TStkrpqnk+OqTnmkC9CkYBRNKjQ965CLpFruGcRkPF5UhKxbcbF6c/m2r6YAgKw/UtQxdlMjh3mug==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/eslint-plugin": "8.12.1", "@typescript-eslint/parser": "8.12.1", @@ -7945,9 +9350,8 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { "version": "8.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.12.1.tgz", - "integrity": "sha512-gNg/inLRcPoBsKKIe4Vv38SVSOhk4BKWNO0T56sVff33gRqtTpOsrhHtiOKD1lmIOmCtZMPaW2x/h2FlM+sCEg==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.12.1", @@ -7978,9 +9382,8 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { "version": "8.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.12.1.tgz", - "integrity": "sha512-I/I9Bg7qFa8rOgBnUUHIWTgzbB5wVkSLX+04xGUzTcJUtdq/I2uHWR9mbW6qUYJG/UmkuDcTax5JHvoEWOAHOQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "8.12.1", "@typescript-eslint/types": "8.12.1", @@ -8006,9 +9409,8 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { "version": "8.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.12.1.tgz", - "integrity": "sha512-bma6sD1iViTt+y9MAwDlBdPTMCqoH/BNdcQk4rKhIZWv3eM0xHmzeSrPJA663PAqFqfpOmtdugycpr0E1mZDVA==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.12.1", "@typescript-eslint/visitor-keys": "8.12.1" @@ -8023,9 +9425,8 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { "version": "8.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.12.1.tgz", - "integrity": "sha512-zJzrvbDVjIzVKV2TGHcjembEhws8RWXJhmqfO9hS2gRXBN0gDwGhRPEdJ6AZglzfJ+YA1q09EWpSLSXjBJpIMQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "8.12.1", "@typescript-eslint/utils": "8.12.1", @@ -8047,9 +9448,8 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { "version": "8.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.12.1.tgz", - "integrity": "sha512-anMS4es5lxBe4UVcDXOkcDb3csnm5BvaNIbOFfvy/pJEohorsggdVB8MFbl5EZiEuBnZZ0ei1z7W5b6FdFiV1Q==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -8060,9 +9460,8 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { "version": "8.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.12.1.tgz", - "integrity": "sha512-sDv9yFHrhKe1WN8EYuzfhKCh/sFRupe9P+m/lZ5YgVvPoCUGHNN50IO4llSu7JAbftUM/QcCh+GeCortXPrBYQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "8.12.1", @@ -8082,9 +9481,8 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { "version": "8.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.12.1.tgz", - "integrity": "sha512-2RwdwnNGuOQKdGjuhujQHUqBZhEuodg2sLVPvOfWktvA9sOXOVqARjOyHSyhN2LiJGKxV6c8oOcmOtRcAnEeFw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.12.1", "eslint-visitor-keys": "^3.4.3" @@ -8097,11 +9495,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/ufo": { - "version": "1.3.2", - "dev": true, - "license": "MIT" - }, "node_modules/unbox-primitive": { "version": "1.0.2", "license": "MIT", @@ -8121,7 +9514,9 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "6.19.8", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", "devOptional": true, "license": "MIT" }, @@ -8163,8 +9558,6 @@ }, "node_modules/update-browserslist-db": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "funding": [ { "type": "opencollective", @@ -8179,6 +9572,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.0" @@ -8199,8 +9593,6 @@ }, "node_modules/use-sync-external-store": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", - "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" @@ -8231,20 +9623,23 @@ } }, "node_modules/vite": { - "version": "5.4.15", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.15.tgz", - "integrity": "sha512-6ANcZRivqL/4WtwPGTKNaosuNJr5tWiftOC7liM7G9+rMb8+oeJeyzymDu4rTN93seySBmbjSfsS3Vzr19KNtA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.0.tgz", + "integrity": "sha512-3jdAy3NhBJYsa/lCFcnRfbK4kNkO/bhijFCnv5ByUQk/eekYagoV2yQSISUrhpV+5JiY5hmwOh7jNnQ68dFMuQ==", "license": "MIT", "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "esbuild": "^0.25.0", + "fdir": "^6.4.6", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.14" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -8253,19 +9648,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -8286,32 +9687,15 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, - "node_modules/vite-node": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.1.tgz", - "integrity": "sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.4", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "vite": "^5.0.0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, "node_modules/vite-plugin-singlefile": { "version": "0.13.5", "dev": true, @@ -8344,72 +9728,118 @@ } } }, - "node_modules/vitest": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.1.tgz", - "integrity": "sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==", - "dev": true, + "node_modules/vite/node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", + "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/vite/node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", "license": "MIT", - "dependencies": { - "@vitest/expect": "1.6.1", - "@vitest/runner": "1.6.1", - "@vitest/snapshot": "1.6.1", - "@vitest/spy": "1.6.1", - "@vitest/utils": "1.6.1", - "acorn-walk": "^8.3.2", - "chai": "^4.3.10", - "debug": "^4.3.4", - "execa": "^8.0.1", - "local-pkg": "^0.5.0", - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "std-env": "^3.5.0", - "strip-literal": "^2.0.0", - "tinybench": "^2.5.1", - "tinypool": "^0.8.3", - "vite": "^5.0.0", - "vite-node": "1.6.1", - "why-is-node-running": "^2.2.2" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, "peerDependencies": { - "@edge-runtime/vm": "*", - "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "1.6.1", - "@vitest/ui": "1.6.1", - "happy-dom": "*", - "jsdom": "*" + "picomatch": "^3 || ^4" }, "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { + "picomatch": { "optional": true } } }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vite/node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/vite/node_modules/rollup": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", + "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.46.2", + "@rollup/rollup-android-arm64": "4.46.2", + "@rollup/rollup-darwin-arm64": "4.46.2", + "@rollup/rollup-darwin-x64": "4.46.2", + "@rollup/rollup-freebsd-arm64": "4.46.2", + "@rollup/rollup-freebsd-x64": "4.46.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", + "@rollup/rollup-linux-arm-musleabihf": "4.46.2", + "@rollup/rollup-linux-arm64-gnu": "4.46.2", + "@rollup/rollup-linux-arm64-musl": "4.46.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", + "@rollup/rollup-linux-ppc64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-musl": "4.46.2", + "@rollup/rollup-linux-s390x-gnu": "4.46.2", + "@rollup/rollup-linux-x64-gnu": "4.46.2", + "@rollup/rollup-linux-x64-musl": "4.46.2", + "@rollup/rollup-win32-arm64-msvc": "4.46.2", + "@rollup/rollup-win32-ia32-msvc": "4.46.2", + "@rollup/rollup-win32-x64-msvc": "4.46.2", + "fsevents": "~2.3.2" + } + }, "node_modules/void-elements": { "version": "3.1.0", "license": "MIT", @@ -8423,7 +9853,7 @@ }, "node_modules/webidl-conversions": { "version": "7.0.0", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -8431,7 +9861,7 @@ }, "node_modules/whatwg-mimetype": { "version": "3.0.0", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=12" @@ -8464,20 +9894,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-collection": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/which-typed-array": { "version": "1.1.10", "license": "MIT", @@ -8497,8 +9913,9 @@ } }, "node_modules/why-is-node-running": { - "version": "2.2.2", - "dev": true, + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "license": "MIT", "dependencies": { "siginfo": "^2.0.0", @@ -8511,6 +9928,103 @@ "node": ">=8" } }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "license": "ISC" @@ -8543,19 +10057,6 @@ "node": ">=6" } }, - "node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/zip-stream": { "version": "4.1.0", "dev": true, @@ -8596,10 +10097,23 @@ "@trussworks/react-uswds": "^8.0.0" } }, + "packages/df-common-link-renderer/node_modules/@trussworks/react-uswds": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@trussworks/react-uswds/-/react-uswds-8.0.0.tgz", + "integrity": "sha512-VxllH/CbqKKnHgjPGJltdssPRxo/km6uNfRAC0MvYTqHcLoeg+0/5omdG6gh94KAil1ZxEqiCadbEzPIn9jg/w==", + "license": "Apache-2.0", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@uswds/uswds": "^3.7.1", + "react": "^16.x || ^17.x || ^18.x", + "react-dom": "^16.x || ^17.x || ^18.x" + } + }, "packages/df-common/node_modules/@trussworks/react-uswds": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@trussworks/react-uswds/-/react-uswds-9.1.0.tgz", - "integrity": "sha512-vQsr73oMtDIzLHVtkgD81tL7YxzygTyH9e1P3Lv/C1tGlqoNEUmUgVEmUVzo/IwOvMN0XxxSkNkOpnM9rDzRMg==", + "license": "Apache-2.0", "engines": { "node": ">= 18" }, @@ -8612,8 +10126,6 @@ }, "packages/df-common/node_modules/autoprefixer": { "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "funding": [ { "type": "opencollective", @@ -8628,6 +10140,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "browserslist": "^4.23.3", "caniuse-lite": "^1.0.30001646", @@ -8646,16 +10159,8 @@ "postcss": "^8.1.0" } }, - "packages/df-ga-integration": { - "version": "0.0.0", - "extraneous": true - }, "packages/df-i18n": { "version": "0.0.0" - }, - "packages/df-logger": { - "version": "0.0.0", - "extraneous": true } } } diff --git a/direct-file/df-client/package.json b/direct-file/df-client/package.json index 9cc1455..919efb3 100644 --- a/direct-file/df-client/package.json +++ b/direct-file/df-client/package.json @@ -10,9 +10,9 @@ ], "scripts": { "prestart": "npm install", - "start": "cd df-client-app && npm start", - "build": "cd df-client-app && npm run build", - "build:development": "cd df-client-app && npm run build:development", + "start": "npm run --workspace=df-client-app start", + "build": "npm run --workspace=df-client-app run build", + "build:development": "npm run --workspace=df-client-app run build:development", "clean": "rm -rf node_modules; rm -rf **/node_modules; rm -rf **/dist; rm **/tsconfig.tsbuildinfo", "lint": "npm run lint --workspaces --if-present", "lint:css": "npm run lint:css --workspaces --if-present", @@ -35,6 +35,7 @@ "typescript-eslint": "^8.12.1" }, "dependencies": { + "@trussworks/react-uswds": "^10.0.2", "@typescript-eslint/eslint-plugin": "^5.59.6", "@typescript-eslint/parser": "^5.59.6", "dotenv-expand": "^10.0.0", @@ -55,6 +56,6 @@ "nanoid": "^3.3.8" }, "engines": { - "node": "18.20.4" + "node": "22.18.0" } } diff --git a/direct-file/docker-compose.yaml b/direct-file/docker-compose.yaml index 5d8954e..a711bfb 100644 --- a/direct-file/docker-compose.yaml +++ b/direct-file/docker-compose.yaml @@ -3,7 +3,6 @@ services: image: postgres:15 container_name: direct-file-db restart: always - # the postgres docker image defaults to uid and gid 999, optionally override it with our env vars user: "${DF_DB_USER_ID:-999}:${DF_DB_GROUP_ID:-999}" entrypoint: "/bin/bash" command: -c "chown -R ${DF_DB_USER_ID:-999}:${DF_DB_GROUP_ID:-999} /var/lib/postgresql/data & exec /usr/local/bin/docker-entrypoint.sh postgres" @@ -13,7 +12,7 @@ services: POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=en_US.UTF-8 --lc-ctype=en_US.UTF-8" volumes: - "./docker/db/postgres/init:/docker-entrypoint-initdb.d:ro" - - "./docker/db/postgres/data:/var/lib/postgresql/data" + - direct_file_db_data:/var/lib/postgresql/data ports: - "${DF_LISTEN_ADDRESS:-127.0.0.1}:${DF_DB_PORT:-5435}:5432" healthcheck: &dbhealth @@ -24,43 +23,38 @@ services: start_period: 60s stop_grace_period: 60s - state-api-db: image: postgres:15 container_name: state-api-db restart: always - # the postgres docker image defaults to uid and gid 999, optionally override it with our env vars user: "${STATEAPI_DB_USER_ID:-999}:${STATEAPI_DB_GROUP_ID:-999}" entrypoint: "/bin/bash" command: -c "chown -R ${DF_DB_USER_ID:-999}:${DF_DB_GROUP_ID:-999} /var/lib/postgresql/data & exec /usr/local/bin/docker-entrypoint.sh postgres" environment: *dbuser volumes: - "./state-api/docker/db/postgres/init:/docker-entrypoint-initdb.d:ro" - - "./state-api/docker/db/postgres/data:/var/lib/postgresql/data" + - state_api_db_data:/var/lib/postgresql/data ports: - "${DF_LISTEN_ADDRESS:-127.0.0.1}:${STATEAPI_DB_PORT:-5433}:5432" healthcheck: *dbhealth stop_grace_period: 60s - email-service-db: image: postgres:15 container_name: email-service-db restart: always - # the postgres docker image defaults to uid and gid 999, optionally override it with our env vars user: "${DF_EMAIL_DB_USER_ID:-999}:${DF_EMAIL_DB_GROUP_ID:-999}" entrypoint: "/bin/bash" command: -c "chown -R ${DF_DB_USER_ID:-999}:${DF_DB_GROUP_ID:-999} /var/lib/postgresql/data & exec /usr/local/bin/docker-entrypoint.sh postgres" environment: *dbuser volumes: - "./email-service/docker/db/postgres/init:/docker-entrypoint-initdb.d:ro" - - "./email-service/docker/db/postgres/data:/var/lib/postgresql/data" + - email_service_db_data:/var/lib/postgresql/data ports: - "${DF_LISTEN_ADDRESS:-127.0.0.1}:${DF_EMAIL_DB_PORT:-5434}:5432" healthcheck: *dbhealth stop_grace_period: 60s - api: container_name: direct-file-api build: @@ -306,3 +300,8 @@ services: image: redis:7.0 ports: - "${DF_LISTEN_ADDRESS:-127.0.0.1}:6379:6379" + +volumes: + direct_file_db_data: + state_api_db_data: + email_service_db_data: