diff --git a/.eslintrc.json b/.eslintrc.json index f6529e790..7bbf84b48 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,6 +6,9 @@ "es2021": true }, "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": ["./tsconfig.json"] + }, "plugins": ["react-prefer-function-component"], "extends": [ "eslint:all", diff --git a/.github/actions/setvars/action.yml b/.github/actions/setvars/action.yml new file mode 100644 index 000000000..4e1c17e1c --- /dev/null +++ b/.github/actions/setvars/action.yml @@ -0,0 +1,13 @@ +name: 'Set environment variables' +description: 'Configures environment variables for a workflow' +inputs: + varFilePath: + description: 'File path to variable file or directory. Defaults to ./.github/variables/* if none specified and runs against each file in that directory.' + required: false + default: ./.github/variables/.env +runs: + using: "composite" + steps: + - run: | + sed "" ${{ inputs.varFilePath }} >> $GITHUB_ENV + shell: bash \ No newline at end of file diff --git a/.github/variables/.env b/.github/variables/.env new file mode 100644 index 000000000..cbb553cf2 --- /dev/null +++ b/.github/variables/.env @@ -0,0 +1,23 @@ +SBL_DEV_PORT="8899" +SBL_OIDC_AUTHORITY="http://localhost:8880/realms/regtech" +SBL_OIDC_CLIENT_ID="regtech-client" +SBL_OIDC_REDIRECT_URI="http://localhost:${SBL_DEV_PORT}/filing" +SBL_REGTECH_BASE_URL="http://localhost:8881" +SBL_MAIL_BASE_URL="http://localhost:8765" +SBL_FILING_BASE_URL="http://localhost:8882" +SBL_LOGOUT_REDIRECT_URL="" +SBL_VALIDATION_TIMEOUT_SECONDS="1200" +SBL_LONGPOLLING_DELAY_SECONDS="backoff" +SBL_UPLOAD_FILE_SIZE_LIMIT_BYTES="50000000" +SBL_ENABLE_PLAYWRIGHT_TEST_SETTINGS="false" +SBL_PLAYWRIGHT_TEST_TARGET="http://localhost:8899" +SBL_PLAYWRIGHT_TEST_KC_TARGET="http://localhost:8880/" +SBL_PLAYWRIGHT_TEST_KC_REALM="regtech" +SBL_PLAYWRIGHT_TEST_KC_CLI_USERNAME="admin" +SBL_PLAYWRIGHT_TEST_KC_CLI_CLIENT_ID="admin-cli" +SBL_PLAYWRIGHT_TEST_KC_CLI_CLIENT_SECRET="local_test_only" +SBL_PLAYWRIGHT_TEST_KC_CLI_GRANT_TYPE="client_credentials" +SBL_PLAYWRIGHT_TEST_KC_ADMIN_USERNAME="admin1" +SBL_PLAYWRIGHT_TEST_KC_ADMIN_PASSWORD="admin" +SBL_PLAYWRIGHT_TEST_KC_ADMIN_CLIENT_ID="regtech-client" +SBL_PLAYWRIGHT_TEST_KC_ADMIN_GRANT_TYPE="password" \ No newline at end of file diff --git a/.github/workflows/.pre.yml b/.github/workflows/.pre.yml new file mode 100644 index 000000000..a91c9cdd4 --- /dev/null +++ b/.github/workflows/.pre.yml @@ -0,0 +1,45 @@ +name: .Pre + +on: + workflow_call: + +jobs: + check: + name: Check Cache + runs-on: ubuntu-latest + outputs: + should-pull: ${{ steps.check.outputs.should-pull }} + env: + GH_TOKEN: ${{ github.token }} + steps: + - uses: actions/checkout@v4 + - name: check cache + id: check + run: | + CACHE_LIST=$(gh cache list) + if [[ ! -z "$CACHE_LIST" ]]; then + # echo "$CACHE_LIST" | awk 'NR==1{print $1}' + echo "Cache already exists. Skipping dependencies" + echo "should-pull=false" >> $GITHUB_OUTPUT + else + echo "should-pull=true" >> $GITHUB_OUTPUT + fi + shell: bash + + dependencies: + name: Pull Dependencies + runs-on: ubuntu-latest + needs: check + if: needs.check.outputs.should-pull == 'true' + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'yarn' + cache-dependency-path: ./yarn.lock + - name: Clean Yarn cache + run: yarn cache clean + - name: Install dependencies + run: yarn + \ No newline at end of file diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 833e718dd..8f1e53cc1 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -12,10 +12,13 @@ name: "CodeQL" on: + workflow_call: push: - branches: [ "main", "preview" ] + # branches: [ "main", "preview" ] + branches: [ "preview" ] pull_request: - branches: [ "main", "preview" ] + # branches: [ "main", "preview" ] + branches: [ "preview" ] schedule: - cron: '45 9 * * 4' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000..ce1a0258c --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,89 @@ +name: Lint + +on: + workflow_call: + # push: + # branches: [main] + # pull_request: + # branches: [main] + +jobs: + prettier: + name: Prettier + runs-on: ubuntu-latest + steps: + # - uses: ./.github/actions/setvars + + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'yarn' + cache-dependency-path: ./yarn.lock + + - name: Install dependencies + run: yarn + + - name: Run Prettier + run: yarn run-prettier + + tsc: + name: TSC + runs-on: ubuntu-latest + steps: + # - uses: ./.github/actions/setvars + + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'yarn' + cache-dependency-path: ./yarn.lock + + - name: Install dependencies + run: yarn + + - name: Run Linter + run: yarn run-tsc + + eslint: + name: ESLint + runs-on: ubuntu-latest + steps: + # - uses: ./.github/actions/setvars + + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'yarn' + cache-dependency-path: ./yarn.lock + + - name: Install dependencies + run: yarn + + - name: Run Linter + run: yarn run-eslint + + stylelint: + name: StyleLint + runs-on: ubuntu-latest + steps: + # - uses: ./.github/actions/setvars + + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'yarn' + cache-dependency-path: ./yarn.lock + + - name: Install dependencies + run: yarn + + - name: Run Linter + run: yarn run-stylelint diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100644 index 000000000..e8acf6035 --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,28 @@ +name: Pull Request + +on: + pull_request: + branches: [main] + +jobs: + call-pre: + name: .Pre + uses: ./.github/workflows/.pre.yml + + call-lint: + name: Lint + uses: ./.github/workflows/lint.yml + needs: call-pre + + call-test: + name: Test + if: ${{ always() }} + uses: ./.github/workflows/test.yml + needs: call-lint + + call-codeql: + name: CodeQL + if: ${{ always() }} + uses: ./.github/workflows/codeql.yml + needs: call-lint + \ No newline at end of file diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml new file mode 100644 index 000000000..eeda797a5 --- /dev/null +++ b/.github/workflows/push.yml @@ -0,0 +1,28 @@ +name: Push + +on: + push: + branches: [main] + +jobs: + call-pre: + name: .Pre + uses: ./.github/workflows/.pre.yml + + call-lint: + name: Lint + uses: ./.github/workflows/lint.yml + needs: call-pre + + call-test: + name: Test + if: ${{ always() }} + uses: ./.github/workflows/test.yml + needs: call-lint + + call-codeql: + name: CodeQL + if: ${{ always() }} + uses: ./.github/workflows/codeql.yml + needs: call-lint + \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cb915dd15..a12214a28 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,64 +1,38 @@ name: Test on: - push: - branches: [main] - pull_request: - branches: [main] - -env: - SBL_DEV_PORT: "8899" - SBL_OIDC_AUTHORITY: "http://localhost:8880/realms/regtech" - SBL_OIDC_CLIENT_ID: "regtech-client" - SBL_OIDC_REDIRECT_URI: "http://localhost:${SBL_DEV_PORT}/filing" - SBL_REGTECH_BASE_URL: "http://localhost:8881" - SBL_MAIL_BASE_URL: "http://localhost:8765" - SBL_FILING_BASE_URL: "http://localhost:8882" - SBL_LOGOUT_REDIRECT_URL: "" - SBL_VALIDATION_TIMEOUT_SECONDS: "1200" - SBL_LONGPOLLING_DELAY_SECONDS: "backoff" - SBL_UPLOAD_FILE_SIZE_LIMIT_BYTES: "50000000" - SBL_ENABLE_PLAYWRIGHT_TEST_SETTINGS: "false" - SBL_PLAYWRIGHT_TEST_TARGET: "http://localhost:8899" - SBL_PLAYWRIGHT_TEST_KC_TARGET: "http://localhost:8880/" - SBL_PLAYWRIGHT_TEST_KC_REALM: "regtech" - SBL_PLAYWRIGHT_TEST_KC_CLI_USERNAME: "admin" - SBL_PLAYWRIGHT_TEST_KC_CLI_CLIENT_ID: "admin-cli" - SBL_PLAYWRIGHT_TEST_KC_CLI_CLIENT_SECRET: "local_test_only" - SBL_PLAYWRIGHT_TEST_KC_CLI_GRANT_TYPE: "client_credentials" - SBL_PLAYWRIGHT_TEST_KC_ADMIN_USERNAME: "admin1" - SBL_PLAYWRIGHT_TEST_KC_ADMIN_PASSWORD: "admin" - SBL_PLAYWRIGHT_TEST_KC_ADMIN_CLIENT_ID: "regtech-client" - SBL_PLAYWRIGHT_TEST_KC_ADMIN_GRANT_TYPE: "password" + workflow_call: jobs: - React: + react: + name: React runs-on: ubuntu-latest - steps: - uses: actions/checkout@v4 - + - uses: ./.github/actions/setvars - uses: actions/setup-node@v4 with: - node-version: '18' + node-version: '20' + cache: 'yarn' + cache-dependency-path: ./yarn.lock - - name: Clean Yarn cache - run: yarn cache clean - - name: Install dependencies run: yarn - name: Run React tests run: yarn test:ci - Cypress: - runs-on: ubuntu-latest + cypress: + name: Cypress + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - + - uses: ./.github/actions/setvars - uses: actions/setup-node@v4 with: - node-version: '18' + node-version: '20' + cache: 'yarn' + cache-dependency-path: ./yarn.lock - name: Install dependencies run: yarn diff --git a/buildspec.yml b/buildspec.yml index 0c68ca9a0..99d3ec160 100644 --- a/buildspec.yml +++ b/buildspec.yml @@ -7,14 +7,14 @@ env: IMAGE_SCANNER_SECRET: cfpb/team/regtech/image-scanner-creds SMTP_CREDS_SECRET: cfpb/team/regtech/smtp-ses-creds secrets-manager: - EMAIL_TO: "${CONTACTS_SECRET}:developers_all" - IMAGE_SCANNER_URL: "${IMAGE_SCANNER_SECRET}:url" - IMAGE_SCANNER_USERNAME: "${IMAGE_SCANNER_SECRET}:username" - IMAGE_SCANNER_PASSWORD: "${IMAGE_SCANNER_SECRET}:password" - SMTP_HOST: "${SMTP_CREDS_SECRET}:mail_server" - SMTP_PORT: "${SMTP_CREDS_SECRET}:smtp_port" - SMTP_USERNAME: "${SMTP_CREDS_SECRET}:username" - SMTP_PASSWORD: "${SMTP_CREDS_SECRET}:password" + EMAIL_TO: '${CONTACTS_SECRET}:developers_all' + IMAGE_SCANNER_URL: '${IMAGE_SCANNER_SECRET}:url' + IMAGE_SCANNER_USERNAME: '${IMAGE_SCANNER_SECRET}:username' + IMAGE_SCANNER_PASSWORD: '${IMAGE_SCANNER_SECRET}:password' + SMTP_HOST: '${SMTP_CREDS_SECRET}:mail_server' + SMTP_PORT: '${SMTP_CREDS_SECRET}:smtp_port' + SMTP_USERNAME: '${SMTP_CREDS_SECRET}:username' + SMTP_PASSWORD: '${SMTP_CREDS_SECRET}:password' phases: install: diff --git a/e2e/test-data/point-of-contact/point-of-contact-data-1.json b/e2e/test-data/point-of-contact/point-of-contact-data-1.json index 86fce828e..00adf549a 100644 --- a/e2e/test-data/point-of-contact/point-of-contact-data-1.json +++ b/e2e/test-data/point-of-contact/point-of-contact-data-1.json @@ -11,4 +11,4 @@ "phone_number": "555-555-5555", "phone_ext": "8942", "email": "point_of_contact_email@email.test" -} \ No newline at end of file +} diff --git a/e2e/utils/createDomainAssociation.ts b/e2e/utils/createDomainAssociation.ts index 106c5cfad..7f6164367 100644 --- a/e2e/utils/createDomainAssociation.ts +++ b/e2e/utils/createDomainAssociation.ts @@ -21,7 +21,12 @@ export default async function createDomainAssociation({ try { await axios.request(optionsForDomainAssociation); } catch (error) { - console.error('error when creating a domain/institution association :>> ', error); + // Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 + // eslint-disable-next-line no-console + console.error( + 'error when creating a domain/institution association :>>', + error, + ); throw error; } } diff --git a/e2e/utils/createInstitution.ts b/e2e/utils/createInstitution.ts index 6c45e1b99..5608fc54a 100644 --- a/e2e/utils/createInstitution.ts +++ b/e2e/utils/createInstitution.ts @@ -40,7 +40,7 @@ export default async function createInstitution({ parent_rssd_id: 12_745, top_holder_lei: '01274TOPHOLDERLEI123', top_holder_legal_name: 'TOP HOLDER LEI 123', - top_holder_rssd_id: 123456, + top_holder_rssd_id: 123_456, }, // eslint-enable @typescript-eslint/no-magic-numbers unicorn/numeric-separators-style }; diff --git a/e2e/utils/createKeycloakUser.ts b/e2e/utils/createKeycloakUser.ts index 334ef02e8..1a2c4d240 100644 --- a/e2e/utils/createKeycloakUser.ts +++ b/e2e/utils/createKeycloakUser.ts @@ -4,6 +4,8 @@ import { config } from './authConstants'; export class KeycloakService { private readonly kcAdminClient: KeycloakAdminClient; + // Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 + // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility constructor() { this.kcAdminClient = new KeycloakAdminClient({ baseUrl: config.target, diff --git a/e2e/utils/getKeycloakToken.ts b/e2e/utils/getKeycloakToken.ts index f01a5d185..9956f4224 100644 --- a/e2e/utils/getKeycloakToken.ts +++ b/e2e/utils/getKeycloakToken.ts @@ -14,12 +14,17 @@ export default async function getAdminKeycloakToken(): Promise { data: encodedParameters, }; try { + // Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const { data } = await axios.request(optionsForGetAdminKeycloakToken); + // Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access return data.access_token as string; } catch (error) { + // Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 // eslint-disable-next-line no-console console.log( - 'error when trying to fetch an admin token from keycloak :>> ', + 'error when trying to fetch an admin token from keycloak :>>', error, ); throw error; diff --git a/package.json b/package.json index 20b213906..dad21a382 100644 --- a/package.json +++ b/package.json @@ -26,14 +26,16 @@ "test:e2e:ci": "vite build && yarn preview:test 'cypress run --record'", "format": "prettier -uw --cache .", "run-tsc": "tsc", - "run-eslint": "eslint --cache --fix --ignore-path .gitignore --ext .ts,.tsx .", + "run-eslint": "eslint --cache --fix --ignore-path .gitignore --ignore-path .eslintignore --ext .ts,.tsx .", "run-stylelint": "stylelint --cache --fix --ignore-path .gitignore **/*.css", + "run-prettier": "prettier -uc --cache .", "lint": "run-p run-tsc run-eslint run-stylelint", "validate": "run-p lint test:ci test:e2e:headless" }, "dependencies": { "@hookform/resolvers": "^3.2.0", "@playwright/test": "^1.45.0", + "@s3pweb/keycloak-admin-client-cjs": "^22.0.1", "@tanstack/react-query": "^4.29.7", "@tanstack/react-table": "^8.9.1", "axios": "^1.7.4", @@ -64,7 +66,6 @@ "@import-meta-env/typescript": "^0.3.3", "@import-meta-env/unplugin": "^0.5.1", "@nabla/vite-plugin-eslint": "1.5.0", - "@s3pweb/keycloak-admin-client-cjs": "^22.0.1", "@tailwindcss/forms": "0.5.3", "@testing-library/dom": "8.20.0", "@testing-library/jest-dom": "5.16.5", diff --git a/src/App.tsx b/src/App.tsx index 8fc9992e1..4a80055fe 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -236,7 +236,13 @@ export default function App(): ReactElement { }> - }> + + } + > } /> {import.meta.env.DEV ? ( - - {`# H1\n## H2\n### H3`} - + {`# H1\n## H2\n### H3`} {`**bold text**\n\n*italicized text*\n\n> blockquote\n`} {`~~strikethrough~~`} {`1. First item\n2. Second item\n4. Third item`} {`- First item\n- Second item\n- Third item`} {/* // eslint-disable-next-line react/jsx-curly-brace-presence */} - {"`code`"} - {"---"} - {"[Markdown Guide](https://www.markdownguide.org)"} - {"![alt text](https://www.markdownguide.org/assets/images/tux.png)"} + {'`code`'} + {'---'} + + {'[Markdown Guide](https://www.markdownguide.org)'} + + + {'![alt text](https://www.markdownguide.org/assets/images/tux.png)'} + {`## Table\n\n| Syntax | Description |\n| ----------- | ----------- |\n| Header | Title |\n| Paragraph | Text |\n\n`} - {"## Codeblock\n\n```\n{\n'firstName': 'John',\n 'lastName': 'Smith',\n 'age': 25\n}\n```"} + + { + "## Codeblock\n\n```\n{\n'firstName': 'John',\n 'lastName': 'Smith',\n 'age': 25\n}\n```" + } + diff --git a/src/components/BetaAndLegalNotice.tsx b/src/components/BetaAndLegalNotice.tsx index 0f2e55762..bf6e8a8dc 100644 --- a/src/components/BetaAndLegalNotice.tsx +++ b/src/components/BetaAndLegalNotice.tsx @@ -9,7 +9,7 @@ export default function BetaAndLegalNotice(): ReactElement { message='This is a beta for the Small Business Lending Data Filing Platform' status='warning' // TODO: allow setting to strip heading formatting in Alerts post-mvp - // @ts-expect-error - See issue: https://github.com/cfpb/design-system-react/issues/351 + // @@ts-expect-error - See issue: https://github.com/cfpb/design-system-react/issues/351 // headingLevel={null} > diff --git a/src/components/Link.utils.tsx b/src/components/Link.utils.tsx index 176d5f469..092e07685 100644 --- a/src/components/Link.utils.tsx +++ b/src/components/Link.utils.tsx @@ -40,6 +40,7 @@ export function IconExternalLink(): ReactElement { return ( <> {' '} + {/* @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 */} ); diff --git a/src/pages/AuthenticatedLanding/MailingListSignup.tsx b/src/pages/AuthenticatedLanding/MailingListSignup.tsx index 3ba682330..56658504c 100644 --- a/src/pages/AuthenticatedLanding/MailingListSignup.tsx +++ b/src/pages/AuthenticatedLanding/MailingListSignup.tsx @@ -11,7 +11,6 @@ export function MailingListSignup(): JSX.Element { specific to small business lending.

- {/* @ts-expect-error Part of code cleanup for post-mvp see: https://github.com/cfpb/sbl-frontend/issues/717 */} Visit homepage diff --git a/src/pages/Filing/FilingApp/FileSubmission.data.tsx b/src/pages/Filing/FilingApp/FileSubmission.data.tsx index 2159ae6b5..ee5ac2be4 100644 --- a/src/pages/Filing/FilingApp/FileSubmission.data.tsx +++ b/src/pages/Filing/FilingApp/FileSubmission.data.tsx @@ -124,6 +124,7 @@ export function MustUploadFirstAlert(): JSX.Element { status='error' aria-live='polite' aria-atomic='true' + // @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 headingLevel='' message='Your file must be successfully uploaded and validation checks performed to continue to the next step.' /> diff --git a/src/pages/Filing/FilingApp/FilingErrors/index.tsx b/src/pages/Filing/FilingApp/FilingErrors/index.tsx index 0e0f39349..0ab60261f 100644 --- a/src/pages/Filing/FilingApp/FilingErrors/index.tsx +++ b/src/pages/Filing/FilingApp/FilingErrors/index.tsx @@ -234,7 +234,9 @@ function FilingErrors(): JSX.Element { id='single-field-errors' heading={`Single-field errors: ${singleFieldRowErrorsCount.toLocaleString()} found`} fieldArray={singleFieldErrorsUsed} + // @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 lei={lei} + // @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 filingPeriod={year} submissionId={actualDataGetSubmissionLatest.id} bottomMargin={Boolean(isStep2)} @@ -251,7 +253,9 @@ function FilingErrors(): JSX.Element { id='multi-field-errors' heading={`Multi-field errors: ${multiFieldRowErrorsCount.toLocaleString()} found`} fieldArray={logicErrorsMulti} + // @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 lei={lei} + // @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 filingPeriod={year} submissionId={actualDataGetSubmissionLatest.id} bottomMargin @@ -265,7 +269,9 @@ function FilingErrors(): JSX.Element { id='register-level-errors' heading={`Register-level errors: ${registerLevelRowErrorsCount.toLocaleString()} found`} fieldArray={registerErrors} + // @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 lei={lei} + // @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 filingPeriod={year} submissionId={actualDataGetSubmissionLatest.id} > diff --git a/src/pages/Filing/FilingApp/FilingProtectedRoute.tsx b/src/pages/Filing/FilingApp/FilingProtectedRoute.tsx index 109b49eb4..b8d03d3b5 100644 --- a/src/pages/Filing/FilingApp/FilingProtectedRoute.tsx +++ b/src/pages/Filing/FilingApp/FilingProtectedRoute.tsx @@ -31,9 +31,11 @@ export function FilingProtectedRoute({ if (isLoading) return ; if (error) + // @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment return ; + // @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 const { nextStepIndex } = getFilingSteps(submission, filing); const targetPage = location.pathname.split('/').slice(NegativeOne)[Zero]; diff --git a/src/pages/Filing/FilingApp/FilingWarnings/index.tsx b/src/pages/Filing/FilingApp/FilingWarnings/index.tsx index 1e585d2fa..75e219f07 100644 --- a/src/pages/Filing/FilingApp/FilingWarnings/index.tsx +++ b/src/pages/Filing/FilingApp/FilingWarnings/index.tsx @@ -189,7 +189,9 @@ function FilingWarnings(): JSX.Element { id='single-field-warnings' heading={`Single-field warnings: ${singleFieldRowWarningsCount.toLocaleString()} found`} fieldArray={logicWarningsSingle} + // @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 lei={lei} + // @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 filingPeriod={year} submissionId={submission.id} isWarning @@ -205,7 +207,9 @@ function FilingWarnings(): JSX.Element { id='multi-field-warnings' heading={`Multi-field warnings: ${multiFieldRowWarningsCount.toLocaleString()} found`} fieldArray={logicWarningsMulti} + // @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 lei={lei} + // @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 filingPeriod={year} submissionId={submission.id} isWarning diff --git a/src/pages/Filing/FilingApp/InstitutionProtectedRoute.tsx b/src/pages/Filing/FilingApp/InstitutionProtectedRoute.tsx index 1b939f1ec..a2b65367c 100644 --- a/src/pages/Filing/FilingApp/InstitutionProtectedRoute.tsx +++ b/src/pages/Filing/FilingApp/InstitutionProtectedRoute.tsx @@ -27,6 +27,7 @@ export function InstitutionProtectedRoute({ return ( diff --git a/src/pages/Filing/UpdateFinancialProfile/updateFinancialProfile.less b/src/pages/Filing/UpdateFinancialProfile/updateFinancialProfile.less index 3ab27c6b9..5ec7822de 100644 --- a/src/pages/Filing/UpdateFinancialProfile/updateFinancialProfile.less +++ b/src/pages/Filing/UpdateFinancialProfile/updateFinancialProfile.less @@ -1,4 +1,4 @@ // TODO: Fix this in DSR: https://github.com/cfpb/design-system-react/issues/315 #additional_details { resize: vertical; -} \ No newline at end of file +} diff --git a/src/pages/FilingDetails/states.json b/src/pages/FilingDetails/states.json index ea527150b..055addb58 100644 --- a/src/pages/FilingDetails/states.json +++ b/src/pages/FilingDetails/states.json @@ -1,61 +1,61 @@ { "states": [ - { "label": "Alabama (AL)", "value": "AL" }, - { "label": "Alaska (AK)", "value": "AK" }, - { "label": "Arizona (AZ)", "value": "AZ" }, - { "label": "Arkansas (AR)", "value": "AR" }, - { "label": "American Samoa (AS)", "value": "AS" }, - { "label": "California (CA)", "value": "CA" }, - { "label": "Colorado (CO)", "value": "CO" }, - { "label": "Connecticut (CT)", "value": "CT" }, - { "label": "Delaware (DE)", "value": "DE" }, - { "label": "Florida (FL)", "value": "FL" }, - { "label": "Georgia (GA)", "value": "GA" }, - { "label": "Guam (GU)", "value": "GU" }, - { "label": "Hawaii (HI)", "value": "HI" }, - { "label": "Idaho (ID)", "value": "ID" }, - { "label": "Illinois (IL)", "value": "IL" }, - { "label": "Indiana (IN)", "value": "IN" }, - { "label": "Iowa (IA)", "value": "IA" }, - { "label": "Kansas (KS)", "value": "KS" }, - { "label": "Kentucky (KY)", "value": "KY" }, - { "label": "Louisiana (LA)", "value": "LA" }, - { "label": "Maine (ME)", "value": "ME" }, - { "label": "Maryland (MD)", "value": "MD" }, - { "label": "Massachusetts (MA)", "value": "MA" }, - { "label": "Michigan (MI)", "value": "MI" }, - { "label": "Minnesota (MN)", "value": "MN" }, - { "label": "Mississippi (MS)", "value": "MS" }, - { "label": "Missouri (MO)", "value": "MO" }, - { "label": "Montana (MT)", "value": "MT" }, - { "label": "Nebraska (NE)", "value": "NE" }, - { "label": "Nevada (NV)", "value": "NV" }, - { "label": "New Hampshire (NH)", "value": "NH" }, - { "label": "New Jersey (NJ)", "value": "NJ" }, - { "label": "New Mexico (NM)", "value": "NM" }, - { "label": "New York (NY)", "value": "NY" }, - { "label": "North Carolina (NC)", "value": "NC" }, - { "label": "North Dakota (ND)", "value": "ND" }, - { "label": "Northern Mariana Islands (MP)", "value": "MP" }, - { "label": "Ohio (OH)", "value": "OH" }, - { "label": "Oklahoma (OK)", "value": "OK" }, - { "label": "Oregon (OR)", "value": "OR" }, - { "label": "Pennsylvania (PA)", "value": "PA" }, - { "label": "Puerto Rico (PR)", "value": "PR" }, - { "label": "Rhode Island (RI)", "value": "RI" }, - { "label": "South Carolina (SC)", "value": "SC" }, - { "label": "South Dakota (SD)", "value": "SD" }, - { "label": "Tennessee (TN)", "value": "TN" }, - { "label": "Texas (TX)", "value": "TX" }, - { "label": "United States Minor Outlying Islands (UM)", "value": "UM" }, - { "label": "Utah (UT)", "value": "UT" }, - { "label": "Vermont (VT)", "value": "VT" }, - { "label": "Virgin Islands, U.S. (VI)", "value": "VI" }, - { "label": "Virginia (VA)", "value": "VA" }, - { "label": "Washington (WA)", "value": "WA" }, - { "label": "Washington D.C. (DC)", "value": "DC" }, - { "label": "West Virginia (WV)", "value": "WV" }, - { "label": "Wisconsin (WI)", "value": "WI" }, - { "label": "Wyoming (WY)", "value": "WY" } -] -} \ No newline at end of file + { "label": "Alabama (AL)", "value": "AL" }, + { "label": "Alaska (AK)", "value": "AK" }, + { "label": "Arizona (AZ)", "value": "AZ" }, + { "label": "Arkansas (AR)", "value": "AR" }, + { "label": "American Samoa (AS)", "value": "AS" }, + { "label": "California (CA)", "value": "CA" }, + { "label": "Colorado (CO)", "value": "CO" }, + { "label": "Connecticut (CT)", "value": "CT" }, + { "label": "Delaware (DE)", "value": "DE" }, + { "label": "Florida (FL)", "value": "FL" }, + { "label": "Georgia (GA)", "value": "GA" }, + { "label": "Guam (GU)", "value": "GU" }, + { "label": "Hawaii (HI)", "value": "HI" }, + { "label": "Idaho (ID)", "value": "ID" }, + { "label": "Illinois (IL)", "value": "IL" }, + { "label": "Indiana (IN)", "value": "IN" }, + { "label": "Iowa (IA)", "value": "IA" }, + { "label": "Kansas (KS)", "value": "KS" }, + { "label": "Kentucky (KY)", "value": "KY" }, + { "label": "Louisiana (LA)", "value": "LA" }, + { "label": "Maine (ME)", "value": "ME" }, + { "label": "Maryland (MD)", "value": "MD" }, + { "label": "Massachusetts (MA)", "value": "MA" }, + { "label": "Michigan (MI)", "value": "MI" }, + { "label": "Minnesota (MN)", "value": "MN" }, + { "label": "Mississippi (MS)", "value": "MS" }, + { "label": "Missouri (MO)", "value": "MO" }, + { "label": "Montana (MT)", "value": "MT" }, + { "label": "Nebraska (NE)", "value": "NE" }, + { "label": "Nevada (NV)", "value": "NV" }, + { "label": "New Hampshire (NH)", "value": "NH" }, + { "label": "New Jersey (NJ)", "value": "NJ" }, + { "label": "New Mexico (NM)", "value": "NM" }, + { "label": "New York (NY)", "value": "NY" }, + { "label": "North Carolina (NC)", "value": "NC" }, + { "label": "North Dakota (ND)", "value": "ND" }, + { "label": "Northern Mariana Islands (MP)", "value": "MP" }, + { "label": "Ohio (OH)", "value": "OH" }, + { "label": "Oklahoma (OK)", "value": "OK" }, + { "label": "Oregon (OR)", "value": "OR" }, + { "label": "Pennsylvania (PA)", "value": "PA" }, + { "label": "Puerto Rico (PR)", "value": "PR" }, + { "label": "Rhode Island (RI)", "value": "RI" }, + { "label": "South Carolina (SC)", "value": "SC" }, + { "label": "South Dakota (SD)", "value": "SD" }, + { "label": "Tennessee (TN)", "value": "TN" }, + { "label": "Texas (TX)", "value": "TX" }, + { "label": "United States Minor Outlying Islands (UM)", "value": "UM" }, + { "label": "Utah (UT)", "value": "UT" }, + { "label": "Vermont (VT)", "value": "VT" }, + { "label": "Virgin Islands, U.S. (VI)", "value": "VI" }, + { "label": "Virginia (VA)", "value": "VA" }, + { "label": "Washington (WA)", "value": "WA" }, + { "label": "Washington D.C. (DC)", "value": "DC" }, + { "label": "West Virginia (WV)", "value": "WV" }, + { "label": "Wisconsin (WI)", "value": "WI" }, + { "label": "Wyoming (WY)", "value": "WY" } + ] +} diff --git a/src/pages/ProfileForm/CreateProfileForm/index.tsx b/src/pages/ProfileForm/CreateProfileForm/index.tsx index 5a8ce2746..0194ee0d4 100644 --- a/src/pages/ProfileForm/CreateProfileForm/index.tsx +++ b/src/pages/ProfileForm/CreateProfileForm/index.tsx @@ -95,7 +95,9 @@ function CreateProfileForm(): JSX.Element { }); // 2.) Sending the financial institutions list to the mail api await mutateSubmitUserProfileFi({ formFieldsObject: preFormattedData }); - navigate('/profile/complete/summary/submitted', { state: { scenario: scenarios.Warning4 } }); + navigate('/profile/complete/summary/submitted', { + state: { scenario: scenarios.Warning4 }, + }); } catch (error) { // eslint-disable-next-line no-console console.log(error); diff --git a/src/pages/ProfileForm/ProfileFormUtils.ts b/src/pages/ProfileForm/ProfileFormUtils.ts index 7739a9bc8..9919174ec 100644 --- a/src/pages/ProfileForm/ProfileFormUtils.ts +++ b/src/pages/ProfileForm/ProfileFormUtils.ts @@ -2,11 +2,9 @@ import { scroller } from 'react-scroll'; import type { - FormattedPointOfContactSchema, FormattedUserProfileObjectType, InstitutionDetailsApiCheckedType, InstitutionDetailsApiType, - PointOfContactSchema, ValidationSchema, } from 'types/formTypes'; diff --git a/src/pages/ProfileForm/Step1Form/Step1FormDropdownContainer.tsx b/src/pages/ProfileForm/Step1Form/Step1FormDropdownContainer.tsx index c8beb0f6b..06bb9a23b 100644 --- a/src/pages/ProfileForm/Step1Form/Step1FormDropdownContainer.tsx +++ b/src/pages/ProfileForm/Step1Form/Step1FormDropdownContainer.tsx @@ -1,46 +1,46 @@ // Part of code cleanup for post-mvp see: https://github.com/cfpb/sbl-frontend/issues/717 /* eslint-disable prettier/prettier */ -import InputErrorMessage from "components/InputErrorMessage"; -import FormParagraph from "components/FormParagraph"; +import InputErrorMessage from 'components/InputErrorMessage'; +import FormParagraph from 'components/FormParagraph'; import { Dropdown } from 'design-system-react'; -import type { GroupBase, Props } from "react-select"; - - +import type { GroupBase, Props } from 'react-select'; interface Step1FormDropdownContainerProperties { error: string; } - function Step1FormDropdownContainer< OptionType, IsMulti extends boolean = false, - GroupType extends GroupBase = GroupBase + GroupType extends GroupBase = GroupBase, >({ error, onChange, ...properties -}: Props & Step1FormDropdownContainerProperties): JSX.Element { - +}: Props & + Step1FormDropdownContainerProperties): JSX.Element { return ( <>
- If the financial institution you are authorized to file for is not included above or if you are authorized to file for additional institutions, search by LEI and select your institution. + If the financial institution you are authorized to file for is not + included above or if you are authorized to file for additional + institutions, search by LEI and select your institution. -
- {error ?
- {error} -
: null} + {error ? ( +
+ {error} +
+ ) : null} ); } - -export default Step1FormDropdownContainer; \ No newline at end of file +export default Step1FormDropdownContainer; diff --git a/src/pages/Summary/SummaryRoutes.tsx b/src/pages/Summary/SummaryRoutes.tsx index aafb83c22..5bfde5322 100644 --- a/src/pages/Summary/SummaryRoutes.tsx +++ b/src/pages/Summary/SummaryRoutes.tsx @@ -1,8 +1,11 @@ +// Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 +/* eslint-disable import/prefer-default-export */ + // List the routes which lead to the summary component // Implemented for Google Analytic purposes export const SummaryRoutesList = [ '/institution/:lei/update/summary/updated', -'/profile/complete/summary/submitted', -'/profile/complete/summary/deniedDomain' -]; \ No newline at end of file + '/profile/complete/summary/submitted', + '/profile/complete/summary/deniedDomain', +]; diff --git a/src/utils/useInstitutionVerifyAssociation.tsx b/src/utils/useInstitutionVerifyAssociation.tsx index 0ccbdbc59..785a797e0 100644 --- a/src/utils/useInstitutionVerifyAssociation.tsx +++ b/src/utils/useInstitutionVerifyAssociation.tsx @@ -30,6 +30,7 @@ export const useInstitutionVerifyAssociation = (): { return { isLoading, + // @ts-expect-error Part of evaluation for linter issues see: https://github.com/cfpb/sbl-frontend/issues/1039 error, isAssociated, }; diff --git a/src/utils/useWidthMatch.ts b/src/utils/useWidthMatch.ts index 36e8019dc..8c6edf536 100644 --- a/src/utils/useWidthMatch.ts +++ b/src/utils/useWidthMatch.ts @@ -7,7 +7,7 @@ function useWidthMatch(query: string): boolean { const mediaQuery = window.matchMedia(query); setMatches(mediaQuery.matches); // Initial check - const handleChange = (event: MediaQueryListEvent) => { + const handleChange = (event: MediaQueryListEvent): void => { setMatches(event.matches); }; diff --git a/tailwind.config.js b/tailwind.config.js index 2499ea55d..e67b1bc98 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -31,9 +31,8 @@ const config = { bpSM: '601px', bpMED: '901px', bpLG: '1021px', - bpXL: '1201px' - - } + bpXL: '1201px', + }, }, }, experimental: { optimizeUniversalDefaults: true }, diff --git a/vite.config.ts b/vite.config.ts index fd8c794a6..941b556cf 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,7 @@ /* eslint-disable unicorn/no-abusive-eslint-disable */ /* eslint-disable */ /// -import importMetaEnv from "@import-meta-env/unplugin"; +import importMetaEnv from '@import-meta-env/unplugin'; import eslintPlugin from '@nabla/vite-plugin-eslint'; import react from '@vitejs/plugin-react'; import { defineConfig, loadEnv } from 'vite'; @@ -58,7 +58,7 @@ export default async ({ mode }) => { svgr(), tsconfigPaths(), react(), - importMetaEnv.vite({ example: ".env.example"}), + importMetaEnv.vite({ example: '.env.example' }), ...(mode === 'test' ? [] : [