From 15e1c48725edb259e30f49a1c5fdffb7b8d9dfc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Musia=C5=82?= Date: Fri, 10 Jul 2026 16:48:42 +0200 Subject: [PATCH 1/8] Fix add bank account back --- .../Navigation/helpers/getPathFromState.ts | 15 +++++++++++ tests/navigation/getPathFromStateTests.ts | 25 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/src/libs/Navigation/helpers/getPathFromState.ts b/src/libs/Navigation/helpers/getPathFromState.ts index f09fcd8bcf29..41e6f9e986e8 100644 --- a/src/libs/Navigation/helpers/getPathFromState.ts +++ b/src/libs/Navigation/helpers/getPathFromState.ts @@ -166,8 +166,23 @@ function getPathFromStateWithDynamicRoute(state: State): string { return `${basePathWithoutQuery}/${suffixPath}${queryString ? `?${queryString}` : ''}`; } +/** An unresolved NavigatorScreenParams route that React Navigation stored verbatim instead of resolving to a path. */ +type UnresolvedNavigatorScreenParams = {screen: string; path: string}; + +/** Detects unresolved NavigatorScreenParams, whose real target lives in `params.path` (RN would otherwise emit `/?params=[object Object]`). */ +function hasUnresolvedNavigatorScreenParams(params: unknown): params is UnresolvedNavigatorScreenParams { + return ( + typeof params === 'object' && params !== null && 'screen' in params && typeof params.screen === 'string' && 'path' in params && typeof params.path === 'string' && params.path !== '' + ); +} + function getPathFromState(state: State): string { const focusedRoute = findFocusedRouteWithOnyxTabGuard(state); + + if (hasUnresolvedNavigatorScreenParams(focusedRoute?.params)) { + return focusedRoute.params.path; + } + const screenName = focusedRoute?.name ?? ''; if (isDynamicRouteScreen(screenName as Screen)) { diff --git a/tests/navigation/getPathFromStateTests.ts b/tests/navigation/getPathFromStateTests.ts index 7b492f8bd6fd..e914b011c063 100644 --- a/tests/navigation/getPathFromStateTests.ts +++ b/tests/navigation/getPathFromStateTests.ts @@ -100,6 +100,31 @@ describe('getPathFromState', () => { expect(mockRNGetPathFromState).toHaveBeenCalledWith(state, expect.anything()); }); + it('should return embedded path when focused route params are unresolved NavigatorScreenParams', () => { + const embeddedPath = '/search/r/4578119764473728?backTo=/search?q=type%3Aexpense-report%20sortBy%3Adate%20sortOrder%3Adesc'; + const state = buildState([ + { + name: 'TabNavigator', + state: buildState([ + { + name: 'ReportsSplitNavigator', + params: { + initial: 'true', + screen: 'SearchMoneyRequestReport', + params: '[object Object]', + path: embeddedPath, + }, + }, + ]), + }, + ]); + + const result = getPathFromState(state as PartialState); + + expect(result).toBe(embeddedPath); + expect(mockRNGetPathFromState).not.toHaveBeenCalled(); + }); + it('should handle state where no route is focused', () => { mockRNGetPathFromState.mockReturnValue('/fallback'); From bae18e487a116e2aac2132d11593608cc058b8c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Musia=C5=82?= Date: Tue, 21 Jul 2026 10:27:30 +0200 Subject: [PATCH 2/8] tighten the unhydrated route check --- .../Navigation/helpers/getPathFromState.ts | 14 ++++++-- tests/navigation/getPathFromStateTests.ts | 33 +++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/libs/Navigation/helpers/getPathFromState.ts b/src/libs/Navigation/helpers/getPathFromState.ts index 41e6f9e986e8..2f582e8b7c20 100644 --- a/src/libs/Navigation/helpers/getPathFromState.ts +++ b/src/libs/Navigation/helpers/getPathFromState.ts @@ -169,17 +169,25 @@ function getPathFromStateWithDynamicRoute(state: State): string { /** An unresolved NavigatorScreenParams route that React Navigation stored verbatim instead of resolving to a path. */ type UnresolvedNavigatorScreenParams = {screen: string; path: string}; -/** Detects unresolved NavigatorScreenParams, whose real target lives in `params.path` (RN would otherwise emit `/?params=[object Object]`). */ +/** Detects RN's deep-link hint chain (`{screen, params/initial, path}`) stored verbatim on a route that is not hydrated yet; its real target lives in `params.path`. */ function hasUnresolvedNavigatorScreenParams(params: unknown): params is UnresolvedNavigatorScreenParams { return ( - typeof params === 'object' && params !== null && 'screen' in params && typeof params.screen === 'string' && 'path' in params && typeof params.path === 'string' && params.path !== '' + typeof params === 'object' && + params !== null && + 'screen' in params && + typeof params.screen === 'string' && + 'path' in params && + typeof params.path === 'string' && + params.path.startsWith('/') && + ('params' in params || 'initial' in params) ); } function getPathFromState(state: State): string { const focusedRoute = findFocusedRouteWithOnyxTabGuard(state); - if (hasUnresolvedNavigatorScreenParams(focusedRoute?.params)) { + // Return the embedded path of an unresolved hint chain before RN serializes it to `/?params=[object Object]`; once `state` exists, the hydrated state is the source of truth. + if (focusedRoute && !focusedRoute.state && hasUnresolvedNavigatorScreenParams(focusedRoute.params)) { return focusedRoute.params.path; } diff --git a/tests/navigation/getPathFromStateTests.ts b/tests/navigation/getPathFromStateTests.ts index e914b011c063..8bf4bbfb7978 100644 --- a/tests/navigation/getPathFromStateTests.ts +++ b/tests/navigation/getPathFromStateTests.ts @@ -125,6 +125,39 @@ describe('getPathFromState', () => { expect(mockRNGetPathFromState).not.toHaveBeenCalled(); }); + it('should not treat params as unresolved NavigatorScreenParams without a params/initial hint key', () => { + const expectedPath = '/standard/path'; + mockRNGetPathFromState.mockReturnValue(expectedPath); + + const state = buildState([ + { + name: 'ReportsSplitNavigator', + params: {screen: 'SomeScreen', path: '/some/path'}, + }, + ]); + + const result = getPathFromState(state as PartialState); + + expect(result).toBe(expectedPath); + expect(mockRNGetPathFromState).toHaveBeenCalled(); + }); + + it('should ignore stale NavigatorScreenParams hint keys on a hydrated tab-host route', () => { + const state = buildState([ + {name: 'WalletScreen'}, + { + name: 'SplitExpenseScreen', + params: {reportID: '123', initial: 'true', screen: 'SomeScreen', params: '[object Object]', path: '/stale/path'}, + state: buildState([{name: 'AmountTab'}, {name: 'ScanTab'}], 0), + }, + ]); + mockRNGetPathFromState.mockImplementation(staticBasePaths.WalletScreen); + + const result = getPathFromState(state as PartialState); + + expect(result).toBe('/settings/wallet/split-expense/123/amount'); + }); + it('should handle state where no route is focused', () => { mockRNGetPathFromState.mockReturnValue('/fallback'); From 059032e5594763f7e0d6f0b66afcf58726818df5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Musia=C5=82?= Date: Tue, 21 Jul 2026 11:05:36 +0200 Subject: [PATCH 3/8] fix spell --- cspell.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cspell.json b/cspell.json index d5cf1d79cb0e..18c792e284c6 100644 --- a/cspell.json +++ b/cspell.json @@ -25,8 +25,11 @@ "AUTOREPORTING", "AVURL", "Accelo", + "Adate", "Addendums", + "Adesc", "Aeroplan", + "Aexpense", "Aircall", "Airplus", "Airwallex", From dfd639fd5e50c88650d29336c340e408f4d194d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Musia=C5=82?= Date: Tue, 21 Jul 2026 11:11:59 +0200 Subject: [PATCH 4/8] address ai review --- src/libs/Navigation/helpers/getPathFromState.ts | 5 +++-- tests/navigation/getPathFromStateTests.ts | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/libs/Navigation/helpers/getPathFromState.ts b/src/libs/Navigation/helpers/getPathFromState.ts index 2f582e8b7c20..c9ed9d43f99a 100644 --- a/src/libs/Navigation/helpers/getPathFromState.ts +++ b/src/libs/Navigation/helpers/getPathFromState.ts @@ -186,8 +186,9 @@ function hasUnresolvedNavigatorScreenParams(params: unknown): params is Unresolv function getPathFromState(state: State): string { const focusedRoute = findFocusedRouteWithOnyxTabGuard(state); - // Return the embedded path of an unresolved hint chain before RN serializes it to `/?params=[object Object]`; once `state` exists, the hydrated state is the source of truth. - if (focusedRoute && !focusedRoute.state && hasUnresolvedNavigatorScreenParams(focusedRoute.params)) { + // Return the embedded path of an unresolved hint chain before RN serializes it to `/?params=[object Object]`; + // Excludes hydrated routes (`state` is the source of truth) and URL-addressable screens (their `screen`/`path` params may come from a user-supplied URL query). + if (focusedRoute && !focusedRoute.state && !isScreen(focusedRoute.name) && hasUnresolvedNavigatorScreenParams(focusedRoute.params)) { return focusedRoute.params.path; } diff --git a/tests/navigation/getPathFromStateTests.ts b/tests/navigation/getPathFromStateTests.ts index 8bf4bbfb7978..c131b2677dff 100644 --- a/tests/navigation/getPathFromStateTests.ts +++ b/tests/navigation/getPathFromStateTests.ts @@ -142,6 +142,23 @@ describe('getPathFromState', () => { expect(mockRNGetPathFromState).toHaveBeenCalled(); }); + it('should not treat URL query params named screen/initial/path on an addressable screen as a navigator hint', () => { + const expectedPath = '/settings/wallet?screen=x&initial=true&path=/r/1'; + mockRNGetPathFromState.mockReturnValue(expectedPath); + + const state = buildState([ + { + name: 'WalletScreen', + params: {screen: 'x', initial: 'true', path: '/r/1'}, + }, + ]); + + const result = getPathFromState(state as PartialState); + + expect(result).toBe(expectedPath); + expect(mockRNGetPathFromState).toHaveBeenCalled(); + }); + it('should ignore stale NavigatorScreenParams hint keys on a hydrated tab-host route', () => { const state = buildState([ {name: 'WalletScreen'}, From 849e8614aed5841d78dd94e677f986a59e8ec3f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Musia=C5=82?= Date: Tue, 21 Jul 2026 11:30:26 +0200 Subject: [PATCH 5/8] address ai review --- src/libs/Navigation/helpers/getPathFromState.ts | 13 ++++++++++--- tests/navigation/getPathFromStateTests.ts | 2 ++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/libs/Navigation/helpers/getPathFromState.ts b/src/libs/Navigation/helpers/getPathFromState.ts index c9ed9d43f99a..78dca44ee155 100644 --- a/src/libs/Navigation/helpers/getPathFromState.ts +++ b/src/libs/Navigation/helpers/getPathFromState.ts @@ -1,6 +1,7 @@ import {config, normalizedConfigs, screensWithOnyxTabNavigator} from '@libs/Navigation/linkingConfig/config'; import type {State} from '@libs/Navigation/types'; +import NAVIGATORS from '@src/NAVIGATORS'; import type {Screen} from '@src/SCREENS'; import {getPathFromState as RNGetPathFromState} from '@react-navigation/native'; @@ -169,6 +170,13 @@ function getPathFromStateWithDynamicRoute(state: State): string { /** An unresolved NavigatorScreenParams route that React Navigation stored verbatim instead of resolving to a path. */ type UnresolvedNavigatorScreenParams = {screen: string; path: string}; +const navigatorNames = new Set(Object.values(NAVIGATORS)); + +/** Only navigators and non-URL-addressable hosts can carry a hint chain; URL-addressable screens may get `screen`/`path` params from a user-supplied URL query. */ +function canCarryNavigatorScreenParams(name: string): boolean { + return navigatorNames.has(name) || !isScreen(name); +} + /** Detects RN's deep-link hint chain (`{screen, params/initial, path}`) stored verbatim on a route that is not hydrated yet; its real target lives in `params.path`. */ function hasUnresolvedNavigatorScreenParams(params: unknown): params is UnresolvedNavigatorScreenParams { return ( @@ -186,9 +194,8 @@ function hasUnresolvedNavigatorScreenParams(params: unknown): params is Unresolv function getPathFromState(state: State): string { const focusedRoute = findFocusedRouteWithOnyxTabGuard(state); - // Return the embedded path of an unresolved hint chain before RN serializes it to `/?params=[object Object]`; - // Excludes hydrated routes (`state` is the source of truth) and URL-addressable screens (their `screen`/`path` params may come from a user-supplied URL query). - if (focusedRoute && !focusedRoute.state && !isScreen(focusedRoute.name) && hasUnresolvedNavigatorScreenParams(focusedRoute.params)) { + // Return the embedded path of an unresolved hint chain before RN serializes it to `/?params=[object Object]`; hydrated routes skip it (`state` is the source of truth). + if (focusedRoute && !focusedRoute.state && canCarryNavigatorScreenParams(focusedRoute.name) && hasUnresolvedNavigatorScreenParams(focusedRoute.params)) { return focusedRoute.params.path; } diff --git a/tests/navigation/getPathFromStateTests.ts b/tests/navigation/getPathFromStateTests.ts index c131b2677dff..8d67763e922b 100644 --- a/tests/navigation/getPathFromStateTests.ts +++ b/tests/navigation/getPathFromStateTests.ts @@ -11,6 +11,8 @@ jest.mock('@react-navigation/native', () => ({ jest.mock('@libs/Navigation/linkingConfig/config', () => ({ config: {}, normalizedConfigs: { + // Mirrors production: this navigator is URL-addressable (path: ROUTES.ROOT) yet must still be treated as a hint-chain host. + ReportsSplitNavigator: {path: ''}, TestDynamicScreen: {path: 'test-dynamic'}, StandardScreen: {path: 'standard'}, VerifyAccountScreen: {path: 'verify-account'}, From fbdd0842ab1474a2f0363a45bbe6e1470de8a777 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Musia=C5=82?= Date: Tue, 21 Jul 2026 15:51:06 +0200 Subject: [PATCH 6/8] choose localized fix --- cspell.json | 3 - src/components/KYCWall/BaseKYCWall.tsx | 3 +- src/components/KYCWall/types.ts | 4 +- .../Search/SearchBulkActionsButton.tsx | 4 +- src/components/SettlementButton/index.tsx | 2 +- .../Navigation/helpers/getPathFromState.ts | 30 -------- tests/navigation/getPathFromStateTests.ts | 75 ------------------- 7 files changed, 8 insertions(+), 113 deletions(-) diff --git a/cspell.json b/cspell.json index 18c792e284c6..dfb83ff1bea9 100644 --- a/cspell.json +++ b/cspell.json @@ -27,16 +27,13 @@ "Accelo", "Adate", "Addendums", - "Adesc", "Aeroplan", - "Aexpense", "Aircall", "Airplus", "Airwallex", "Amal", "Amal's", "Amina", - "Areport", "Authy", "BBVA", "BILLCOM", diff --git a/src/components/KYCWall/BaseKYCWall.tsx b/src/components/KYCWall/BaseKYCWall.tsx index 6c14e5265759..e474c9f26ee4 100644 --- a/src/components/KYCWall/BaseKYCWall.tsx +++ b/src/components/KYCWall/BaseKYCWall.tsx @@ -240,7 +240,8 @@ function KYCWall({ const invoiceReceiverPolicyID = getInvoiceReceiverPolicyID(chatReport); const invoiceReceiverPolicy = invoiceReceiverPolicyID ? policies?.[`${ONYXKEYS.COLLECTION.POLICY}${invoiceReceiverPolicyID}`] : undefined; - const bankAccountRoute = addBankAccountRoute ?? getBankAccountRoute(chatReport, invoiceReceiverPolicy?.areInvoicesEnabled); + const resolvedAddBankAccountRoute = typeof addBankAccountRoute === 'function' ? addBankAccountRoute() : addBankAccountRoute; + const bankAccountRoute = resolvedAddBankAccountRoute ?? getBankAccountRoute(chatReport, invoiceReceiverPolicy?.areInvoicesEnabled); Navigation.navigate(bankAccountRoute); } }, diff --git a/src/components/KYCWall/types.ts b/src/components/KYCWall/types.ts index a13480bbd9c2..7047adda3064 100644 --- a/src/components/KYCWall/types.ts +++ b/src/components/KYCWall/types.ts @@ -32,8 +32,8 @@ type ContinueActionParams = { }; type KYCWallProps = { - /** Route for the Add Bank Account screen for a given navigation stack */ - addBankAccountRoute?: Route; + /** Route for the Add Bank Account screen for a given navigation stack. Pass a function to defer building the route (e.g. its backTo) until the moment of the press. */ + addBankAccountRoute?: Route | (() => Route | undefined); /** Route for the Add Debit Card screen for a given navigation stack */ addDebitCardRoute?: Route; diff --git a/src/components/Search/SearchBulkActionsButton.tsx b/src/components/Search/SearchBulkActionsButton.tsx index 02254fe1a283..6a99cc26620e 100644 --- a/src/components/Search/SearchBulkActionsButton.tsx +++ b/src/components/Search/SearchBulkActionsButton.tsx @@ -160,7 +160,9 @@ function SearchBulkActionsButton({queryJSON}: SearchBulkActionsButtonProps) { enablePaymentsRoute={ROUTES.ENABLE_PAYMENTS} iouReport={selectedIOUReport} addBankAccountRoute={ - isCurrentSelectedExpenseReport ? ROUTES.BANK_ACCOUNT_WITH_STEP_TO_OPEN.getRoute({policyID: currentSelectedPolicyID, backTo: Navigation.getActiveRoute()}) : undefined + isCurrentSelectedExpenseReport + ? () => ROUTES.BANK_ACCOUNT_WITH_STEP_TO_OPEN.getRoute({policyID: currentSelectedPolicyID, backTo: Navigation.getActiveRoute()}) + : undefined } onSuccessfulKYC={(paymentType) => { confirmPayment?.(paymentType, pendingPaymentAdditionalDataRef.current); diff --git a/src/components/SettlementButton/index.tsx b/src/components/SettlementButton/index.tsx index 2c5d205c68d6..300e4483fbc9 100644 --- a/src/components/SettlementButton/index.tsx +++ b/src/components/SettlementButton/index.tsx @@ -676,7 +676,7 @@ function SettlementButton({ isDisabled={isOffline} source={CONST.KYC_WALL_SOURCE.REPORT} chatReportID={chatReportID} - addBankAccountRoute={isExpenseReport ? ROUTES.BANK_ACCOUNT_WITH_STEP_TO_OPEN.getRoute({policyID: iouReport?.policyID, backTo: Navigation.getActiveRoute()}) : undefined} + addBankAccountRoute={isExpenseReport ? () => ROUTES.BANK_ACCOUNT_WITH_STEP_TO_OPEN.getRoute({policyID: iouReport?.policyID, backTo: Navigation.getActiveRoute()}) : undefined} iouReport={iouReport} policy={lastPaymentPolicy} anchorAlignment={kycWallAnchorAlignment} diff --git a/src/libs/Navigation/helpers/getPathFromState.ts b/src/libs/Navigation/helpers/getPathFromState.ts index 78dca44ee155..5cce0ca8565a 100644 --- a/src/libs/Navigation/helpers/getPathFromState.ts +++ b/src/libs/Navigation/helpers/getPathFromState.ts @@ -1,7 +1,6 @@ import {config, normalizedConfigs, screensWithOnyxTabNavigator} from '@libs/Navigation/linkingConfig/config'; import type {State} from '@libs/Navigation/types'; -import NAVIGATORS from '@src/NAVIGATORS'; import type {Screen} from '@src/SCREENS'; import {getPathFromState as RNGetPathFromState} from '@react-navigation/native'; @@ -167,38 +166,9 @@ function getPathFromStateWithDynamicRoute(state: State): string { return `${basePathWithoutQuery}/${suffixPath}${queryString ? `?${queryString}` : ''}`; } -/** An unresolved NavigatorScreenParams route that React Navigation stored verbatim instead of resolving to a path. */ -type UnresolvedNavigatorScreenParams = {screen: string; path: string}; - -const navigatorNames = new Set(Object.values(NAVIGATORS)); - -/** Only navigators and non-URL-addressable hosts can carry a hint chain; URL-addressable screens may get `screen`/`path` params from a user-supplied URL query. */ -function canCarryNavigatorScreenParams(name: string): boolean { - return navigatorNames.has(name) || !isScreen(name); -} - -/** Detects RN's deep-link hint chain (`{screen, params/initial, path}`) stored verbatim on a route that is not hydrated yet; its real target lives in `params.path`. */ -function hasUnresolvedNavigatorScreenParams(params: unknown): params is UnresolvedNavigatorScreenParams { - return ( - typeof params === 'object' && - params !== null && - 'screen' in params && - typeof params.screen === 'string' && - 'path' in params && - typeof params.path === 'string' && - params.path.startsWith('/') && - ('params' in params || 'initial' in params) - ); -} - function getPathFromState(state: State): string { const focusedRoute = findFocusedRouteWithOnyxTabGuard(state); - // Return the embedded path of an unresolved hint chain before RN serializes it to `/?params=[object Object]`; hydrated routes skip it (`state` is the source of truth). - if (focusedRoute && !focusedRoute.state && canCarryNavigatorScreenParams(focusedRoute.name) && hasUnresolvedNavigatorScreenParams(focusedRoute.params)) { - return focusedRoute.params.path; - } - const screenName = focusedRoute?.name ?? ''; if (isDynamicRouteScreen(screenName as Screen)) { diff --git a/tests/navigation/getPathFromStateTests.ts b/tests/navigation/getPathFromStateTests.ts index 8d67763e922b..308ed99dbc8d 100644 --- a/tests/navigation/getPathFromStateTests.ts +++ b/tests/navigation/getPathFromStateTests.ts @@ -102,81 +102,6 @@ describe('getPathFromState', () => { expect(mockRNGetPathFromState).toHaveBeenCalledWith(state, expect.anything()); }); - it('should return embedded path when focused route params are unresolved NavigatorScreenParams', () => { - const embeddedPath = '/search/r/4578119764473728?backTo=/search?q=type%3Aexpense-report%20sortBy%3Adate%20sortOrder%3Adesc'; - const state = buildState([ - { - name: 'TabNavigator', - state: buildState([ - { - name: 'ReportsSplitNavigator', - params: { - initial: 'true', - screen: 'SearchMoneyRequestReport', - params: '[object Object]', - path: embeddedPath, - }, - }, - ]), - }, - ]); - - const result = getPathFromState(state as PartialState); - - expect(result).toBe(embeddedPath); - expect(mockRNGetPathFromState).not.toHaveBeenCalled(); - }); - - it('should not treat params as unresolved NavigatorScreenParams without a params/initial hint key', () => { - const expectedPath = '/standard/path'; - mockRNGetPathFromState.mockReturnValue(expectedPath); - - const state = buildState([ - { - name: 'ReportsSplitNavigator', - params: {screen: 'SomeScreen', path: '/some/path'}, - }, - ]); - - const result = getPathFromState(state as PartialState); - - expect(result).toBe(expectedPath); - expect(mockRNGetPathFromState).toHaveBeenCalled(); - }); - - it('should not treat URL query params named screen/initial/path on an addressable screen as a navigator hint', () => { - const expectedPath = '/settings/wallet?screen=x&initial=true&path=/r/1'; - mockRNGetPathFromState.mockReturnValue(expectedPath); - - const state = buildState([ - { - name: 'WalletScreen', - params: {screen: 'x', initial: 'true', path: '/r/1'}, - }, - ]); - - const result = getPathFromState(state as PartialState); - - expect(result).toBe(expectedPath); - expect(mockRNGetPathFromState).toHaveBeenCalled(); - }); - - it('should ignore stale NavigatorScreenParams hint keys on a hydrated tab-host route', () => { - const state = buildState([ - {name: 'WalletScreen'}, - { - name: 'SplitExpenseScreen', - params: {reportID: '123', initial: 'true', screen: 'SomeScreen', params: '[object Object]', path: '/stale/path'}, - state: buildState([{name: 'AmountTab'}, {name: 'ScanTab'}], 0), - }, - ]); - mockRNGetPathFromState.mockImplementation(staticBasePaths.WalletScreen); - - const result = getPathFromState(state as PartialState); - - expect(result).toBe('/settings/wallet/split-expense/123/amount'); - }); - it('should handle state where no route is focused', () => { mockRNGetPathFromState.mockReturnValue('/fallback'); From c3e393cdef30b2aaa29dc961256161790de5ebd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Musia=C5=82?= Date: Tue, 21 Jul 2026 15:54:02 +0200 Subject: [PATCH 7/8] cleanup --- cspell.json | 2294 ++++++++--------- .../Navigation/helpers/getPathFromState.ts | 1 - tests/navigation/getPathFromStateTests.ts | 2 - 3 files changed, 1147 insertions(+), 1150 deletions(-) diff --git a/cspell.json b/cspell.json index dfb83ff1bea9..9c325c816508 100644 --- a/cspell.json +++ b/cspell.json @@ -1,1149 +1,1149 @@ { - "language": "en", - "enableGlobDot": false, - "cache": { - "useCache": true, - "cacheLocation": ".cspellcache" - }, - "words": [ - "--longpress", - "ACCOUNTCODE", - "ADDCOMMENT", - "ADFS", - "AMRO", - "APCA", - "APPL", - "ARGB", - "ARNK", - "ARROWDOWN", - "ARROWLEFT", - "ARROWRIGHT", - "ARROWUP", - "ASPAC", - "AUTOAPPROVE", - "AUTOREIMBURSED", - "AUTOREPORTING", - "AVURL", - "Accelo", - "Adate", - "Addendums", - "Aeroplan", - "Aircall", - "Airplus", - "Airwallex", - "Amal", - "Amal's", - "Amina", - "Authy", - "BBVA", - "BILLCOM", - "BMO", - "BNDCCAMM", - "BNDL", - "BOFMCAM2", - "BROWSABLE", - "BYOC", - "BambooHr", - "Bancorporation", - "Banque", - "Bartek", - "Batchinator", - "Belfius", - "Billpay", - "Bobbeth", - "Borderless", - "Botify", - "Broadwoven", - "Bronn", - "Buildscript", - "Bunq", - "Bushwick", - "CARDFROZEN", - "CARDUNFROZEN", - "CARDDEACTIVATED", - "CAROOT", - "CCDQCAMM", - "CFPB", - "CIBC", - "CIBCCATT", - "CLIA", - "CLIENTID", - "CPPFLAGS", - "CREDS", - "CROSSLINK", - "Caixa", - "Carta", - "Certinia", - "Certinia's", - "Charleson", - "Checkmark", - "Chronos", - "Cliqbook", - "Codat", - "Codice", - "Combustors", - "Corpay", - "Countertop", - "Cronet", - "Crédit", - "DFOLLY", - "DSYM", - "DYNAMICEXTERNAL", - "Danske", - "Deel", - "Depósitos", - "Desjardins", - "Deutsch", - "Dishoom", - "DocuSign", - "Drycleaners", - "Drycleaning", - "Dtype", - "Dumpty", - "EDDSA", - "EDIFACT", - "EMEA", - "ENVFILE", - "ERECEIPT", - "ERECEIPTS", - "ESTA", - "EUVAT", - "EXPENSIDEV", - "EXPENSIFYAPI", - "EXPENSIFYPDBUSINESS", - "EXPENSIFYPDTEAM", - "EXPENSIFYWEB", - "Egencia", - "Electromedical", - "Electrotherapeutic", - "Emphemeral", - "Entra", - "Ephermeral", - "Erste", - "Español", - "Expatriot", - "Expensable", - "Expensi", - "Expensicon", - "Expensicons", - "Expensidev", - "Expensifier", - "Expensiworks", - "FLJZ", - "FWTV", - "FXHF", - "Fbclid", - "Ferroalloy", - "FinancialForce", - "Fiscale", - "Flamegraph", - "Français", - "Frederico", - "Fábio", - "GBRRBR", - "GDSO", - "GEOLOCATION", - "Gaber", - "Gclid", - "Geral", - "gitlink", - "Grantmaking", - "Gsuite", - "Générale", - "HKBCCATT", - "HRMS", - "HSBCSGS", - "Handelsbanken", - "Handtool", - "Heathrow", - "HiBob", - "Highfive", - "Highlightable", - "Hoverable", - "Humpty", - "Hydronics", - "IBTA", - "IDEIN", - "IHDR", - "INTECOMS", - "IPHONEOS", - "ITIN", - "ITSM", - "Idology", - "Inactives", - "Inclusivity", - "innerradius", - "Intacct", - "Invoicify", - "Italiano", - "Jakub", - "KHTML", - "Kantonalbank", - "Kearny", - "Kolkata", - "Kort", - "Kowalski", - "Krasoń", - "LDFLAGS", - "LHNGBR", - "LIBCPP", - "LIGHTBOXES", - "LLDB", - "Lagertha", - "Limpich", - "Lothbrok", - "Luhn", - "MARKASRESOLVED", - "MCTEST", - "MMYY", - "MVCP", - "MYOB", - "Maat", - "Mahal", - "Mapbox", - "Marcin", - "Marqeta", - "McAfee", - "Michelina", - "Melvin", - "MelvinBot", - "Menlo", - "CODEOWNERS", - "luacmartins", - "mountiny", - "tgolen", - "Microtransaction", - "Miniwarehouses", - "Mobasher", - "mockbank", - "Monzo", - "Multifactor", - "NAICS", - "NANP", - "NBSA", - "NETSUITE", - "NEWDOT", - "NEWEXPENSIFY", - "NGROK", - "NLRA", - "NMLS", - "NOSCCATT", - "NSQS", - "NSQSOAuth", - "NSURL", - "NSUTF8", - "NTSB", - "Nacha", - "Namecheap", - "Nanobiotechnology", - "Navan", - "Nederlands", - "Nesw", - "Neue", - "Nonchocolate", - "Noncitrus", - "Nondepository", - "Nonfinancial", - "Nonmortgage", - "Nonnull", - "Nonstore", - "Nonupholstered", - "Noto", - "Novobanco", - "Nuevo", - "OCBC", - "OLDDOT", - "ONYXKEY", - "ONYXKEYS", - "Oncorp", - "PINATM", - "PINATM", - "PINGPONG", - "PKCE", - "POLICYCHANGELOG_ADD_EMPLOYEE", - "POWERFORM", - "Parcelable", - "Passwordless", - "Payoneer", - "Pekao", - "Perfetto", - "Pettinella", - "Picklist", - "Playroll", - "Pleo", - "Proxyman", - "Pluginfile", - "Podfile", - "Pokdumss", - "Polska", - "Polski", - "Português", - "Postale", - "Postharvest", - "Postproduction", - "Powerform", - "Precheck", - "Pressable", - "Pressables", - "Proofpoint", - "Priya", - "Protip", - "Précédent", - "QAPR", - "QUICKBOOKS", - "Qonto", - "RAAS", - "RBC", - "RCTI18nUtil", - "RCTIs", - "RCTURL", - "REBOOKED", - "REDIRECTURI", - "REIMBURSER", - "REJECTEDTOSUBMITTER", - "REJECTEDTRANSACTION", - "REPORTPREVIEW", - "RNCORE", - "RNFS", - "RNLinksdk", - "RNTL", - "RNVP", - "ROYCCAT2", - "SPKI", - "RPID", - "RRGGBB", - "RTER", - "Ragnar", - "Raiffeisen", - "Rankable", - "Reauthenticator", - "Rebooked", - "Reimb", - "Reimbursability", - "Reimbursables", - "Reimbursments", - "Renderable", - "Resawing", - "Reupholstery", - "Revolut", - "Roni", - "Rosiclair", - "Rspack", - "SAASPASS", - "SBFJ", - "SCANREADY", - "SCIM", - "SMARTREPORT", - "SONIFICATION", - "SSAE", - "STORYLANE", - "SVFG", - "SVGID", - "Salagatan", - "Saqbd", - "Scaleway", - "Scaleway's", - "Schengen", - "Schiffli", - "Scotiabank", - "Segoe", - "Selec", - "Sepa", - "Sharees", - "Sharons", - "Signup", - "Skydo", - "Slurper", - "Smartscan", - "Société", - "Speedscope", - "Spendesk", - "Splittable", - "Spotnana", - "Strikethrough", - "Subprocessors", - "Subviews", - "Supercenters", - "Svenska", - "Svmy", - "Swedbank", - "Swipeable", - "Symbolicates", - "Synovus", - "TBUM", - "TDOMCATTTOR", - "TIMATIC", - "TOTP", - "TQBQW", - "Talkspace", - "Tele", - "Teleproduction", - "Timothée", - "Touchless", - "Trainline", - "Transpiles", - "Typeform", - "UATP", - "UBOI", - "UBOS", - "UDID", - "UDIDS", - "UIBG", - "UKEU", - "UNSWIPEABLE", - "UPWORK", - "USAA", - "USCA", - "USDVBBA", - "VCLOG", - "Unassigning", - "Uncapitalize", - "Undelete", - "Unlaminated", - "Unmigrated", - "Unsharing", - "Unvalidated", - "VBBA", - "VENDORID", - "VMPD", - "VPAT", - "Valuska", - "Venmo", - "WCAG", - "WDYR", - "Wallester", - "Warchoł", - "Wintrust", - "Woohoo", - "Wooo", - "Wordmark", - "XNOR", - "XYWH", - "Xfermode", - "Xours", - "Xtheirs", - "YAPL", - "YAPLWK", - "YYMM", - "Yapl", - "Yema", - "Zenefit", - "Zenefits", - "Zipaligning", - "Zürcher", - "aaroon", - "abytes", - "accountid", - "addrlen", - "achreimburse", - "actool", - "adbd", - "aeiou", - "airshipconfig", - "airside", - "alrt", - "apikey", - "americanexpress", - "americanexpressfd", - "americanexpressfdx", - "bankofamerica", - "Amina", - "androiddebugkey", - "androidx", - "apksigner", - "apktool", - "applauseauto", - "applauseleads", - "appleauth", - "appleid", - "applesignin", - "applinks", - "approvable", - "approvalstatus", - "appversion", - "archivado", - "armeabi", - "armv7", - "artículo", - "artículos", - "as_siteseach", - "asar", - "assetlinks", - "attributes.accountid", - "attributes.reportid", - "authorised", - "autocompletions", - "autocorrection", - "autodocs", - "autofilled", - "automations", - "autoplay", - "autoreleasepool", - "autoresizesSubviews", - "autoresizing", - "autosync", - "avds", - "backgrounded", - "bamboohr", - "barwidth", - "basehead", - "baselined", - "beforeunload", - "behaviour", - "bigdecimal", - "billpay", - "blahblahblah", - "blakeembrey", - "blankrows", - "bofa", - "bolditalic", - "bootsplash", - "brex", - "bridgeless", - "buildscript", - "cacerts", - "canvaskit", - "capitalone", - "cardreader", - "catmull", - "ccache", - "ccupload", - "cdfbmo", - "changeit", - "chargeback", - "checkmarked", - "chien", - "citi", - "clawback", - "cleartext", - "clippath", - "cloudflarestream", - "cmaps", - "cmjs", - "cocoapods", - "codegen", - "codeshare", - "codesign", - "colorscale", - "commentbubbles", - "contenteditable", - "copiloted", - "copiloting", - "copyable", - "cornerradius", - "cpuprofile", - "creditamount", - "creditcards", - "crios", - "csvexport", - "csvg", - "customairshipextender", - "customfield", - "customise", - "dateexported", - "deapex", - "dgst", - "deapexer", - "debitamount", - "deburr", - "deburred", - "dedupe", - "dedup", - "deeplink", - "deeplinked", - "deeplinking", - "deeplinks", - "delegators", - "delish", - "dependentaxis", - "deployers", - "deprioritizes", - "describedby", - "devportal", - "diems", - "dimen", - "directfeeds", - "displaystatus", - "domainpadding", - "domelementtype", - "domhandler", - "domparser", - "dont", - "DONTWAIT", - "NONBLOCK", - "dotlottie", - "dsyms", - "dylib", - "durationMillis", - "e2edelta", - "ecash", - "ecconnrefused", - "econn", - "effectful", - "electronmon", - "ellipsize", - "emojibase", - "endcapture", - "enddate", - "endfor", - "endgroup", - "enroute", - "entertainm", - "entityid", - "eraa", - "ethnicities", - "eticket", - "evenodd", - "eventmachine", - "evictable", - "exchangerate", - "exchrate", - "exfy", - "exitstatus", - "expensescount", - "expensicorp", - "expensifyhelp", - "expensifylite", - "expensifymono", - "expensifyneue", - "expensifynewkansas", - "expensifyreactnative", - "exportedto", - "fabs", - "falso", - "favicons", - "feedcountry", - "firebaselogging", - "fireroom", - "firstname", - "flac", - "flatlist", - "flexsearch", - "fname", - "fnames", - "focusability", - "focusvisible", - "fontawesome", - "foreignamount", - "formatjs", - "freetext", - "frontpart", - "fullstory", - "gastos", - "gcsc", - "gcse", - "genkey", - "getenv", - "getprop", - "getsentry", - "gibsdk", - "glcode", - "googleusercontent", - "gorhom", - "gpgsign", - "gradlew", - "groupmonth", - "groupweek", - "gscb", - "gsib", - "gsst", - "gödecke", - "hanno", - "hanno_gödecke", - "headshot", - "healthcheck", - "helpdot", - "helpsite", - "hexcode", - "hibob", - "hrefs", - "hris", - "hybridapp", - "iOSQRCode", - "iaco", - "idempotently", - "idfa", - "ifdef", - "imagebutton", - "inbetweenCompo", - "initialises", - "inputmethod", - "instancetype", - "intenthandler", - "ionatan", - "iphonesimulator", - "isemojisonly", - "islarge", - "ismedium", - "isnonreimbursable", - "issmall", - "jank", - "janky", - "jailbroken", - "jarsigner", - "johndoe", - "jridgewell", - "jsSrcsDir", - "jsbundle", - "keyalg", - "keycap", - "keycommand", - "keyevent", - "keypass", - "keysize", - "keytool", - "keyval", - "keyvaluepairs", - "killall", - "kilometre", - "kilometres", - "labelcomponent", - "labelindicator", - "labelindicatorinneroffset", - "labelindicatorouteroffset", - "labelledby", - "labelradius", - "laggy", - "lastiPhoneLogin", - "lastname", - "lefthook", - "libc", - "Libc", - "libc's", - "libexec", - "libstuff", - "licence", - "lightningcss", - "linecap", - "linejoin", - "lineheight", - "lintable", - "lintrk", - "listformat", - "liveupdate", - "locationbias", - "logcat", - "logomark", - "lucene", - "macrotask", - "maildrop", - "manualreimburse", - "mapboxgl", - "marcaaron", - "margelo", - "mateusz", - "mchmod", - "mechler", - "mediumitalic", - "memberof", - "metainfo", - "metatags", - "microtime", - "microtransactions", - "midoffice", - "mimecast", - "miterlimit", - "mkcert", - "mobiexpensifyg", - "mobileprovision", - "moveElemsAttrsToGroup", - "moveGroupAttrsToElems", - "mple", - "mswin", - "msword", - "mtrl", - "multidex", - "mysubdomain", - "navattic", - "navigations", - "nbta", - "ndkversion", - "negsign", - "nesw", - "netinfo", - "netrc", - "newarch", - "newdotreport", - "newhelp", - "ngneat", - "nmanager", - "nocreeps", - "nodownload", - "nonreimbursable", - "noopener", - "noprompt", - "noreferer", - "noreferrer", - "nosymbol", - "noout", - "ntag", - "ntdiary", - "nullptr", - "numberformat", - "nums", - "objc", - "okhttp", - "objdump", - "oblador", - "octocat", - "officedocument", - "oldarch", - "onclosetag", - "oneline", - "oneteam", - "oneui", - "onfido", - "onloaderror", - "onopentag", - "onplayerror", - "ontext", - "onxy", - "oxfmt", - "openxmlformats", - "ordinality", - "organisation", - "originalamount", - "originalcurrency", - "osdk", - "otpauth", - "outform", - "outplant", - "oxfmt", - "padangle", - "parasharrajat", - "passcodes", - "passplus", - "passwordless", - "pathspec", - "payrollcode", - "payrollid", - "pbxproj", - "pdfreport", - "pdfs", - "perdiem", - "perdiems", - "persistable", - "personaltrackcase", - "personaltrackgoal", - "peterparker", - "pftrace", - "pgrep", - "pkey", - "phonenumber", - "picklists", - "pkill", - "pubin", - "pluralrules", - "pnrs", - "podspec", - "podspecs", - "popen3", - "positionMillis", - "preauthorization", - "precheck", - "prescribers", - "presentationml", - "prestep", - "progname", - "proguard", - "purchaseamount", - "purchasecurrency", - "QAPR", - "QBWC", - "qrcode", - "rach", - "reactnative", - "reactnativebackgroundtask", - "reactnativehybridapp", - "reactnativekeycommand", - "reannounce", - "reauthenticating", - "reauthentication", - "rebooking", - "recategorize", - "receiptless", - "recents", - "recyclerview", - "regexpu", - "reimagination", - "reimbursability", - "reimbursementid", - "reimbursible", - "reminted", - "remotedesktop", - "remotesync", - "removeHiddenElems", - "requestee", - "resizeable", - "resultsbox", - "retryable", - "rideshare", - "Rightworks", - "RNCORE", - "RNFS", - "RNLinksdk", - "rnmapbox", - "rock", - "rpartition", - "rsbuild", - "rsdoctor", - "rspack", - "runbook", - "rstrip", - "s3uqn2oe4m85tufi6mqflbfbuajrm2i3", - "safesearch", - "samltool", - "sbaiahmed", - "schedulable", - "scriptname", - "sdkmanager", - "seamless", - "seguiemj", - "sendto", - "sockfd", - "socklen", - "syscalls", - "serveo", - "setuptools", - "sharee", - "shareeEmail", - "sharees", - "shellcheck", - "shellenv", - "shiftedlinesegment", - "shipit", - "shouldshowellipsis", - "signingkey", - "signup", - "Signup", - "sideproject", - "simctl", - "showcerts", - "skia", - "skip_codesigning", - "soloader", - "sockaddr", - "Sockaddr", - "spreadsheetml", - "srgb", - "ssize", - "stackoverflow", - "startdate", - "spki", - "stdev", - "stdlib", - "storepass", - "strikethrough", - "subcomponents", - "subfolders", - "sublicensees", - "sublocality", - "subpages", - "subpremise", - "subprocessors", - "subrates", - "substep", - "substeps", - "subtab", - "subtabs", - "subview", - "superapp", - "superpowered", - "supportal", - "svgs", - "symbolicate", - "symbolicated", - "symbolication", - "symbolspacer", - "systempreferences", - "tabindex", - "taxrate", - "teachersunite", - "testflight", - "textanchor", - "threadsafe", - "thumbsup", - "tickcount", - "tickformat", - "tickvalues", - "tnode", - "tobe", - "toggleable", - "togglefullscreen", - "tosorted", - "touchables", - "tranid", - "trinet", - "trivago", - "trustcacerts", - "tsgo", - "twocards", - "uatp", - "uimanager", - "ukkonen", - "unapprove", - "unapproves", - "unassigning", - "unassignment", - "unassigns", - "uncategorized", - "unflushed", - "unheld", - "unhold", - "unimodules", - "uninstallations", - "unminified", - "unmuting", - "unredacted", - "unregisters", - "unreimbursed", - "unscrollable", - "unsharing", - "unsubmitted", - "uppercased", - "upsell", - "urbanairship", - "urlset", - "useAutolayout", - "useCallback", - "useMemo", - "useblacksmith", - "usernotifications", - "utilise", - "vcpu", - "verticalanchor", - "victoryaxis", - "victorybar", - "victorychart", - "victorygroup", - "victorylabel", - "victorylegend", - "victoryline", - "victorypie", - "viewability", - "viewport", - "viewports", - "voidings", - "vorbis", - "vvcf", - "vypj", - "waitlist", - "waitlisted", - "webapps", - "webauthn", - "webcredentials", - "webrtc", - "welldone", - "wellsfargo", - "widgetkit", - "wordprocessingml", - "worklet", - "workletization", - "worklets", - "workshopping", - "workspacename", - "worktree", - "worktrees", - "writeitdown", - "xcconfig", - "xcodeproj", - "xcpretty", - "xcprivacy", - "xcrun", - "xcshareddata", - "xctrace", - "xcuserdata", - "xcworkspace", - "xdescribe", - "xero", - "xlarge", - "xlink", - "xmlgateway", - "yalc", - "yourcompany", - "yourname", - "zencdn", - "zipalign", - "zoneinfo", - "zxcv", - "zxldvw", - "águero", - "مثال", - "claudedesktop", - "claudecodeex", - "NitroFetch", - "Prefetch", - "Prefetcher", - "knip", - "lottiefiles", - "jsitooling", - "Refetched" - ], - "ignorePaths": [ - ".gitignore", - "src/languages/de.ts", - "src/languages/es.ts", - "src/languages/fr.ts", - "src/languages/it.ts", - "src/languages/ja.ts", - "src/languages/nl.ts", - "src/languages/pl.ts", - "src/languages/pt-BR.ts", - "src/languages/zh-hans.ts", - "prompts/translation/de.ts", - "prompts/translation/es.ts", - "prompts/translation/fr.ts", - "prompts/translation/it.ts", - "prompts/translation/ja.ts", - "prompts/translation/nl.ts", - "prompts/translation/pl.ts", - "prompts/translation/pt-BR.ts", - "prompts/translation/zh-hans.ts", - "android/app/BUCK", - "android/app/build_defs.bzl", - "android/app/build.gradle", - "android/app/google-services-DEV.json", - "android/app/google-services.json", - "android/app/proguard-rules.pro", - "android/app/src/development/assets/airshipconfig.properties", - "android/build.gradle", - "android/gradle.properties", - "android/gradle/wrapper/gradle-wrapper.properties", - "android/gradlew", - "android/gradlew.bat", - "assets/emojis/common.ts", - "assets/emojis/en.ts", - "assets/emojis/es.ts", - "contributingGuides/HOW_TO_AUDIT_TRANSLATIONS.md", - "patches/**", - "docs/assets/Files/**", - "docs/sitemap.xml", - "ios/NewExpensify.xcodeproj/**", - "ios/GoogleService-Info.plist", - "ios/GoogleService-Info-DEV.plist", - "ios/AirshipConfig.plist", - "src/libs/Avatars/*", - "Mobile-Expensify", - "modules/ExpensifyNitroUtils/nitrogen/**", - "modules/ExpensifyNitroUtils/android/build.gradle", - "modules/ExpensifyNitroUtils/android/src/main/cpp/**", - "src/TIMEZONES.ts", - "tests/unit/EmojiTest.ts", - "tests/unit/FastSearchTest.ts", - "tests/unit/useLocalizeTest.tsx", - "tests/unit/removeInvisibleCharacters.ts", - "tests/unit/searchCountryOptionsTest.ts", - "tests/unit/currencyList.json", - "tests/unit/ValidationUtilsTest.ts", - "src/CONST/index.ts", - "src/libs/SearchParser/*", - "modules/group-ib-fp", - "web/snippets/gib.js", - "tests/unit/hooks/useLetterAvatars.test.tsx", - "tests/unit/usePersonalDetailSearchSelectorTest.tsx", - "config/eslint/eslint.seatbelt.tsv", - "tests/unit/BankAccountUtilsTest.ts" - ], - "ignoreRegExpList": ["@assets/.*"], - "useGitignore": true + "language": "en", + "enableGlobDot": false, + "cache": { + "useCache": true, + "cacheLocation": ".cspellcache" + }, + "words": [ + "--longpress", + "ACCOUNTCODE", + "ADDCOMMENT", + "ADFS", + "AMRO", + "APCA", + "APPL", + "ARGB", + "ARNK", + "ARROWDOWN", + "ARROWLEFT", + "ARROWRIGHT", + "ARROWUP", + "ASPAC", + "AUTOAPPROVE", + "AUTOREIMBURSED", + "AUTOREPORTING", + "AVURL", + "Accelo", + "Addendums", + "Aeroplan", + "Aircall", + "Airplus", + "Airwallex", + "Amal", + "Amal's", + "Amina", + "Areport", + "Authy", + "BBVA", + "BILLCOM", + "BMO", + "BNDCCAMM", + "BNDL", + "BOFMCAM2", + "BROWSABLE", + "BYOC", + "BambooHr", + "Bancorporation", + "Banque", + "Bartek", + "Batchinator", + "Belfius", + "Billpay", + "Bobbeth", + "Borderless", + "Botify", + "Broadwoven", + "Bronn", + "Buildscript", + "Bunq", + "Bushwick", + "CARDFROZEN", + "CARDUNFROZEN", + "CARDDEACTIVATED", + "CAROOT", + "CCDQCAMM", + "CFPB", + "CIBC", + "CIBCCATT", + "CLIA", + "CLIENTID", + "CPPFLAGS", + "CREDS", + "CROSSLINK", + "Caixa", + "Carta", + "Certinia", + "Certinia's", + "Charleson", + "Checkmark", + "Chronos", + "Cliqbook", + "Codat", + "Codice", + "Combustors", + "Corpay", + "Countertop", + "Cronet", + "Crédit", + "DFOLLY", + "DSYM", + "DYNAMICEXTERNAL", + "Danske", + "Deel", + "Depósitos", + "Desjardins", + "Deutsch", + "Dishoom", + "DocuSign", + "Drycleaners", + "Drycleaning", + "Dtype", + "Dumpty", + "EDDSA", + "EDIFACT", + "EMEA", + "ENVFILE", + "ERECEIPT", + "ERECEIPTS", + "ESTA", + "EUVAT", + "EXPENSIDEV", + "EXPENSIFYAPI", + "EXPENSIFYPDBUSINESS", + "EXPENSIFYPDTEAM", + "EXPENSIFYWEB", + "Egencia", + "Electromedical", + "Electrotherapeutic", + "Emphemeral", + "Entra", + "Ephermeral", + "Erste", + "Español", + "Expatriot", + "Expensable", + "Expensi", + "Expensicon", + "Expensicons", + "Expensidev", + "Expensifier", + "Expensiworks", + "FLJZ", + "FWTV", + "FXHF", + "Fbclid", + "Ferroalloy", + "FinancialForce", + "Fiscale", + "Flamegraph", + "Français", + "Frederico", + "Fábio", + "GBRRBR", + "GDSO", + "GEOLOCATION", + "Gaber", + "Gclid", + "Geral", + "gitlink", + "Grantmaking", + "Gsuite", + "Générale", + "HKBCCATT", + "HRMS", + "HSBCSGS", + "Handelsbanken", + "Handtool", + "Heathrow", + "HiBob", + "Highfive", + "Highlightable", + "Hoverable", + "Humpty", + "Hydronics", + "IBTA", + "IDEIN", + "IHDR", + "INTECOMS", + "IPHONEOS", + "ITIN", + "ITSM", + "Idology", + "Inactives", + "Inclusivity", + "innerradius", + "Intacct", + "Invoicify", + "Italiano", + "Jakub", + "KHTML", + "Kantonalbank", + "Kearny", + "Kolkata", + "Kort", + "Kowalski", + "Krasoń", + "LDFLAGS", + "LHNGBR", + "LIBCPP", + "LIGHTBOXES", + "LLDB", + "Lagertha", + "Limpich", + "Lothbrok", + "Luhn", + "MARKASRESOLVED", + "MCTEST", + "MMYY", + "MVCP", + "MYOB", + "Maat", + "Mahal", + "Mapbox", + "Marcin", + "Marqeta", + "McAfee", + "Michelina", + "Melvin", + "MelvinBot", + "Menlo", + "CODEOWNERS", + "luacmartins", + "mountiny", + "tgolen", + "Microtransaction", + "Miniwarehouses", + "Mobasher", + "mockbank", + "Monzo", + "Multifactor", + "NAICS", + "NANP", + "NBSA", + "NETSUITE", + "NEWDOT", + "NEWEXPENSIFY", + "NGROK", + "NLRA", + "NMLS", + "NOSCCATT", + "NSQS", + "NSQSOAuth", + "NSURL", + "NSUTF8", + "NTSB", + "Nacha", + "Namecheap", + "Nanobiotechnology", + "Navan", + "Nederlands", + "Nesw", + "Neue", + "Nonchocolate", + "Noncitrus", + "Nondepository", + "Nonfinancial", + "Nonmortgage", + "Nonnull", + "Nonstore", + "Nonupholstered", + "Noto", + "Novobanco", + "Nuevo", + "OCBC", + "OLDDOT", + "ONYXKEY", + "ONYXKEYS", + "Oncorp", + "PINATM", + "PINATM", + "PINGPONG", + "PKCE", + "POLICYCHANGELOG_ADD_EMPLOYEE", + "POWERFORM", + "Parcelable", + "Passwordless", + "Payoneer", + "Pekao", + "Perfetto", + "Pettinella", + "Picklist", + "Playroll", + "Pleo", + "Proxyman", + "Pluginfile", + "Podfile", + "Pokdumss", + "Polska", + "Polski", + "Português", + "Postale", + "Postharvest", + "Postproduction", + "Powerform", + "Precheck", + "Pressable", + "Pressables", + "Proofpoint", + "Priya", + "Protip", + "Précédent", + "QAPR", + "QUICKBOOKS", + "Qonto", + "RAAS", + "RBC", + "RCTI18nUtil", + "RCTIs", + "RCTURL", + "REBOOKED", + "REDIRECTURI", + "REIMBURSER", + "REJECTEDTOSUBMITTER", + "REJECTEDTRANSACTION", + "REPORTPREVIEW", + "RNCORE", + "RNFS", + "RNLinksdk", + "RNTL", + "RNVP", + "ROYCCAT2", + "SPKI", + "RPID", + "RRGGBB", + "RTER", + "Ragnar", + "Raiffeisen", + "Rankable", + "Reauthenticator", + "Rebooked", + "Reimb", + "Reimbursability", + "Reimbursables", + "Reimbursments", + "Renderable", + "Resawing", + "Reupholstery", + "Revolut", + "Roni", + "Rosiclair", + "Rspack", + "SAASPASS", + "SBFJ", + "SCANREADY", + "SCIM", + "SMARTREPORT", + "SONIFICATION", + "SSAE", + "STORYLANE", + "SVFG", + "SVGID", + "Salagatan", + "Saqbd", + "Scaleway", + "Scaleway's", + "Schengen", + "Schiffli", + "Scotiabank", + "Segoe", + "Selec", + "Sepa", + "Sharees", + "Sharons", + "Signup", + "Skydo", + "Slurper", + "Smartscan", + "Société", + "Speedscope", + "Spendesk", + "Splittable", + "Spotnana", + "Strikethrough", + "Subprocessors", + "Subviews", + "Supercenters", + "Svenska", + "Svmy", + "Swedbank", + "Swipeable", + "Symbolicates", + "Synovus", + "TBUM", + "TDOMCATTTOR", + "TIMATIC", + "TOTP", + "TQBQW", + "Talkspace", + "Tele", + "Teleproduction", + "Timothée", + "Touchless", + "Trainline", + "Transpiles", + "Typeform", + "UATP", + "UBOI", + "UBOS", + "UDID", + "UDIDS", + "UIBG", + "UKEU", + "UNSWIPEABLE", + "UPWORK", + "USAA", + "USCA", + "USDVBBA", + "VCLOG", + "Unassigning", + "Uncapitalize", + "Undelete", + "Unlaminated", + "Unmigrated", + "Unsharing", + "Unvalidated", + "VBBA", + "VENDORID", + "VMPD", + "VPAT", + "Valuska", + "Venmo", + "WCAG", + "WDYR", + "Wallester", + "Warchoł", + "Wintrust", + "Woohoo", + "Wooo", + "Wordmark", + "XNOR", + "XYWH", + "Xfermode", + "Xours", + "Xtheirs", + "YAPL", + "YAPLWK", + "YYMM", + "Yapl", + "Yema", + "Zenefit", + "Zenefits", + "Zipaligning", + "Zürcher", + "aaroon", + "abytes", + "accountid", + "addrlen", + "achreimburse", + "actool", + "adbd", + "aeiou", + "airshipconfig", + "airside", + "alrt", + "apikey", + "americanexpress", + "americanexpressfd", + "americanexpressfdx", + "bankofamerica", + "Amina", + "androiddebugkey", + "androidx", + "apksigner", + "apktool", + "applauseauto", + "applauseleads", + "appleauth", + "appleid", + "applesignin", + "applinks", + "approvable", + "approvalstatus", + "appversion", + "archivado", + "armeabi", + "armv7", + "artículo", + "artículos", + "as_siteseach", + "asar", + "assetlinks", + "attributes.accountid", + "attributes.reportid", + "authorised", + "autocompletions", + "autocorrection", + "autodocs", + "autofilled", + "automations", + "autoplay", + "autoreleasepool", + "autoresizesSubviews", + "autoresizing", + "autosync", + "avds", + "backgrounded", + "bamboohr", + "barwidth", + "basehead", + "baselined", + "beforeunload", + "behaviour", + "bigdecimal", + "billpay", + "blahblahblah", + "blakeembrey", + "blankrows", + "bofa", + "bolditalic", + "bootsplash", + "brex", + "bridgeless", + "buildscript", + "cacerts", + "canvaskit", + "capitalone", + "cardreader", + "catmull", + "ccache", + "ccupload", + "cdfbmo", + "changeit", + "chargeback", + "checkmarked", + "chien", + "citi", + "clawback", + "cleartext", + "clippath", + "cloudflarestream", + "cmaps", + "cmjs", + "cocoapods", + "codegen", + "codeshare", + "codesign", + "colorscale", + "commentbubbles", + "contenteditable", + "copiloted", + "copiloting", + "copyable", + "cornerradius", + "cpuprofile", + "creditamount", + "creditcards", + "crios", + "csvexport", + "csvg", + "customairshipextender", + "customfield", + "customise", + "dateexported", + "deapex", + "dgst", + "deapexer", + "debitamount", + "deburr", + "deburred", + "dedupe", + "dedup", + "deeplink", + "deeplinked", + "deeplinking", + "deeplinks", + "delegators", + "delish", + "dependentaxis", + "deployers", + "deprioritizes", + "describedby", + "devportal", + "diems", + "dimen", + "directfeeds", + "displaystatus", + "domainpadding", + "domelementtype", + "domhandler", + "domparser", + "dont", + "DONTWAIT", + "NONBLOCK", + "dotlottie", + "dsyms", + "dylib", + "durationMillis", + "e2edelta", + "ecash", + "ecconnrefused", + "econn", + "effectful", + "electronmon", + "ellipsize", + "emojibase", + "endcapture", + "enddate", + "endfor", + "endgroup", + "enroute", + "entertainm", + "entityid", + "eraa", + "ethnicities", + "eticket", + "evenodd", + "eventmachine", + "evictable", + "exchangerate", + "exchrate", + "exfy", + "exitstatus", + "expensescount", + "expensicorp", + "expensifyhelp", + "expensifylite", + "expensifymono", + "expensifyneue", + "expensifynewkansas", + "expensifyreactnative", + "exportedto", + "fabs", + "falso", + "favicons", + "feedcountry", + "firebaselogging", + "fireroom", + "firstname", + "flac", + "flatlist", + "flexsearch", + "fname", + "fnames", + "focusability", + "focusvisible", + "fontawesome", + "foreignamount", + "formatjs", + "freetext", + "frontpart", + "fullstory", + "gastos", + "gcsc", + "gcse", + "genkey", + "getenv", + "getprop", + "getsentry", + "gibsdk", + "glcode", + "googleusercontent", + "gorhom", + "gpgsign", + "gradlew", + "groupmonth", + "groupweek", + "gscb", + "gsib", + "gsst", + "gödecke", + "hanno", + "hanno_gödecke", + "headshot", + "healthcheck", + "helpdot", + "helpsite", + "hexcode", + "hibob", + "hrefs", + "hris", + "hybridapp", + "iOSQRCode", + "iaco", + "idempotently", + "idfa", + "ifdef", + "imagebutton", + "inbetweenCompo", + "initialises", + "inputmethod", + "instancetype", + "intenthandler", + "ionatan", + "iphonesimulator", + "isemojisonly", + "islarge", + "ismedium", + "isnonreimbursable", + "issmall", + "jank", + "janky", + "jailbroken", + "jarsigner", + "johndoe", + "jridgewell", + "jsSrcsDir", + "jsbundle", + "keyalg", + "keycap", + "keycommand", + "keyevent", + "keypass", + "keysize", + "keytool", + "keyval", + "keyvaluepairs", + "killall", + "kilometre", + "kilometres", + "labelcomponent", + "labelindicator", + "labelindicatorinneroffset", + "labelindicatorouteroffset", + "labelledby", + "labelradius", + "laggy", + "lastiPhoneLogin", + "lastname", + "lefthook", + "libc", + "Libc", + "libc's", + "libexec", + "libstuff", + "licence", + "lightningcss", + "linecap", + "linejoin", + "lineheight", + "lintable", + "lintrk", + "listformat", + "liveupdate", + "locationbias", + "logcat", + "logomark", + "lucene", + "macrotask", + "maildrop", + "manualreimburse", + "mapboxgl", + "marcaaron", + "margelo", + "mateusz", + "mchmod", + "mechler", + "mediumitalic", + "memberof", + "metainfo", + "metatags", + "microtime", + "microtransactions", + "midoffice", + "mimecast", + "miterlimit", + "mkcert", + "mobiexpensifyg", + "mobileprovision", + "moveElemsAttrsToGroup", + "moveGroupAttrsToElems", + "mple", + "mswin", + "msword", + "mtrl", + "multidex", + "mysubdomain", + "navattic", + "navigations", + "nbta", + "ndkversion", + "negsign", + "nesw", + "netinfo", + "netrc", + "newarch", + "newdotreport", + "newhelp", + "ngneat", + "nmanager", + "nocreeps", + "nodownload", + "nonreimbursable", + "noopener", + "noprompt", + "noreferer", + "noreferrer", + "nosymbol", + "noout", + "ntag", + "ntdiary", + "nullptr", + "numberformat", + "nums", + "objc", + "okhttp", + "objdump", + "oblador", + "octocat", + "officedocument", + "oldarch", + "onclosetag", + "oneline", + "oneteam", + "oneui", + "onfido", + "onloaderror", + "onopentag", + "onplayerror", + "ontext", + "onxy", + "oxfmt", + "openxmlformats", + "ordinality", + "organisation", + "originalamount", + "originalcurrency", + "osdk", + "otpauth", + "outform", + "outplant", + "oxfmt", + "padangle", + "parasharrajat", + "passcodes", + "passplus", + "passwordless", + "pathspec", + "payrollcode", + "payrollid", + "pbxproj", + "pdfreport", + "pdfs", + "perdiem", + "perdiems", + "persistable", + "personaltrackcase", + "personaltrackgoal", + "peterparker", + "pftrace", + "pgrep", + "pkey", + "phonenumber", + "picklists", + "pkill", + "pubin", + "pluralrules", + "pnrs", + "podspec", + "podspecs", + "popen3", + "positionMillis", + "preauthorization", + "precheck", + "prescribers", + "presentationml", + "prestep", + "progname", + "proguard", + "purchaseamount", + "purchasecurrency", + "QAPR", + "QBWC", + "qrcode", + "rach", + "reactnative", + "reactnativebackgroundtask", + "reactnativehybridapp", + "reactnativekeycommand", + "reannounce", + "reauthenticating", + "reauthentication", + "rebooking", + "recategorize", + "receiptless", + "recents", + "recyclerview", + "regexpu", + "reimagination", + "reimbursability", + "reimbursementid", + "reimbursible", + "reminted", + "remotedesktop", + "remotesync", + "removeHiddenElems", + "requestee", + "resizeable", + "resultsbox", + "retryable", + "rideshare", + "Rightworks", + "RNCORE", + "RNFS", + "RNLinksdk", + "rnmapbox", + "rock", + "rpartition", + "rsbuild", + "rsdoctor", + "rspack", + "runbook", + "rstrip", + "s3uqn2oe4m85tufi6mqflbfbuajrm2i3", + "safesearch", + "samltool", + "sbaiahmed", + "schedulable", + "scriptname", + "sdkmanager", + "seamless", + "seguiemj", + "sendto", + "sockfd", + "socklen", + "syscalls", + "serveo", + "setuptools", + "sharee", + "shareeEmail", + "sharees", + "shellcheck", + "shellenv", + "shiftedlinesegment", + "shipit", + "shouldshowellipsis", + "signingkey", + "signup", + "Signup", + "sideproject", + "simctl", + "showcerts", + "skia", + "skip_codesigning", + "soloader", + "sockaddr", + "Sockaddr", + "spreadsheetml", + "srgb", + "ssize", + "stackoverflow", + "startdate", + "spki", + "stdev", + "stdlib", + "storepass", + "strikethrough", + "subcomponents", + "subfolders", + "sublicensees", + "sublocality", + "subpages", + "subpremise", + "subprocessors", + "subrates", + "substep", + "substeps", + "subtab", + "subtabs", + "subview", + "superapp", + "superpowered", + "supportal", + "svgs", + "symbolicate", + "symbolicated", + "symbolication", + "symbolspacer", + "systempreferences", + "tabindex", + "taxrate", + "teachersunite", + "testflight", + "textanchor", + "threadsafe", + "thumbsup", + "tickcount", + "tickformat", + "tickvalues", + "tnode", + "tobe", + "toggleable", + "togglefullscreen", + "tosorted", + "touchables", + "tranid", + "trinet", + "trivago", + "trustcacerts", + "tsgo", + "twocards", + "uatp", + "uimanager", + "ukkonen", + "unapprove", + "unapproves", + "unassigning", + "unassignment", + "unassigns", + "uncategorized", + "unflushed", + "unheld", + "unhold", + "unimodules", + "uninstallations", + "unminified", + "unmuting", + "unredacted", + "unregisters", + "unreimbursed", + "unscrollable", + "unsharing", + "unsubmitted", + "uppercased", + "upsell", + "urbanairship", + "urlset", + "useAutolayout", + "useCallback", + "useMemo", + "useblacksmith", + "usernotifications", + "utilise", + "vcpu", + "verticalanchor", + "victoryaxis", + "victorybar", + "victorychart", + "victorygroup", + "victorylabel", + "victorylegend", + "victoryline", + "victorypie", + "viewability", + "viewport", + "viewports", + "voidings", + "vorbis", + "vvcf", + "vypj", + "waitlist", + "waitlisted", + "webapps", + "webauthn", + "webcredentials", + "webrtc", + "welldone", + "wellsfargo", + "widgetkit", + "wordprocessingml", + "worklet", + "workletization", + "worklets", + "workshopping", + "workspacename", + "worktree", + "worktrees", + "writeitdown", + "xcconfig", + "xcodeproj", + "xcpretty", + "xcprivacy", + "xcrun", + "xcshareddata", + "xctrace", + "xcuserdata", + "xcworkspace", + "xdescribe", + "xero", + "xlarge", + "xlink", + "xmlgateway", + "yalc", + "yourcompany", + "yourname", + "zencdn", + "zipalign", + "zoneinfo", + "zxcv", + "zxldvw", + "águero", + "مثال", + "claudedesktop", + "claudecodeex", + "NitroFetch", + "Prefetch", + "Prefetcher", + "knip", + "lottiefiles", + "jsitooling", + "Refetched" + ], + "ignorePaths": [ + ".gitignore", + "src/languages/de.ts", + "src/languages/es.ts", + "src/languages/fr.ts", + "src/languages/it.ts", + "src/languages/ja.ts", + "src/languages/nl.ts", + "src/languages/pl.ts", + "src/languages/pt-BR.ts", + "src/languages/zh-hans.ts", + "prompts/translation/de.ts", + "prompts/translation/es.ts", + "prompts/translation/fr.ts", + "prompts/translation/it.ts", + "prompts/translation/ja.ts", + "prompts/translation/nl.ts", + "prompts/translation/pl.ts", + "prompts/translation/pt-BR.ts", + "prompts/translation/zh-hans.ts", + "android/app/BUCK", + "android/app/build_defs.bzl", + "android/app/build.gradle", + "android/app/google-services-DEV.json", + "android/app/google-services.json", + "android/app/proguard-rules.pro", + "android/app/src/development/assets/airshipconfig.properties", + "android/build.gradle", + "android/gradle.properties", + "android/gradle/wrapper/gradle-wrapper.properties", + "android/gradlew", + "android/gradlew.bat", + "assets/emojis/common.ts", + "assets/emojis/en.ts", + "assets/emojis/es.ts", + "contributingGuides/HOW_TO_AUDIT_TRANSLATIONS.md", + "patches/**", + "docs/assets/Files/**", + "docs/sitemap.xml", + "ios/NewExpensify.xcodeproj/**", + "ios/GoogleService-Info.plist", + "ios/GoogleService-Info-DEV.plist", + "ios/AirshipConfig.plist", + "src/libs/Avatars/*", + "Mobile-Expensify", + "modules/ExpensifyNitroUtils/nitrogen/**", + "modules/ExpensifyNitroUtils/android/build.gradle", + "modules/ExpensifyNitroUtils/android/src/main/cpp/**", + "src/TIMEZONES.ts", + "tests/unit/EmojiTest.ts", + "tests/unit/FastSearchTest.ts", + "tests/unit/useLocalizeTest.tsx", + "tests/unit/removeInvisibleCharacters.ts", + "tests/unit/searchCountryOptionsTest.ts", + "tests/unit/currencyList.json", + "tests/unit/ValidationUtilsTest.ts", + "src/CONST/index.ts", + "src/libs/SearchParser/*", + "modules/group-ib-fp", + "web/snippets/gib.js", + "tests/unit/hooks/useLetterAvatars.test.tsx", + "tests/unit/usePersonalDetailSearchSelectorTest.tsx", + "config/eslint/eslint.seatbelt.tsv", + "tests/unit/BankAccountUtilsTest.ts" + ], + "ignoreRegExpList": ["@assets/.*"], + "useGitignore": true } diff --git a/src/libs/Navigation/helpers/getPathFromState.ts b/src/libs/Navigation/helpers/getPathFromState.ts index 5cce0ca8565a..f09fcd8bcf29 100644 --- a/src/libs/Navigation/helpers/getPathFromState.ts +++ b/src/libs/Navigation/helpers/getPathFromState.ts @@ -168,7 +168,6 @@ function getPathFromStateWithDynamicRoute(state: State): string { function getPathFromState(state: State): string { const focusedRoute = findFocusedRouteWithOnyxTabGuard(state); - const screenName = focusedRoute?.name ?? ''; if (isDynamicRouteScreen(screenName as Screen)) { diff --git a/tests/navigation/getPathFromStateTests.ts b/tests/navigation/getPathFromStateTests.ts index 308ed99dbc8d..7b492f8bd6fd 100644 --- a/tests/navigation/getPathFromStateTests.ts +++ b/tests/navigation/getPathFromStateTests.ts @@ -11,8 +11,6 @@ jest.mock('@react-navigation/native', () => ({ jest.mock('@libs/Navigation/linkingConfig/config', () => ({ config: {}, normalizedConfigs: { - // Mirrors production: this navigator is URL-addressable (path: ROUTES.ROOT) yet must still be treated as a hint-chain host. - ReportsSplitNavigator: {path: ''}, TestDynamicScreen: {path: 'test-dynamic'}, StandardScreen: {path: 'standard'}, VerifyAccountScreen: {path: 'verify-account'}, From 704cae834a30cbeeb64ec18305a4a70297b3ea58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Musia=C5=82?= Date: Tue, 21 Jul 2026 16:06:28 +0200 Subject: [PATCH 8/8] revert cspell changes --- cspell.json | 2294 +++++++++++++++++++++++++-------------------------- 1 file changed, 1147 insertions(+), 1147 deletions(-) diff --git a/cspell.json b/cspell.json index 9c325c816508..d5cf1d79cb0e 100644 --- a/cspell.json +++ b/cspell.json @@ -1,1149 +1,1149 @@ { - "language": "en", - "enableGlobDot": false, - "cache": { - "useCache": true, - "cacheLocation": ".cspellcache" - }, - "words": [ - "--longpress", - "ACCOUNTCODE", - "ADDCOMMENT", - "ADFS", - "AMRO", - "APCA", - "APPL", - "ARGB", - "ARNK", - "ARROWDOWN", - "ARROWLEFT", - "ARROWRIGHT", - "ARROWUP", - "ASPAC", - "AUTOAPPROVE", - "AUTOREIMBURSED", - "AUTOREPORTING", - "AVURL", - "Accelo", - "Addendums", - "Aeroplan", - "Aircall", - "Airplus", - "Airwallex", - "Amal", - "Amal's", - "Amina", - "Areport", - "Authy", - "BBVA", - "BILLCOM", - "BMO", - "BNDCCAMM", - "BNDL", - "BOFMCAM2", - "BROWSABLE", - "BYOC", - "BambooHr", - "Bancorporation", - "Banque", - "Bartek", - "Batchinator", - "Belfius", - "Billpay", - "Bobbeth", - "Borderless", - "Botify", - "Broadwoven", - "Bronn", - "Buildscript", - "Bunq", - "Bushwick", - "CARDFROZEN", - "CARDUNFROZEN", - "CARDDEACTIVATED", - "CAROOT", - "CCDQCAMM", - "CFPB", - "CIBC", - "CIBCCATT", - "CLIA", - "CLIENTID", - "CPPFLAGS", - "CREDS", - "CROSSLINK", - "Caixa", - "Carta", - "Certinia", - "Certinia's", - "Charleson", - "Checkmark", - "Chronos", - "Cliqbook", - "Codat", - "Codice", - "Combustors", - "Corpay", - "Countertop", - "Cronet", - "Crédit", - "DFOLLY", - "DSYM", - "DYNAMICEXTERNAL", - "Danske", - "Deel", - "Depósitos", - "Desjardins", - "Deutsch", - "Dishoom", - "DocuSign", - "Drycleaners", - "Drycleaning", - "Dtype", - "Dumpty", - "EDDSA", - "EDIFACT", - "EMEA", - "ENVFILE", - "ERECEIPT", - "ERECEIPTS", - "ESTA", - "EUVAT", - "EXPENSIDEV", - "EXPENSIFYAPI", - "EXPENSIFYPDBUSINESS", - "EXPENSIFYPDTEAM", - "EXPENSIFYWEB", - "Egencia", - "Electromedical", - "Electrotherapeutic", - "Emphemeral", - "Entra", - "Ephermeral", - "Erste", - "Español", - "Expatriot", - "Expensable", - "Expensi", - "Expensicon", - "Expensicons", - "Expensidev", - "Expensifier", - "Expensiworks", - "FLJZ", - "FWTV", - "FXHF", - "Fbclid", - "Ferroalloy", - "FinancialForce", - "Fiscale", - "Flamegraph", - "Français", - "Frederico", - "Fábio", - "GBRRBR", - "GDSO", - "GEOLOCATION", - "Gaber", - "Gclid", - "Geral", - "gitlink", - "Grantmaking", - "Gsuite", - "Générale", - "HKBCCATT", - "HRMS", - "HSBCSGS", - "Handelsbanken", - "Handtool", - "Heathrow", - "HiBob", - "Highfive", - "Highlightable", - "Hoverable", - "Humpty", - "Hydronics", - "IBTA", - "IDEIN", - "IHDR", - "INTECOMS", - "IPHONEOS", - "ITIN", - "ITSM", - "Idology", - "Inactives", - "Inclusivity", - "innerradius", - "Intacct", - "Invoicify", - "Italiano", - "Jakub", - "KHTML", - "Kantonalbank", - "Kearny", - "Kolkata", - "Kort", - "Kowalski", - "Krasoń", - "LDFLAGS", - "LHNGBR", - "LIBCPP", - "LIGHTBOXES", - "LLDB", - "Lagertha", - "Limpich", - "Lothbrok", - "Luhn", - "MARKASRESOLVED", - "MCTEST", - "MMYY", - "MVCP", - "MYOB", - "Maat", - "Mahal", - "Mapbox", - "Marcin", - "Marqeta", - "McAfee", - "Michelina", - "Melvin", - "MelvinBot", - "Menlo", - "CODEOWNERS", - "luacmartins", - "mountiny", - "tgolen", - "Microtransaction", - "Miniwarehouses", - "Mobasher", - "mockbank", - "Monzo", - "Multifactor", - "NAICS", - "NANP", - "NBSA", - "NETSUITE", - "NEWDOT", - "NEWEXPENSIFY", - "NGROK", - "NLRA", - "NMLS", - "NOSCCATT", - "NSQS", - "NSQSOAuth", - "NSURL", - "NSUTF8", - "NTSB", - "Nacha", - "Namecheap", - "Nanobiotechnology", - "Navan", - "Nederlands", - "Nesw", - "Neue", - "Nonchocolate", - "Noncitrus", - "Nondepository", - "Nonfinancial", - "Nonmortgage", - "Nonnull", - "Nonstore", - "Nonupholstered", - "Noto", - "Novobanco", - "Nuevo", - "OCBC", - "OLDDOT", - "ONYXKEY", - "ONYXKEYS", - "Oncorp", - "PINATM", - "PINATM", - "PINGPONG", - "PKCE", - "POLICYCHANGELOG_ADD_EMPLOYEE", - "POWERFORM", - "Parcelable", - "Passwordless", - "Payoneer", - "Pekao", - "Perfetto", - "Pettinella", - "Picklist", - "Playroll", - "Pleo", - "Proxyman", - "Pluginfile", - "Podfile", - "Pokdumss", - "Polska", - "Polski", - "Português", - "Postale", - "Postharvest", - "Postproduction", - "Powerform", - "Precheck", - "Pressable", - "Pressables", - "Proofpoint", - "Priya", - "Protip", - "Précédent", - "QAPR", - "QUICKBOOKS", - "Qonto", - "RAAS", - "RBC", - "RCTI18nUtil", - "RCTIs", - "RCTURL", - "REBOOKED", - "REDIRECTURI", - "REIMBURSER", - "REJECTEDTOSUBMITTER", - "REJECTEDTRANSACTION", - "REPORTPREVIEW", - "RNCORE", - "RNFS", - "RNLinksdk", - "RNTL", - "RNVP", - "ROYCCAT2", - "SPKI", - "RPID", - "RRGGBB", - "RTER", - "Ragnar", - "Raiffeisen", - "Rankable", - "Reauthenticator", - "Rebooked", - "Reimb", - "Reimbursability", - "Reimbursables", - "Reimbursments", - "Renderable", - "Resawing", - "Reupholstery", - "Revolut", - "Roni", - "Rosiclair", - "Rspack", - "SAASPASS", - "SBFJ", - "SCANREADY", - "SCIM", - "SMARTREPORT", - "SONIFICATION", - "SSAE", - "STORYLANE", - "SVFG", - "SVGID", - "Salagatan", - "Saqbd", - "Scaleway", - "Scaleway's", - "Schengen", - "Schiffli", - "Scotiabank", - "Segoe", - "Selec", - "Sepa", - "Sharees", - "Sharons", - "Signup", - "Skydo", - "Slurper", - "Smartscan", - "Société", - "Speedscope", - "Spendesk", - "Splittable", - "Spotnana", - "Strikethrough", - "Subprocessors", - "Subviews", - "Supercenters", - "Svenska", - "Svmy", - "Swedbank", - "Swipeable", - "Symbolicates", - "Synovus", - "TBUM", - "TDOMCATTTOR", - "TIMATIC", - "TOTP", - "TQBQW", - "Talkspace", - "Tele", - "Teleproduction", - "Timothée", - "Touchless", - "Trainline", - "Transpiles", - "Typeform", - "UATP", - "UBOI", - "UBOS", - "UDID", - "UDIDS", - "UIBG", - "UKEU", - "UNSWIPEABLE", - "UPWORK", - "USAA", - "USCA", - "USDVBBA", - "VCLOG", - "Unassigning", - "Uncapitalize", - "Undelete", - "Unlaminated", - "Unmigrated", - "Unsharing", - "Unvalidated", - "VBBA", - "VENDORID", - "VMPD", - "VPAT", - "Valuska", - "Venmo", - "WCAG", - "WDYR", - "Wallester", - "Warchoł", - "Wintrust", - "Woohoo", - "Wooo", - "Wordmark", - "XNOR", - "XYWH", - "Xfermode", - "Xours", - "Xtheirs", - "YAPL", - "YAPLWK", - "YYMM", - "Yapl", - "Yema", - "Zenefit", - "Zenefits", - "Zipaligning", - "Zürcher", - "aaroon", - "abytes", - "accountid", - "addrlen", - "achreimburse", - "actool", - "adbd", - "aeiou", - "airshipconfig", - "airside", - "alrt", - "apikey", - "americanexpress", - "americanexpressfd", - "americanexpressfdx", - "bankofamerica", - "Amina", - "androiddebugkey", - "androidx", - "apksigner", - "apktool", - "applauseauto", - "applauseleads", - "appleauth", - "appleid", - "applesignin", - "applinks", - "approvable", - "approvalstatus", - "appversion", - "archivado", - "armeabi", - "armv7", - "artículo", - "artículos", - "as_siteseach", - "asar", - "assetlinks", - "attributes.accountid", - "attributes.reportid", - "authorised", - "autocompletions", - "autocorrection", - "autodocs", - "autofilled", - "automations", - "autoplay", - "autoreleasepool", - "autoresizesSubviews", - "autoresizing", - "autosync", - "avds", - "backgrounded", - "bamboohr", - "barwidth", - "basehead", - "baselined", - "beforeunload", - "behaviour", - "bigdecimal", - "billpay", - "blahblahblah", - "blakeembrey", - "blankrows", - "bofa", - "bolditalic", - "bootsplash", - "brex", - "bridgeless", - "buildscript", - "cacerts", - "canvaskit", - "capitalone", - "cardreader", - "catmull", - "ccache", - "ccupload", - "cdfbmo", - "changeit", - "chargeback", - "checkmarked", - "chien", - "citi", - "clawback", - "cleartext", - "clippath", - "cloudflarestream", - "cmaps", - "cmjs", - "cocoapods", - "codegen", - "codeshare", - "codesign", - "colorscale", - "commentbubbles", - "contenteditable", - "copiloted", - "copiloting", - "copyable", - "cornerradius", - "cpuprofile", - "creditamount", - "creditcards", - "crios", - "csvexport", - "csvg", - "customairshipextender", - "customfield", - "customise", - "dateexported", - "deapex", - "dgst", - "deapexer", - "debitamount", - "deburr", - "deburred", - "dedupe", - "dedup", - "deeplink", - "deeplinked", - "deeplinking", - "deeplinks", - "delegators", - "delish", - "dependentaxis", - "deployers", - "deprioritizes", - "describedby", - "devportal", - "diems", - "dimen", - "directfeeds", - "displaystatus", - "domainpadding", - "domelementtype", - "domhandler", - "domparser", - "dont", - "DONTWAIT", - "NONBLOCK", - "dotlottie", - "dsyms", - "dylib", - "durationMillis", - "e2edelta", - "ecash", - "ecconnrefused", - "econn", - "effectful", - "electronmon", - "ellipsize", - "emojibase", - "endcapture", - "enddate", - "endfor", - "endgroup", - "enroute", - "entertainm", - "entityid", - "eraa", - "ethnicities", - "eticket", - "evenodd", - "eventmachine", - "evictable", - "exchangerate", - "exchrate", - "exfy", - "exitstatus", - "expensescount", - "expensicorp", - "expensifyhelp", - "expensifylite", - "expensifymono", - "expensifyneue", - "expensifynewkansas", - "expensifyreactnative", - "exportedto", - "fabs", - "falso", - "favicons", - "feedcountry", - "firebaselogging", - "fireroom", - "firstname", - "flac", - "flatlist", - "flexsearch", - "fname", - "fnames", - "focusability", - "focusvisible", - "fontawesome", - "foreignamount", - "formatjs", - "freetext", - "frontpart", - "fullstory", - "gastos", - "gcsc", - "gcse", - "genkey", - "getenv", - "getprop", - "getsentry", - "gibsdk", - "glcode", - "googleusercontent", - "gorhom", - "gpgsign", - "gradlew", - "groupmonth", - "groupweek", - "gscb", - "gsib", - "gsst", - "gödecke", - "hanno", - "hanno_gödecke", - "headshot", - "healthcheck", - "helpdot", - "helpsite", - "hexcode", - "hibob", - "hrefs", - "hris", - "hybridapp", - "iOSQRCode", - "iaco", - "idempotently", - "idfa", - "ifdef", - "imagebutton", - "inbetweenCompo", - "initialises", - "inputmethod", - "instancetype", - "intenthandler", - "ionatan", - "iphonesimulator", - "isemojisonly", - "islarge", - "ismedium", - "isnonreimbursable", - "issmall", - "jank", - "janky", - "jailbroken", - "jarsigner", - "johndoe", - "jridgewell", - "jsSrcsDir", - "jsbundle", - "keyalg", - "keycap", - "keycommand", - "keyevent", - "keypass", - "keysize", - "keytool", - "keyval", - "keyvaluepairs", - "killall", - "kilometre", - "kilometres", - "labelcomponent", - "labelindicator", - "labelindicatorinneroffset", - "labelindicatorouteroffset", - "labelledby", - "labelradius", - "laggy", - "lastiPhoneLogin", - "lastname", - "lefthook", - "libc", - "Libc", - "libc's", - "libexec", - "libstuff", - "licence", - "lightningcss", - "linecap", - "linejoin", - "lineheight", - "lintable", - "lintrk", - "listformat", - "liveupdate", - "locationbias", - "logcat", - "logomark", - "lucene", - "macrotask", - "maildrop", - "manualreimburse", - "mapboxgl", - "marcaaron", - "margelo", - "mateusz", - "mchmod", - "mechler", - "mediumitalic", - "memberof", - "metainfo", - "metatags", - "microtime", - "microtransactions", - "midoffice", - "mimecast", - "miterlimit", - "mkcert", - "mobiexpensifyg", - "mobileprovision", - "moveElemsAttrsToGroup", - "moveGroupAttrsToElems", - "mple", - "mswin", - "msword", - "mtrl", - "multidex", - "mysubdomain", - "navattic", - "navigations", - "nbta", - "ndkversion", - "negsign", - "nesw", - "netinfo", - "netrc", - "newarch", - "newdotreport", - "newhelp", - "ngneat", - "nmanager", - "nocreeps", - "nodownload", - "nonreimbursable", - "noopener", - "noprompt", - "noreferer", - "noreferrer", - "nosymbol", - "noout", - "ntag", - "ntdiary", - "nullptr", - "numberformat", - "nums", - "objc", - "okhttp", - "objdump", - "oblador", - "octocat", - "officedocument", - "oldarch", - "onclosetag", - "oneline", - "oneteam", - "oneui", - "onfido", - "onloaderror", - "onopentag", - "onplayerror", - "ontext", - "onxy", - "oxfmt", - "openxmlformats", - "ordinality", - "organisation", - "originalamount", - "originalcurrency", - "osdk", - "otpauth", - "outform", - "outplant", - "oxfmt", - "padangle", - "parasharrajat", - "passcodes", - "passplus", - "passwordless", - "pathspec", - "payrollcode", - "payrollid", - "pbxproj", - "pdfreport", - "pdfs", - "perdiem", - "perdiems", - "persistable", - "personaltrackcase", - "personaltrackgoal", - "peterparker", - "pftrace", - "pgrep", - "pkey", - "phonenumber", - "picklists", - "pkill", - "pubin", - "pluralrules", - "pnrs", - "podspec", - "podspecs", - "popen3", - "positionMillis", - "preauthorization", - "precheck", - "prescribers", - "presentationml", - "prestep", - "progname", - "proguard", - "purchaseamount", - "purchasecurrency", - "QAPR", - "QBWC", - "qrcode", - "rach", - "reactnative", - "reactnativebackgroundtask", - "reactnativehybridapp", - "reactnativekeycommand", - "reannounce", - "reauthenticating", - "reauthentication", - "rebooking", - "recategorize", - "receiptless", - "recents", - "recyclerview", - "regexpu", - "reimagination", - "reimbursability", - "reimbursementid", - "reimbursible", - "reminted", - "remotedesktop", - "remotesync", - "removeHiddenElems", - "requestee", - "resizeable", - "resultsbox", - "retryable", - "rideshare", - "Rightworks", - "RNCORE", - "RNFS", - "RNLinksdk", - "rnmapbox", - "rock", - "rpartition", - "rsbuild", - "rsdoctor", - "rspack", - "runbook", - "rstrip", - "s3uqn2oe4m85tufi6mqflbfbuajrm2i3", - "safesearch", - "samltool", - "sbaiahmed", - "schedulable", - "scriptname", - "sdkmanager", - "seamless", - "seguiemj", - "sendto", - "sockfd", - "socklen", - "syscalls", - "serveo", - "setuptools", - "sharee", - "shareeEmail", - "sharees", - "shellcheck", - "shellenv", - "shiftedlinesegment", - "shipit", - "shouldshowellipsis", - "signingkey", - "signup", - "Signup", - "sideproject", - "simctl", - "showcerts", - "skia", - "skip_codesigning", - "soloader", - "sockaddr", - "Sockaddr", - "spreadsheetml", - "srgb", - "ssize", - "stackoverflow", - "startdate", - "spki", - "stdev", - "stdlib", - "storepass", - "strikethrough", - "subcomponents", - "subfolders", - "sublicensees", - "sublocality", - "subpages", - "subpremise", - "subprocessors", - "subrates", - "substep", - "substeps", - "subtab", - "subtabs", - "subview", - "superapp", - "superpowered", - "supportal", - "svgs", - "symbolicate", - "symbolicated", - "symbolication", - "symbolspacer", - "systempreferences", - "tabindex", - "taxrate", - "teachersunite", - "testflight", - "textanchor", - "threadsafe", - "thumbsup", - "tickcount", - "tickformat", - "tickvalues", - "tnode", - "tobe", - "toggleable", - "togglefullscreen", - "tosorted", - "touchables", - "tranid", - "trinet", - "trivago", - "trustcacerts", - "tsgo", - "twocards", - "uatp", - "uimanager", - "ukkonen", - "unapprove", - "unapproves", - "unassigning", - "unassignment", - "unassigns", - "uncategorized", - "unflushed", - "unheld", - "unhold", - "unimodules", - "uninstallations", - "unminified", - "unmuting", - "unredacted", - "unregisters", - "unreimbursed", - "unscrollable", - "unsharing", - "unsubmitted", - "uppercased", - "upsell", - "urbanairship", - "urlset", - "useAutolayout", - "useCallback", - "useMemo", - "useblacksmith", - "usernotifications", - "utilise", - "vcpu", - "verticalanchor", - "victoryaxis", - "victorybar", - "victorychart", - "victorygroup", - "victorylabel", - "victorylegend", - "victoryline", - "victorypie", - "viewability", - "viewport", - "viewports", - "voidings", - "vorbis", - "vvcf", - "vypj", - "waitlist", - "waitlisted", - "webapps", - "webauthn", - "webcredentials", - "webrtc", - "welldone", - "wellsfargo", - "widgetkit", - "wordprocessingml", - "worklet", - "workletization", - "worklets", - "workshopping", - "workspacename", - "worktree", - "worktrees", - "writeitdown", - "xcconfig", - "xcodeproj", - "xcpretty", - "xcprivacy", - "xcrun", - "xcshareddata", - "xctrace", - "xcuserdata", - "xcworkspace", - "xdescribe", - "xero", - "xlarge", - "xlink", - "xmlgateway", - "yalc", - "yourcompany", - "yourname", - "zencdn", - "zipalign", - "zoneinfo", - "zxcv", - "zxldvw", - "águero", - "مثال", - "claudedesktop", - "claudecodeex", - "NitroFetch", - "Prefetch", - "Prefetcher", - "knip", - "lottiefiles", - "jsitooling", - "Refetched" - ], - "ignorePaths": [ - ".gitignore", - "src/languages/de.ts", - "src/languages/es.ts", - "src/languages/fr.ts", - "src/languages/it.ts", - "src/languages/ja.ts", - "src/languages/nl.ts", - "src/languages/pl.ts", - "src/languages/pt-BR.ts", - "src/languages/zh-hans.ts", - "prompts/translation/de.ts", - "prompts/translation/es.ts", - "prompts/translation/fr.ts", - "prompts/translation/it.ts", - "prompts/translation/ja.ts", - "prompts/translation/nl.ts", - "prompts/translation/pl.ts", - "prompts/translation/pt-BR.ts", - "prompts/translation/zh-hans.ts", - "android/app/BUCK", - "android/app/build_defs.bzl", - "android/app/build.gradle", - "android/app/google-services-DEV.json", - "android/app/google-services.json", - "android/app/proguard-rules.pro", - "android/app/src/development/assets/airshipconfig.properties", - "android/build.gradle", - "android/gradle.properties", - "android/gradle/wrapper/gradle-wrapper.properties", - "android/gradlew", - "android/gradlew.bat", - "assets/emojis/common.ts", - "assets/emojis/en.ts", - "assets/emojis/es.ts", - "contributingGuides/HOW_TO_AUDIT_TRANSLATIONS.md", - "patches/**", - "docs/assets/Files/**", - "docs/sitemap.xml", - "ios/NewExpensify.xcodeproj/**", - "ios/GoogleService-Info.plist", - "ios/GoogleService-Info-DEV.plist", - "ios/AirshipConfig.plist", - "src/libs/Avatars/*", - "Mobile-Expensify", - "modules/ExpensifyNitroUtils/nitrogen/**", - "modules/ExpensifyNitroUtils/android/build.gradle", - "modules/ExpensifyNitroUtils/android/src/main/cpp/**", - "src/TIMEZONES.ts", - "tests/unit/EmojiTest.ts", - "tests/unit/FastSearchTest.ts", - "tests/unit/useLocalizeTest.tsx", - "tests/unit/removeInvisibleCharacters.ts", - "tests/unit/searchCountryOptionsTest.ts", - "tests/unit/currencyList.json", - "tests/unit/ValidationUtilsTest.ts", - "src/CONST/index.ts", - "src/libs/SearchParser/*", - "modules/group-ib-fp", - "web/snippets/gib.js", - "tests/unit/hooks/useLetterAvatars.test.tsx", - "tests/unit/usePersonalDetailSearchSelectorTest.tsx", - "config/eslint/eslint.seatbelt.tsv", - "tests/unit/BankAccountUtilsTest.ts" - ], - "ignoreRegExpList": ["@assets/.*"], - "useGitignore": true + "language": "en", + "enableGlobDot": false, + "cache": { + "useCache": true, + "cacheLocation": ".cspellcache" + }, + "words": [ + "--longpress", + "ACCOUNTCODE", + "ADDCOMMENT", + "ADFS", + "AMRO", + "APCA", + "APPL", + "ARGB", + "ARNK", + "ARROWDOWN", + "ARROWLEFT", + "ARROWRIGHT", + "ARROWUP", + "ASPAC", + "AUTOAPPROVE", + "AUTOREIMBURSED", + "AUTOREPORTING", + "AVURL", + "Accelo", + "Addendums", + "Aeroplan", + "Aircall", + "Airplus", + "Airwallex", + "Amal", + "Amal's", + "Amina", + "Areport", + "Authy", + "BBVA", + "BILLCOM", + "BMO", + "BNDCCAMM", + "BNDL", + "BOFMCAM2", + "BROWSABLE", + "BYOC", + "BambooHr", + "Bancorporation", + "Banque", + "Bartek", + "Batchinator", + "Belfius", + "Billpay", + "Bobbeth", + "Borderless", + "Botify", + "Broadwoven", + "Bronn", + "Buildscript", + "Bunq", + "Bushwick", + "CARDFROZEN", + "CARDUNFROZEN", + "CARDDEACTIVATED", + "CAROOT", + "CCDQCAMM", + "CFPB", + "CIBC", + "CIBCCATT", + "CLIA", + "CLIENTID", + "CPPFLAGS", + "CREDS", + "CROSSLINK", + "Caixa", + "Carta", + "Certinia", + "Certinia's", + "Charleson", + "Checkmark", + "Chronos", + "Cliqbook", + "Codat", + "Codice", + "Combustors", + "Corpay", + "Countertop", + "Cronet", + "Crédit", + "DFOLLY", + "DSYM", + "DYNAMICEXTERNAL", + "Danske", + "Deel", + "Depósitos", + "Desjardins", + "Deutsch", + "Dishoom", + "DocuSign", + "Drycleaners", + "Drycleaning", + "Dtype", + "Dumpty", + "EDDSA", + "EDIFACT", + "EMEA", + "ENVFILE", + "ERECEIPT", + "ERECEIPTS", + "ESTA", + "EUVAT", + "EXPENSIDEV", + "EXPENSIFYAPI", + "EXPENSIFYPDBUSINESS", + "EXPENSIFYPDTEAM", + "EXPENSIFYWEB", + "Egencia", + "Electromedical", + "Electrotherapeutic", + "Emphemeral", + "Entra", + "Ephermeral", + "Erste", + "Español", + "Expatriot", + "Expensable", + "Expensi", + "Expensicon", + "Expensicons", + "Expensidev", + "Expensifier", + "Expensiworks", + "FLJZ", + "FWTV", + "FXHF", + "Fbclid", + "Ferroalloy", + "FinancialForce", + "Fiscale", + "Flamegraph", + "Français", + "Frederico", + "Fábio", + "GBRRBR", + "GDSO", + "GEOLOCATION", + "Gaber", + "Gclid", + "Geral", + "gitlink", + "Grantmaking", + "Gsuite", + "Générale", + "HKBCCATT", + "HRMS", + "HSBCSGS", + "Handelsbanken", + "Handtool", + "Heathrow", + "HiBob", + "Highfive", + "Highlightable", + "Hoverable", + "Humpty", + "Hydronics", + "IBTA", + "IDEIN", + "IHDR", + "INTECOMS", + "IPHONEOS", + "ITIN", + "ITSM", + "Idology", + "Inactives", + "Inclusivity", + "innerradius", + "Intacct", + "Invoicify", + "Italiano", + "Jakub", + "KHTML", + "Kantonalbank", + "Kearny", + "Kolkata", + "Kort", + "Kowalski", + "Krasoń", + "LDFLAGS", + "LHNGBR", + "LIBCPP", + "LIGHTBOXES", + "LLDB", + "Lagertha", + "Limpich", + "Lothbrok", + "Luhn", + "MARKASRESOLVED", + "MCTEST", + "MMYY", + "MVCP", + "MYOB", + "Maat", + "Mahal", + "Mapbox", + "Marcin", + "Marqeta", + "McAfee", + "Michelina", + "Melvin", + "MelvinBot", + "Menlo", + "CODEOWNERS", + "luacmartins", + "mountiny", + "tgolen", + "Microtransaction", + "Miniwarehouses", + "Mobasher", + "mockbank", + "Monzo", + "Multifactor", + "NAICS", + "NANP", + "NBSA", + "NETSUITE", + "NEWDOT", + "NEWEXPENSIFY", + "NGROK", + "NLRA", + "NMLS", + "NOSCCATT", + "NSQS", + "NSQSOAuth", + "NSURL", + "NSUTF8", + "NTSB", + "Nacha", + "Namecheap", + "Nanobiotechnology", + "Navan", + "Nederlands", + "Nesw", + "Neue", + "Nonchocolate", + "Noncitrus", + "Nondepository", + "Nonfinancial", + "Nonmortgage", + "Nonnull", + "Nonstore", + "Nonupholstered", + "Noto", + "Novobanco", + "Nuevo", + "OCBC", + "OLDDOT", + "ONYXKEY", + "ONYXKEYS", + "Oncorp", + "PINATM", + "PINATM", + "PINGPONG", + "PKCE", + "POLICYCHANGELOG_ADD_EMPLOYEE", + "POWERFORM", + "Parcelable", + "Passwordless", + "Payoneer", + "Pekao", + "Perfetto", + "Pettinella", + "Picklist", + "Playroll", + "Pleo", + "Proxyman", + "Pluginfile", + "Podfile", + "Pokdumss", + "Polska", + "Polski", + "Português", + "Postale", + "Postharvest", + "Postproduction", + "Powerform", + "Precheck", + "Pressable", + "Pressables", + "Proofpoint", + "Priya", + "Protip", + "Précédent", + "QAPR", + "QUICKBOOKS", + "Qonto", + "RAAS", + "RBC", + "RCTI18nUtil", + "RCTIs", + "RCTURL", + "REBOOKED", + "REDIRECTURI", + "REIMBURSER", + "REJECTEDTOSUBMITTER", + "REJECTEDTRANSACTION", + "REPORTPREVIEW", + "RNCORE", + "RNFS", + "RNLinksdk", + "RNTL", + "RNVP", + "ROYCCAT2", + "SPKI", + "RPID", + "RRGGBB", + "RTER", + "Ragnar", + "Raiffeisen", + "Rankable", + "Reauthenticator", + "Rebooked", + "Reimb", + "Reimbursability", + "Reimbursables", + "Reimbursments", + "Renderable", + "Resawing", + "Reupholstery", + "Revolut", + "Roni", + "Rosiclair", + "Rspack", + "SAASPASS", + "SBFJ", + "SCANREADY", + "SCIM", + "SMARTREPORT", + "SONIFICATION", + "SSAE", + "STORYLANE", + "SVFG", + "SVGID", + "Salagatan", + "Saqbd", + "Scaleway", + "Scaleway's", + "Schengen", + "Schiffli", + "Scotiabank", + "Segoe", + "Selec", + "Sepa", + "Sharees", + "Sharons", + "Signup", + "Skydo", + "Slurper", + "Smartscan", + "Société", + "Speedscope", + "Spendesk", + "Splittable", + "Spotnana", + "Strikethrough", + "Subprocessors", + "Subviews", + "Supercenters", + "Svenska", + "Svmy", + "Swedbank", + "Swipeable", + "Symbolicates", + "Synovus", + "TBUM", + "TDOMCATTTOR", + "TIMATIC", + "TOTP", + "TQBQW", + "Talkspace", + "Tele", + "Teleproduction", + "Timothée", + "Touchless", + "Trainline", + "Transpiles", + "Typeform", + "UATP", + "UBOI", + "UBOS", + "UDID", + "UDIDS", + "UIBG", + "UKEU", + "UNSWIPEABLE", + "UPWORK", + "USAA", + "USCA", + "USDVBBA", + "VCLOG", + "Unassigning", + "Uncapitalize", + "Undelete", + "Unlaminated", + "Unmigrated", + "Unsharing", + "Unvalidated", + "VBBA", + "VENDORID", + "VMPD", + "VPAT", + "Valuska", + "Venmo", + "WCAG", + "WDYR", + "Wallester", + "Warchoł", + "Wintrust", + "Woohoo", + "Wooo", + "Wordmark", + "XNOR", + "XYWH", + "Xfermode", + "Xours", + "Xtheirs", + "YAPL", + "YAPLWK", + "YYMM", + "Yapl", + "Yema", + "Zenefit", + "Zenefits", + "Zipaligning", + "Zürcher", + "aaroon", + "abytes", + "accountid", + "addrlen", + "achreimburse", + "actool", + "adbd", + "aeiou", + "airshipconfig", + "airside", + "alrt", + "apikey", + "americanexpress", + "americanexpressfd", + "americanexpressfdx", + "bankofamerica", + "Amina", + "androiddebugkey", + "androidx", + "apksigner", + "apktool", + "applauseauto", + "applauseleads", + "appleauth", + "appleid", + "applesignin", + "applinks", + "approvable", + "approvalstatus", + "appversion", + "archivado", + "armeabi", + "armv7", + "artículo", + "artículos", + "as_siteseach", + "asar", + "assetlinks", + "attributes.accountid", + "attributes.reportid", + "authorised", + "autocompletions", + "autocorrection", + "autodocs", + "autofilled", + "automations", + "autoplay", + "autoreleasepool", + "autoresizesSubviews", + "autoresizing", + "autosync", + "avds", + "backgrounded", + "bamboohr", + "barwidth", + "basehead", + "baselined", + "beforeunload", + "behaviour", + "bigdecimal", + "billpay", + "blahblahblah", + "blakeembrey", + "blankrows", + "bofa", + "bolditalic", + "bootsplash", + "brex", + "bridgeless", + "buildscript", + "cacerts", + "canvaskit", + "capitalone", + "cardreader", + "catmull", + "ccache", + "ccupload", + "cdfbmo", + "changeit", + "chargeback", + "checkmarked", + "chien", + "citi", + "clawback", + "cleartext", + "clippath", + "cloudflarestream", + "cmaps", + "cmjs", + "cocoapods", + "codegen", + "codeshare", + "codesign", + "colorscale", + "commentbubbles", + "contenteditable", + "copiloted", + "copiloting", + "copyable", + "cornerradius", + "cpuprofile", + "creditamount", + "creditcards", + "crios", + "csvexport", + "csvg", + "customairshipextender", + "customfield", + "customise", + "dateexported", + "deapex", + "dgst", + "deapexer", + "debitamount", + "deburr", + "deburred", + "dedupe", + "dedup", + "deeplink", + "deeplinked", + "deeplinking", + "deeplinks", + "delegators", + "delish", + "dependentaxis", + "deployers", + "deprioritizes", + "describedby", + "devportal", + "diems", + "dimen", + "directfeeds", + "displaystatus", + "domainpadding", + "domelementtype", + "domhandler", + "domparser", + "dont", + "DONTWAIT", + "NONBLOCK", + "dotlottie", + "dsyms", + "dylib", + "durationMillis", + "e2edelta", + "ecash", + "ecconnrefused", + "econn", + "effectful", + "electronmon", + "ellipsize", + "emojibase", + "endcapture", + "enddate", + "endfor", + "endgroup", + "enroute", + "entertainm", + "entityid", + "eraa", + "ethnicities", + "eticket", + "evenodd", + "eventmachine", + "evictable", + "exchangerate", + "exchrate", + "exfy", + "exitstatus", + "expensescount", + "expensicorp", + "expensifyhelp", + "expensifylite", + "expensifymono", + "expensifyneue", + "expensifynewkansas", + "expensifyreactnative", + "exportedto", + "fabs", + "falso", + "favicons", + "feedcountry", + "firebaselogging", + "fireroom", + "firstname", + "flac", + "flatlist", + "flexsearch", + "fname", + "fnames", + "focusability", + "focusvisible", + "fontawesome", + "foreignamount", + "formatjs", + "freetext", + "frontpart", + "fullstory", + "gastos", + "gcsc", + "gcse", + "genkey", + "getenv", + "getprop", + "getsentry", + "gibsdk", + "glcode", + "googleusercontent", + "gorhom", + "gpgsign", + "gradlew", + "groupmonth", + "groupweek", + "gscb", + "gsib", + "gsst", + "gödecke", + "hanno", + "hanno_gödecke", + "headshot", + "healthcheck", + "helpdot", + "helpsite", + "hexcode", + "hibob", + "hrefs", + "hris", + "hybridapp", + "iOSQRCode", + "iaco", + "idempotently", + "idfa", + "ifdef", + "imagebutton", + "inbetweenCompo", + "initialises", + "inputmethod", + "instancetype", + "intenthandler", + "ionatan", + "iphonesimulator", + "isemojisonly", + "islarge", + "ismedium", + "isnonreimbursable", + "issmall", + "jank", + "janky", + "jailbroken", + "jarsigner", + "johndoe", + "jridgewell", + "jsSrcsDir", + "jsbundle", + "keyalg", + "keycap", + "keycommand", + "keyevent", + "keypass", + "keysize", + "keytool", + "keyval", + "keyvaluepairs", + "killall", + "kilometre", + "kilometres", + "labelcomponent", + "labelindicator", + "labelindicatorinneroffset", + "labelindicatorouteroffset", + "labelledby", + "labelradius", + "laggy", + "lastiPhoneLogin", + "lastname", + "lefthook", + "libc", + "Libc", + "libc's", + "libexec", + "libstuff", + "licence", + "lightningcss", + "linecap", + "linejoin", + "lineheight", + "lintable", + "lintrk", + "listformat", + "liveupdate", + "locationbias", + "logcat", + "logomark", + "lucene", + "macrotask", + "maildrop", + "manualreimburse", + "mapboxgl", + "marcaaron", + "margelo", + "mateusz", + "mchmod", + "mechler", + "mediumitalic", + "memberof", + "metainfo", + "metatags", + "microtime", + "microtransactions", + "midoffice", + "mimecast", + "miterlimit", + "mkcert", + "mobiexpensifyg", + "mobileprovision", + "moveElemsAttrsToGroup", + "moveGroupAttrsToElems", + "mple", + "mswin", + "msword", + "mtrl", + "multidex", + "mysubdomain", + "navattic", + "navigations", + "nbta", + "ndkversion", + "negsign", + "nesw", + "netinfo", + "netrc", + "newarch", + "newdotreport", + "newhelp", + "ngneat", + "nmanager", + "nocreeps", + "nodownload", + "nonreimbursable", + "noopener", + "noprompt", + "noreferer", + "noreferrer", + "nosymbol", + "noout", + "ntag", + "ntdiary", + "nullptr", + "numberformat", + "nums", + "objc", + "okhttp", + "objdump", + "oblador", + "octocat", + "officedocument", + "oldarch", + "onclosetag", + "oneline", + "oneteam", + "oneui", + "onfido", + "onloaderror", + "onopentag", + "onplayerror", + "ontext", + "onxy", + "oxfmt", + "openxmlformats", + "ordinality", + "organisation", + "originalamount", + "originalcurrency", + "osdk", + "otpauth", + "outform", + "outplant", + "oxfmt", + "padangle", + "parasharrajat", + "passcodes", + "passplus", + "passwordless", + "pathspec", + "payrollcode", + "payrollid", + "pbxproj", + "pdfreport", + "pdfs", + "perdiem", + "perdiems", + "persistable", + "personaltrackcase", + "personaltrackgoal", + "peterparker", + "pftrace", + "pgrep", + "pkey", + "phonenumber", + "picklists", + "pkill", + "pubin", + "pluralrules", + "pnrs", + "podspec", + "podspecs", + "popen3", + "positionMillis", + "preauthorization", + "precheck", + "prescribers", + "presentationml", + "prestep", + "progname", + "proguard", + "purchaseamount", + "purchasecurrency", + "QAPR", + "QBWC", + "qrcode", + "rach", + "reactnative", + "reactnativebackgroundtask", + "reactnativehybridapp", + "reactnativekeycommand", + "reannounce", + "reauthenticating", + "reauthentication", + "rebooking", + "recategorize", + "receiptless", + "recents", + "recyclerview", + "regexpu", + "reimagination", + "reimbursability", + "reimbursementid", + "reimbursible", + "reminted", + "remotedesktop", + "remotesync", + "removeHiddenElems", + "requestee", + "resizeable", + "resultsbox", + "retryable", + "rideshare", + "Rightworks", + "RNCORE", + "RNFS", + "RNLinksdk", + "rnmapbox", + "rock", + "rpartition", + "rsbuild", + "rsdoctor", + "rspack", + "runbook", + "rstrip", + "s3uqn2oe4m85tufi6mqflbfbuajrm2i3", + "safesearch", + "samltool", + "sbaiahmed", + "schedulable", + "scriptname", + "sdkmanager", + "seamless", + "seguiemj", + "sendto", + "sockfd", + "socklen", + "syscalls", + "serveo", + "setuptools", + "sharee", + "shareeEmail", + "sharees", + "shellcheck", + "shellenv", + "shiftedlinesegment", + "shipit", + "shouldshowellipsis", + "signingkey", + "signup", + "Signup", + "sideproject", + "simctl", + "showcerts", + "skia", + "skip_codesigning", + "soloader", + "sockaddr", + "Sockaddr", + "spreadsheetml", + "srgb", + "ssize", + "stackoverflow", + "startdate", + "spki", + "stdev", + "stdlib", + "storepass", + "strikethrough", + "subcomponents", + "subfolders", + "sublicensees", + "sublocality", + "subpages", + "subpremise", + "subprocessors", + "subrates", + "substep", + "substeps", + "subtab", + "subtabs", + "subview", + "superapp", + "superpowered", + "supportal", + "svgs", + "symbolicate", + "symbolicated", + "symbolication", + "symbolspacer", + "systempreferences", + "tabindex", + "taxrate", + "teachersunite", + "testflight", + "textanchor", + "threadsafe", + "thumbsup", + "tickcount", + "tickformat", + "tickvalues", + "tnode", + "tobe", + "toggleable", + "togglefullscreen", + "tosorted", + "touchables", + "tranid", + "trinet", + "trivago", + "trustcacerts", + "tsgo", + "twocards", + "uatp", + "uimanager", + "ukkonen", + "unapprove", + "unapproves", + "unassigning", + "unassignment", + "unassigns", + "uncategorized", + "unflushed", + "unheld", + "unhold", + "unimodules", + "uninstallations", + "unminified", + "unmuting", + "unredacted", + "unregisters", + "unreimbursed", + "unscrollable", + "unsharing", + "unsubmitted", + "uppercased", + "upsell", + "urbanairship", + "urlset", + "useAutolayout", + "useCallback", + "useMemo", + "useblacksmith", + "usernotifications", + "utilise", + "vcpu", + "verticalanchor", + "victoryaxis", + "victorybar", + "victorychart", + "victorygroup", + "victorylabel", + "victorylegend", + "victoryline", + "victorypie", + "viewability", + "viewport", + "viewports", + "voidings", + "vorbis", + "vvcf", + "vypj", + "waitlist", + "waitlisted", + "webapps", + "webauthn", + "webcredentials", + "webrtc", + "welldone", + "wellsfargo", + "widgetkit", + "wordprocessingml", + "worklet", + "workletization", + "worklets", + "workshopping", + "workspacename", + "worktree", + "worktrees", + "writeitdown", + "xcconfig", + "xcodeproj", + "xcpretty", + "xcprivacy", + "xcrun", + "xcshareddata", + "xctrace", + "xcuserdata", + "xcworkspace", + "xdescribe", + "xero", + "xlarge", + "xlink", + "xmlgateway", + "yalc", + "yourcompany", + "yourname", + "zencdn", + "zipalign", + "zoneinfo", + "zxcv", + "zxldvw", + "águero", + "مثال", + "claudedesktop", + "claudecodeex", + "NitroFetch", + "Prefetch", + "Prefetcher", + "knip", + "lottiefiles", + "jsitooling", + "Refetched" + ], + "ignorePaths": [ + ".gitignore", + "src/languages/de.ts", + "src/languages/es.ts", + "src/languages/fr.ts", + "src/languages/it.ts", + "src/languages/ja.ts", + "src/languages/nl.ts", + "src/languages/pl.ts", + "src/languages/pt-BR.ts", + "src/languages/zh-hans.ts", + "prompts/translation/de.ts", + "prompts/translation/es.ts", + "prompts/translation/fr.ts", + "prompts/translation/it.ts", + "prompts/translation/ja.ts", + "prompts/translation/nl.ts", + "prompts/translation/pl.ts", + "prompts/translation/pt-BR.ts", + "prompts/translation/zh-hans.ts", + "android/app/BUCK", + "android/app/build_defs.bzl", + "android/app/build.gradle", + "android/app/google-services-DEV.json", + "android/app/google-services.json", + "android/app/proguard-rules.pro", + "android/app/src/development/assets/airshipconfig.properties", + "android/build.gradle", + "android/gradle.properties", + "android/gradle/wrapper/gradle-wrapper.properties", + "android/gradlew", + "android/gradlew.bat", + "assets/emojis/common.ts", + "assets/emojis/en.ts", + "assets/emojis/es.ts", + "contributingGuides/HOW_TO_AUDIT_TRANSLATIONS.md", + "patches/**", + "docs/assets/Files/**", + "docs/sitemap.xml", + "ios/NewExpensify.xcodeproj/**", + "ios/GoogleService-Info.plist", + "ios/GoogleService-Info-DEV.plist", + "ios/AirshipConfig.plist", + "src/libs/Avatars/*", + "Mobile-Expensify", + "modules/ExpensifyNitroUtils/nitrogen/**", + "modules/ExpensifyNitroUtils/android/build.gradle", + "modules/ExpensifyNitroUtils/android/src/main/cpp/**", + "src/TIMEZONES.ts", + "tests/unit/EmojiTest.ts", + "tests/unit/FastSearchTest.ts", + "tests/unit/useLocalizeTest.tsx", + "tests/unit/removeInvisibleCharacters.ts", + "tests/unit/searchCountryOptionsTest.ts", + "tests/unit/currencyList.json", + "tests/unit/ValidationUtilsTest.ts", + "src/CONST/index.ts", + "src/libs/SearchParser/*", + "modules/group-ib-fp", + "web/snippets/gib.js", + "tests/unit/hooks/useLetterAvatars.test.tsx", + "tests/unit/usePersonalDetailSearchSelectorTest.tsx", + "config/eslint/eslint.seatbelt.tsv", + "tests/unit/BankAccountUtilsTest.ts" + ], + "ignoreRegExpList": ["@assets/.*"], + "useGitignore": true }