diff --git a/.eslintrc.js b/.eslintrc.js index dcfa10e2a03..f5b43f872c9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -245,16 +245,16 @@ module.exports = { './packages/api/app/**/*', './packages/crdt/**/*', './packages/desktop-client/**/*', - // './packages/desktop-electron/**/*', - // './packages/eslint-plugin-actual/**/*', - // './packages/loot-core/*', - // './packages/loot-core/src/client/**/*', - // './packages/loot-core/src/mocks/**/*', - // './packages/loot-core/src/platform/**/*', + './packages/desktop-electron/**/*', + './packages/eslint-plugin-actual/**/*', + './packages/loot-core/*', + './packages/loot-core/src/*', + './packages/loot-core/src/client/**/*', + './packages/loot-core/src/mocks/**/*', + './packages/loot-core/src/platform/**/*', // './packages/loot-core/src/server/**/*', - // './packages/loot-core/src/shared/**/*', - // './packages/loot-core/src/types/**/*', - // './packages/loot-core/webpack/**/*', + './packages/loot-core/src/shared/**/*', + './packages/loot-core/src/types/**/*', ], rules: { 'import/no-default-export': 'warn', diff --git a/packages/desktop-client/src/components/FinancesApp.tsx b/packages/desktop-client/src/components/FinancesApp.tsx index 04581c111c9..823cfd7e7b3 100644 --- a/packages/desktop-client/src/components/FinancesApp.tsx +++ b/packages/desktop-client/src/components/FinancesApp.tsx @@ -16,7 +16,7 @@ import hotkeys from 'hotkeys-js'; import { AccountsProvider } from 'loot-core/src/client/data-hooks/accounts'; import { PayeesProvider } from 'loot-core/src/client/data-hooks/payees'; import { SpreadsheetProvider } from 'loot-core/src/client/SpreadsheetProvider'; -import checkForUpdateNotification from 'loot-core/src/client/update-notification'; +import { checkForUpdateNotification } from 'loot-core/src/client/update-notification'; import * as undo from 'loot-core/src/platform/client/undo'; import { useActions } from '../hooks/useActions'; diff --git a/packages/desktop-client/src/components/NotesButton.tsx b/packages/desktop-client/src/components/NotesButton.tsx index 99942c70828..6fb363db0f2 100644 --- a/packages/desktop-client/src/components/NotesButton.tsx +++ b/packages/desktop-client/src/components/NotesButton.tsx @@ -1,8 +1,8 @@ import React, { useState } from 'react'; -import q from 'loot-core/src/client/query-helpers'; import { useLiveQuery } from 'loot-core/src/client/query-hooks'; import { send } from 'loot-core/src/platform/client/fetch'; +import { q } from 'loot-core/src/shared/query'; import { SvgCustomNotesPaper } from '../icons/v2'; import { type CSSProperties, theme } from '../style'; diff --git a/packages/desktop-client/src/components/PrivacyFilter.tsx b/packages/desktop-client/src/components/PrivacyFilter.tsx index c0a46dec87c..3f55382c66d 100644 --- a/packages/desktop-client/src/components/PrivacyFilter.tsx +++ b/packages/desktop-client/src/components/PrivacyFilter.tsx @@ -6,7 +6,7 @@ import React, { type ReactNode, } from 'react'; -import usePrivacyMode from 'loot-core/src/client/privacy'; +import { usePrivacyMode } from 'loot-core/src/client/privacy'; import { useResponsive } from '../ResponsiveProvider'; diff --git a/packages/desktop-client/src/components/accounts/Account.jsx b/packages/desktop-client/src/components/accounts/Account.jsx index 296ded813aa..a91ad99ee55 100644 --- a/packages/desktop-client/src/components/accounts/Account.jsx +++ b/packages/desktop-client/src/components/accounts/Account.jsx @@ -12,9 +12,10 @@ import { useCachedSchedules, } from 'loot-core/src/client/data-hooks/schedules'; import * as queries from 'loot-core/src/client/queries'; -import q, { runQuery, pagedQuery } from 'loot-core/src/client/query-helpers'; +import { runQuery, pagedQuery } from 'loot-core/src/client/query-helpers'; import { send, listen } from 'loot-core/src/platform/client/fetch'; import { currentDay } from 'loot-core/src/shared/months'; +import { q } from 'loot-core/src/shared/query'; import { getScheduledAmount } from 'loot-core/src/shared/schedules'; import { deleteTransaction, @@ -864,7 +865,12 @@ class AccountInternal extends PureComponent { } }; - if (name === 'amount' || name === 'payee' || name === 'account' || name === 'date') { + if ( + name === 'amount' || + name === 'payee' || + name === 'account' || + name === 'date' + ) { const { data } = await runQuery( q('transactions') .filter({ id: { $oneof: ids }, reconciled: true }) diff --git a/packages/desktop-client/src/components/accounts/Balance.jsx b/packages/desktop-client/src/components/accounts/Balance.jsx index f59e11c33a0..f2cb12c752f 100644 --- a/packages/desktop-client/src/components/accounts/Balance.jsx +++ b/packages/desktop-client/src/components/accounts/Balance.jsx @@ -1,7 +1,7 @@ import React from 'react'; import { useCachedSchedules } from 'loot-core/src/client/data-hooks/schedules'; -import q from 'loot-core/src/client/query-helpers'; +import { q } from 'loot-core/src/shared/query'; import { getScheduledAmount } from 'loot-core/src/shared/schedules'; import { useSelectedItems } from '../../hooks/useSelected'; diff --git a/packages/desktop-client/src/components/budget/report/ReportComponents.tsx b/packages/desktop-client/src/components/budget/report/ReportComponents.tsx index 7359c2ccde7..b50cb9171a0 100644 --- a/packages/desktop-client/src/components/budget/report/ReportComponents.tsx +++ b/packages/desktop-client/src/components/budget/report/ReportComponents.tsx @@ -1,7 +1,7 @@ import React, { memo, useState } from 'react'; import { reportBudget } from 'loot-core/src/client/queries'; -import evalArithmetic from 'loot-core/src/shared/arithmetic'; +import { evalArithmetic } from 'loot-core/src/shared/arithmetic'; import { integerToCurrency, amountToInteger } from 'loot-core/src/shared/util'; import { useFeatureFlag } from '../../../hooks/useFeatureFlag'; diff --git a/packages/desktop-client/src/components/budget/rollover/HoldTooltip.tsx b/packages/desktop-client/src/components/budget/rollover/HoldTooltip.tsx index be1ed2438de..f6909266bbc 100644 --- a/packages/desktop-client/src/components/budget/rollover/HoldTooltip.tsx +++ b/packages/desktop-client/src/components/budget/rollover/HoldTooltip.tsx @@ -7,7 +7,7 @@ import React, { } from 'react'; import { useSpreadsheet } from 'loot-core/src/client/SpreadsheetProvider'; -import evalArithmetic from 'loot-core/src/shared/arithmetic'; +import { evalArithmetic } from 'loot-core/src/shared/arithmetic'; import { integerToCurrency, amountToInteger } from 'loot-core/src/shared/util'; import { Button } from '../../common/Button'; diff --git a/packages/desktop-client/src/components/budget/rollover/RolloverComponents.tsx b/packages/desktop-client/src/components/budget/rollover/RolloverComponents.tsx index 847a1e2fbeb..7f5b0bac23e 100644 --- a/packages/desktop-client/src/components/budget/rollover/RolloverComponents.tsx +++ b/packages/desktop-client/src/components/budget/rollover/RolloverComponents.tsx @@ -1,7 +1,7 @@ import React, { memo, useState } from 'react'; import { rolloverBudget } from 'loot-core/src/client/queries'; -import evalArithmetic from 'loot-core/src/shared/arithmetic'; +import { evalArithmetic } from 'loot-core/src/shared/arithmetic'; import { integerToCurrency, amountToInteger } from 'loot-core/src/shared/util'; import { useFeatureFlag } from '../../../hooks/useFeatureFlag'; diff --git a/packages/desktop-client/src/components/budget/rollover/TransferTooltip.tsx b/packages/desktop-client/src/components/budget/rollover/TransferTooltip.tsx index 6e6f90c24e8..f52aee4c584 100644 --- a/packages/desktop-client/src/components/budget/rollover/TransferTooltip.tsx +++ b/packages/desktop-client/src/components/budget/rollover/TransferTooltip.tsx @@ -6,7 +6,7 @@ import React, { } from 'react'; import { useSpreadsheet } from 'loot-core/src/client/SpreadsheetProvider'; -import evalArithmetic from 'loot-core/src/shared/arithmetic'; +import { evalArithmetic } from 'loot-core/src/shared/arithmetic'; import { integerToCurrency, amountToInteger } from 'loot-core/src/shared/util'; import { useCategories } from '../../../hooks/useCategories'; diff --git a/packages/desktop-client/src/components/modals/CategoryGroupMenu.tsx b/packages/desktop-client/src/components/modals/CategoryGroupMenu.tsx index 1aa944beeb5..21f91d18ecb 100644 --- a/packages/desktop-client/src/components/modals/CategoryGroupMenu.tsx +++ b/packages/desktop-client/src/components/modals/CategoryGroupMenu.tsx @@ -1,7 +1,7 @@ import React, { type ComponentProps, useState } from 'react'; import { useLiveQuery } from 'loot-core/src/client/query-hooks'; -import q from 'loot-core/src/shared/query'; +import { q } from 'loot-core/src/shared/query'; import { type CategoryGroupEntity } from 'loot-core/src/types/models'; import { useCategories } from '../../hooks/useCategories'; diff --git a/packages/desktop-client/src/components/modals/CategoryMenu.tsx b/packages/desktop-client/src/components/modals/CategoryMenu.tsx index 9d9f9ae13bc..27531302cf5 100644 --- a/packages/desktop-client/src/components/modals/CategoryMenu.tsx +++ b/packages/desktop-client/src/components/modals/CategoryMenu.tsx @@ -1,7 +1,7 @@ import React, { useState } from 'react'; import { useLiveQuery } from 'loot-core/src/client/query-hooks'; -import q from 'loot-core/src/shared/query'; +import { q } from 'loot-core/src/shared/query'; import { type CategoryEntity } from 'loot-core/src/types/models'; import { useCategories } from '../../hooks/useCategories'; diff --git a/packages/desktop-client/src/components/modals/EditRule.jsx b/packages/desktop-client/src/components/modals/EditRule.jsx index 159bd14414e..661cc799e8c 100644 --- a/packages/desktop-client/src/components/modals/EditRule.jsx +++ b/packages/desktop-client/src/components/modals/EditRule.jsx @@ -6,9 +6,10 @@ import { setUndoEnabled, } from 'loot-core/src/client/actions/queries'; import { useSchedules } from 'loot-core/src/client/data-hooks/schedules'; -import q, { runQuery } from 'loot-core/src/client/query-helpers'; +import { runQuery } from 'loot-core/src/client/query-helpers'; import { send } from 'loot-core/src/platform/client/fetch'; import * as monthUtils from 'loot-core/src/shared/months'; +import { q } from 'loot-core/src/shared/query'; import { mapField, friendlyOp, diff --git a/packages/desktop-client/src/components/modals/Notes.tsx b/packages/desktop-client/src/components/modals/Notes.tsx index 6cf4e3e0f31..a2d128a52de 100644 --- a/packages/desktop-client/src/components/modals/Notes.tsx +++ b/packages/desktop-client/src/components/modals/Notes.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react'; import { useLiveQuery } from 'loot-core/src/client/query-hooks'; -import q from 'loot-core/src/shared/query'; +import { q } from 'loot-core/src/shared/query'; import { SvgCheck } from '../../icons/v2'; import { type CommonModalProps } from '../../types/modals'; diff --git a/packages/desktop-client/src/components/reports/graphs/AreaGraph.tsx b/packages/desktop-client/src/components/reports/graphs/AreaGraph.tsx index b74606b16f1..995d13d1105 100644 --- a/packages/desktop-client/src/components/reports/graphs/AreaGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/AreaGraph.tsx @@ -11,7 +11,7 @@ import { ResponsiveContainer, } from 'recharts'; -import usePrivacyMode from 'loot-core/src/client/privacy'; +import { usePrivacyMode } from 'loot-core/src/client/privacy'; import { amountToCurrency } from 'loot-core/src/shared/util'; import { theme } from '../../../style'; diff --git a/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx b/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx index b189f8ac032..40d8f2dfc7d 100644 --- a/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx @@ -13,7 +13,7 @@ import { ResponsiveContainer, } from 'recharts'; -import usePrivacyMode from 'loot-core/src/client/privacy'; +import { usePrivacyMode } from 'loot-core/src/client/privacy'; import { amountToCurrency } from 'loot-core/src/shared/util'; import { theme } from '../../../style'; diff --git a/packages/desktop-client/src/components/reports/graphs/StackedBarGraph.tsx b/packages/desktop-client/src/components/reports/graphs/StackedBarGraph.tsx index 77284b95d0d..faf0a8e49bd 100644 --- a/packages/desktop-client/src/components/reports/graphs/StackedBarGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/StackedBarGraph.tsx @@ -11,7 +11,7 @@ import { ResponsiveContainer, } from 'recharts'; -import usePrivacyMode from 'loot-core/src/client/privacy'; +import { usePrivacyMode } from 'loot-core/src/client/privacy'; import { amountToCurrency } from 'loot-core/src/shared/util'; import { theme } from '../../../style'; diff --git a/packages/desktop-client/src/components/reports/spreadsheets/cash-flow-spreadsheet.tsx b/packages/desktop-client/src/components/reports/spreadsheets/cash-flow-spreadsheet.tsx index fe2521bebad..70a736ea2bf 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/cash-flow-spreadsheet.tsx +++ b/packages/desktop-client/src/components/reports/spreadsheets/cash-flow-spreadsheet.tsx @@ -2,9 +2,9 @@ import React from 'react'; import * as d from 'date-fns'; -import q from 'loot-core/src/client/query-helpers'; import { send } from 'loot-core/src/platform/client/fetch'; import * as monthUtils from 'loot-core/src/shared/months'; +import { q } from 'loot-core/src/shared/query'; import { integerToCurrency, integerToAmount } from 'loot-core/src/shared/util'; import { AlignedText } from '../../common/AlignedText'; diff --git a/packages/desktop-client/src/components/reports/spreadsheets/category-spending-spreadsheet.tsx b/packages/desktop-client/src/components/reports/spreadsheets/category-spending-spreadsheet.tsx index 1a55f7b545d..8f45940b4cd 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/category-spending-spreadsheet.tsx +++ b/packages/desktop-client/src/components/reports/spreadsheets/category-spending-spreadsheet.tsx @@ -3,8 +3,9 @@ import React from 'react'; import * as d from 'date-fns'; import { rolloverBudget } from 'loot-core/src/client/queries'; -import q, { runQuery } from 'loot-core/src/client/query-helpers'; +import { runQuery } from 'loot-core/src/client/query-helpers'; import * as monthUtils from 'loot-core/src/shared/months'; +import { q } from 'loot-core/src/shared/query'; import { integerToAmount, integerToCurrency } from 'loot-core/src/shared/util'; import { AlignedText } from '../../common/AlignedText'; diff --git a/packages/desktop-client/src/components/reports/spreadsheets/makeQuery.ts b/packages/desktop-client/src/components/reports/spreadsheets/makeQuery.ts index 8a5658fd4c8..02e748f6d28 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/makeQuery.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/makeQuery.ts @@ -1,4 +1,4 @@ -import q from 'loot-core/src/client/query-helpers'; +import { q } from 'loot-core/src/shared/query'; import { type CategoryEntity } from 'loot-core/src/types/models'; export function makeQuery( diff --git a/packages/desktop-client/src/components/reports/spreadsheets/net-worth-spreadsheet.ts b/packages/desktop-client/src/components/reports/spreadsheets/net-worth-spreadsheet.ts index 5fb348c6dfc..bd5f9c3599e 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/net-worth-spreadsheet.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/net-worth-spreadsheet.ts @@ -1,8 +1,9 @@ import * as d from 'date-fns'; -import q, { runQuery } from 'loot-core/src/client/query-helpers'; +import { runQuery } from 'loot-core/src/client/query-helpers'; import { send } from 'loot-core/src/platform/client/fetch'; import * as monthUtils from 'loot-core/src/shared/months'; +import { q } from 'loot-core/src/shared/query'; import { integerToCurrency, integerToAmount, diff --git a/packages/desktop-client/src/components/reports/spreadsheets/sankey-spreadsheet.ts b/packages/desktop-client/src/components/reports/spreadsheets/sankey-spreadsheet.ts index 0a3bf9fe634..88c929e7510 100644 --- a/packages/desktop-client/src/components/reports/spreadsheets/sankey-spreadsheet.ts +++ b/packages/desktop-client/src/components/reports/spreadsheets/sankey-spreadsheet.ts @@ -1,5 +1,6 @@ -import q, { runQuery } from 'loot-core/src/client/query-helpers'; +import { runQuery } from 'loot-core/src/client/query-helpers'; import { send } from 'loot-core/src/platform/client/fetch'; +import { q } from 'loot-core/src/shared/query'; import { integerToAmount } from 'loot-core/src/shared/util'; export function createSpreadsheet( diff --git a/packages/desktop-client/src/components/rules/SchedulesQuery.ts b/packages/desktop-client/src/components/rules/SchedulesQuery.ts index ff3b196b0c7..fef486a7919 100644 --- a/packages/desktop-client/src/components/rules/SchedulesQuery.ts +++ b/packages/desktop-client/src/components/rules/SchedulesQuery.ts @@ -1,4 +1,4 @@ -import q from 'loot-core/src/client/query-helpers'; import { liveQueryContext } from 'loot-core/src/client/query-hooks'; +import { q } from 'loot-core/src/shared/query'; export const SchedulesQuery = liveQueryContext(q('schedules').select('*')); diff --git a/packages/desktop-client/src/components/schedules/DiscoverSchedules.tsx b/packages/desktop-client/src/components/schedules/DiscoverSchedules.tsx index 76ef25f5c30..8352dc20867 100644 --- a/packages/desktop-client/src/components/schedules/DiscoverSchedules.tsx +++ b/packages/desktop-client/src/components/schedules/DiscoverSchedules.tsx @@ -1,8 +1,9 @@ import React, { useState } from 'react'; import { useSelector } from 'react-redux'; -import q, { runQuery } from 'loot-core/src/client/query-helpers'; +import { runQuery } from 'loot-core/src/client/query-helpers'; import { send } from 'loot-core/src/platform/client/fetch'; +import { q } from 'loot-core/src/shared/query'; import { getRecurringDescription } from 'loot-core/src/shared/schedules'; import type { DiscoverScheduleEntity } from 'loot-core/src/types/models'; diff --git a/packages/desktop-client/src/components/schedules/ScheduleDetails.jsx b/packages/desktop-client/src/components/schedules/ScheduleDetails.jsx index 87f15f497d8..8459e937c03 100644 --- a/packages/desktop-client/src/components/schedules/ScheduleDetails.jsx +++ b/packages/desktop-client/src/components/schedules/ScheduleDetails.jsx @@ -3,9 +3,10 @@ import { useDispatch, useSelector } from 'react-redux'; import { pushModal } from 'loot-core/src/client/actions/modals'; import { useCachedPayees } from 'loot-core/src/client/data-hooks/payees'; -import q, { runQuery, liveQuery } from 'loot-core/src/client/query-helpers'; +import { runQuery, liveQuery } from 'loot-core/src/client/query-helpers'; import { send, sendCatch } from 'loot-core/src/platform/client/fetch'; import * as monthUtils from 'loot-core/src/shared/months'; +import { q } from 'loot-core/src/shared/query'; import { extractScheduleConds } from 'loot-core/src/shared/schedules'; import { useSelected, SelectedProvider } from '../../hooks/useSelected'; diff --git a/packages/desktop-client/src/components/transactions/MobileTransaction.jsx b/packages/desktop-client/src/components/transactions/MobileTransaction.jsx index eecea85aab4..e3b9deb81c7 100644 --- a/packages/desktop-client/src/components/transactions/MobileTransaction.jsx +++ b/packages/desktop-client/src/components/transactions/MobileTransaction.jsx @@ -22,9 +22,10 @@ import { } from 'date-fns'; import { css } from 'glamor'; -import q, { runQuery } from 'loot-core/src/client/query-helpers'; +import { runQuery } from 'loot-core/src/client/query-helpers'; import { send } from 'loot-core/src/platform/client/fetch'; import * as monthUtils from 'loot-core/src/shared/months'; +import { q } from 'loot-core/src/shared/query'; import { getScheduledAmount } from 'loot-core/src/shared/schedules'; import { isPreviewId, diff --git a/packages/desktop-client/src/components/transactions/TransactionsTable.jsx b/packages/desktop-client/src/components/transactions/TransactionsTable.jsx index 525ee858e20..4ee46ba9ebf 100644 --- a/packages/desktop-client/src/components/transactions/TransactionsTable.jsx +++ b/packages/desktop-client/src/components/transactions/TransactionsTable.jsx @@ -27,7 +27,7 @@ import { getPayeesById, getCategoriesById, } from 'loot-core/src/client/reducers/queries'; -import evalArithmetic from 'loot-core/src/shared/arithmetic'; +import { evalArithmetic } from 'loot-core/src/shared/arithmetic'; import { currentDay } from 'loot-core/src/shared/months'; import { getScheduledAmount } from 'loot-core/src/shared/schedules'; import { diff --git a/packages/desktop-client/src/components/util/AmountInput.tsx b/packages/desktop-client/src/components/util/AmountInput.tsx index 8e669737fc4..3325431733d 100644 --- a/packages/desktop-client/src/components/util/AmountInput.tsx +++ b/packages/desktop-client/src/components/util/AmountInput.tsx @@ -6,7 +6,7 @@ import React, { type FocusEventHandler, } from 'react'; -import evalArithmetic from 'loot-core/src/shared/arithmetic'; +import { evalArithmetic } from 'loot-core/src/shared/arithmetic'; import { amountToInteger } from 'loot-core/src/shared/util'; import { useMergedRefs } from '../../hooks/useMergedRefs'; diff --git a/packages/desktop-client/src/index.tsx b/packages/desktop-client/src/index.tsx index 1cc29aa11cb..d8b3fda9b5e 100644 --- a/packages/desktop-client/src/index.tsx +++ b/packages/desktop-client/src/index.tsx @@ -21,10 +21,11 @@ import thunk from 'redux-thunk'; import * as actions from 'loot-core/src/client/actions'; import * as constants from 'loot-core/src/client/constants'; -import q, { runQuery } from 'loot-core/src/client/query-helpers'; -import reducers from 'loot-core/src/client/reducers'; +import { runQuery } from 'loot-core/src/client/query-helpers'; +import { reducers } from 'loot-core/src/client/reducers'; import { initialState as initialAppState } from 'loot-core/src/client/reducers/app'; import { send } from 'loot-core/src/platform/client/fetch'; +import { q } from 'loot-core/src/shared/query'; import { App } from './components/App'; import { ServerProvider } from './components/ServerContext'; diff --git a/packages/loot-core/src/client/data-hooks/accounts.tsx b/packages/loot-core/src/client/data-hooks/accounts.tsx index 7bcde4b7bfc..0d5de6c534f 100644 --- a/packages/loot-core/src/client/data-hooks/accounts.tsx +++ b/packages/loot-core/src/client/data-hooks/accounts.tsx @@ -1,7 +1,7 @@ import React, { createContext, useContext } from 'react'; +import { q } from '../../shared/query'; import { type AccountEntity } from '../../types/models'; -import q from '../query-helpers'; import { useLiveQuery } from '../query-hooks'; import { getAccountsById } from '../reducers/queries'; diff --git a/packages/loot-core/src/client/data-hooks/filters.ts b/packages/loot-core/src/client/data-hooks/filters.ts index f9b4a1188a3..6854928d97a 100644 --- a/packages/loot-core/src/client/data-hooks/filters.ts +++ b/packages/loot-core/src/client/data-hooks/filters.ts @@ -1,7 +1,7 @@ import { useMemo } from 'react'; +import { q } from '../../shared/query'; import { type TransactionFilterEntity } from '../../types/models'; -import q from '../query-helpers'; import { useLiveQuery } from '../query-hooks'; function toJS(rows) { diff --git a/packages/loot-core/src/client/data-hooks/payees.tsx b/packages/loot-core/src/client/data-hooks/payees.tsx index 8197d50e7af..feb3cbb532c 100644 --- a/packages/loot-core/src/client/data-hooks/payees.tsx +++ b/packages/loot-core/src/client/data-hooks/payees.tsx @@ -1,7 +1,7 @@ import React, { createContext, useContext } from 'react'; +import { q } from '../../shared/query'; import { type PayeeEntity } from '../../types/models'; -import q from '../query-helpers'; import { useLiveQuery } from '../query-hooks'; import { getPayeesById } from '../reducers/queries'; diff --git a/packages/loot-core/src/client/data-hooks/schedules.tsx b/packages/loot-core/src/client/data-hooks/schedules.tsx index 0a46c38e96f..e2db2d1fbd8 100644 --- a/packages/loot-core/src/client/data-hooks/schedules.tsx +++ b/packages/loot-core/src/client/data-hooks/schedules.tsx @@ -1,9 +1,9 @@ import React, { createContext, useEffect, useState, useContext } from 'react'; -import { type Query } from '../../shared/query'; +import { q, type Query } from '../../shared/query'; import { getStatus, getHasTransactionsQuery } from '../../shared/schedules'; import { type ScheduleEntity } from '../../types/models'; -import q, { liveQuery } from '../query-helpers'; +import { liveQuery } from '../query-helpers'; export type ScheduleStatusType = ReturnType; export type ScheduleStatuses = Map; diff --git a/packages/loot-core/src/client/privacy.ts b/packages/loot-core/src/client/privacy.ts index 7490f2451c4..295bba5e510 100644 --- a/packages/loot-core/src/client/privacy.ts +++ b/packages/loot-core/src/client/privacy.ts @@ -1,5 +1,5 @@ import { useSelector } from 'react-redux'; -export default function usePrivacyMode() { +export function usePrivacyMode() { return useSelector(state => state.prefs?.local?.isPrivacyEnabled ?? false); } diff --git a/packages/loot-core/src/client/queries.ts b/packages/loot-core/src/client/queries.ts index 1ed3d615b25..d74dbf8b8a8 100644 --- a/packages/loot-core/src/client/queries.ts +++ b/packages/loot-core/src/client/queries.ts @@ -7,7 +7,7 @@ import { getShortYearRegex, getShortYearFormat, } from '../shared/months'; -import q from '../shared/query'; +import { q } from '../shared/query'; import { currencyToAmount, amountToInteger } from '../shared/util'; export function getAccountFilter(accountId, field = 'account') { diff --git a/packages/loot-core/src/client/query-helpers.test.ts b/packages/loot-core/src/client/query-helpers.test.ts index c42bbdbec51..c99b3426fbc 100644 --- a/packages/loot-core/src/client/query-helpers.test.ts +++ b/packages/loot-core/src/client/query-helpers.test.ts @@ -1,6 +1,6 @@ import { initServer, serverPush } from '../platform/client/fetch'; import { subDays } from '../shared/months'; -import q from '../shared/query'; +import { q } from '../shared/query'; import { tracer } from '../shared/test-helpers'; import { runQuery, liveQuery, pagedQuery } from './query-helpers'; diff --git a/packages/loot-core/src/client/query-helpers.ts b/packages/loot-core/src/client/query-helpers.ts index 72a7156e390..1883bfd534d 100644 --- a/packages/loot-core/src/client/query-helpers.ts +++ b/packages/loot-core/src/client/query-helpers.ts @@ -1,7 +1,6 @@ import { listen, send } from '../platform/client/fetch'; import { once } from '../shared/async'; -import q, { getPrimaryOrderBy } from '../shared/query'; -export default q; +import { getPrimaryOrderBy } from '../shared/query'; export async function runQuery(query) { return send('query', query.serialize()); diff --git a/packages/loot-core/src/client/reducers/account.ts b/packages/loot-core/src/client/reducers/account.ts index 5e713db7ef6..7c36ee5f73c 100644 --- a/packages/loot-core/src/client/reducers/account.ts +++ b/packages/loot-core/src/client/reducers/account.ts @@ -7,10 +7,7 @@ const initialState: AccountState = { accountsSyncing: null, }; -export default function update( - state = initialState, - action: Action, -): AccountState { +export function update(state = initialState, action: Action): AccountState { switch (action.type) { case constants.SET_ACCOUNTS_SYNCING: return { diff --git a/packages/loot-core/src/client/reducers/app.ts b/packages/loot-core/src/client/reducers/app.ts index b85e12022c3..19d4f73d6bd 100644 --- a/packages/loot-core/src/client/reducers/app.ts +++ b/packages/loot-core/src/client/reducers/app.ts @@ -11,7 +11,7 @@ export const initialState: AppState = { lastSplitState: { current: null }, }; -export default function update(state = initialState, action: Action): AppState { +export function update(state = initialState, action: Action): AppState { switch (action.type) { case constants.SET_APP_STATE: return { diff --git a/packages/loot-core/src/client/reducers/budgets.ts b/packages/loot-core/src/client/reducers/budgets.ts index d0868706cc0..8111f24e0c5 100644 --- a/packages/loot-core/src/client/reducers/budgets.ts +++ b/packages/loot-core/src/client/reducers/budgets.ts @@ -125,10 +125,7 @@ const initialState: BudgetsState = { allFiles: null, }; -export default function update( - state = initialState, - action: Action, -): BudgetsState { +export function update(state = initialState, action: Action): BudgetsState { switch (action.type) { case constants.SET_BUDGETS: return { diff --git a/packages/loot-core/src/client/reducers/index.ts b/packages/loot-core/src/client/reducers/index.ts index 77c5c76518f..98f44d189d1 100644 --- a/packages/loot-core/src/client/reducers/index.ts +++ b/packages/loot-core/src/client/reducers/index.ts @@ -1,13 +1,13 @@ -import account from './account'; -import app from './app'; -import budgets from './budgets'; -import modals from './modals'; -import notifications from './notifications'; -import prefs from './prefs'; -import queries from './queries'; -import user from './user'; +import { update as account } from './account'; +import { update as app } from './app'; +import { update as budgets } from './budgets'; +import { update as modals } from './modals'; +import { update as notifications } from './notifications'; +import { update as prefs } from './prefs'; +import { update as queries } from './queries'; +import { update as user } from './user'; -const reducers = { +export const reducers = { app, queries, account, @@ -17,4 +17,3 @@ const reducers = { budgets, user, }; -export default reducers; diff --git a/packages/loot-core/src/client/reducers/modals.ts b/packages/loot-core/src/client/reducers/modals.ts index 57d32784bce..a600b186708 100644 --- a/packages/loot-core/src/client/reducers/modals.ts +++ b/packages/loot-core/src/client/reducers/modals.ts @@ -7,7 +7,7 @@ const initialState: ModalsState = { isHidden: false, }; -function update(state = initialState, action: Action): ModalsState { +export function update(state = initialState, action: Action): ModalsState { switch (action.type) { case constants.PUSH_MODAL: return { @@ -49,5 +49,3 @@ function update(state = initialState, action: Action): ModalsState { return state; } - -export default update; diff --git a/packages/loot-core/src/client/reducers/notifications.ts b/packages/loot-core/src/client/reducers/notifications.ts index 7c722d14c36..942f47c0d04 100644 --- a/packages/loot-core/src/client/reducers/notifications.ts +++ b/packages/loot-core/src/client/reducers/notifications.ts @@ -6,7 +6,7 @@ const initialState = { notifications: [], }; -export default function update( +export function update( state = initialState, action: Action, ): NotificationsState { diff --git a/packages/loot-core/src/client/reducers/prefs.ts b/packages/loot-core/src/client/reducers/prefs.ts index 45f95090fe0..d87b4073e5b 100644 --- a/packages/loot-core/src/client/reducers/prefs.ts +++ b/packages/loot-core/src/client/reducers/prefs.ts @@ -8,10 +8,7 @@ const initialState: PrefsState = { global: null, }; -export default function update( - state = initialState, - action: Action, -): PrefsState { +export function update(state = initialState, action: Action): PrefsState { switch (action.type) { case constants.SET_PREFS: if (action.prefs) { diff --git a/packages/loot-core/src/client/reducers/queries.ts b/packages/loot-core/src/client/reducers/queries.ts index f44c6ca863f..3966e5e53da 100644 --- a/packages/loot-core/src/client/reducers/queries.ts +++ b/packages/loot-core/src/client/reducers/queries.ts @@ -19,10 +19,7 @@ const initialState: QueriesState = { earliestTransaction: null, }; -export default function update( - state = initialState, - action: Action, -): QueriesState { +export function update(state = initialState, action: Action): QueriesState { switch (action.type) { case constants.SET_NEW_TRANSACTIONS: return { diff --git a/packages/loot-core/src/client/reducers/user.ts b/packages/loot-core/src/client/reducers/user.ts index d9ec3de90f3..fe715884bec 100644 --- a/packages/loot-core/src/client/reducers/user.ts +++ b/packages/loot-core/src/client/reducers/user.ts @@ -5,10 +5,7 @@ const initialState: UserState = { data: null, }; -export default function update( - state = initialState, - action: UserActions, -): UserState { +export function update(state = initialState, action: UserActions): UserState { switch (action.type) { case constants.GET_USER_DATA: return { ...state, data: action.data }; diff --git a/packages/loot-core/src/client/update-notification.ts b/packages/loot-core/src/client/update-notification.ts index d66b8c1c0da..e698daefb1f 100644 --- a/packages/loot-core/src/client/update-notification.ts +++ b/packages/loot-core/src/client/update-notification.ts @@ -1,4 +1,4 @@ -export default async function checkForUpdateNotification( +export async function checkForUpdateNotification( addNotification, getIsOutdated, getLatestVersion, diff --git a/packages/loot-core/src/mocks/budget.ts b/packages/loot-core/src/mocks/budget.ts index 308b64f17ef..e4d9506030f 100644 --- a/packages/loot-core/src/mocks/budget.ts +++ b/packages/loot-core/src/mocks/budget.ts @@ -8,14 +8,14 @@ import * as prefs from '../server/prefs'; import * as sheet from '../server/sheet'; import { batchMessages, setSyncingMode } from '../server/sync'; import * as monthUtils from '../shared/months'; -import q from '../shared/query'; +import { q } from '../shared/query'; import type { CategoryGroupEntity, PayeeEntity, NewTransactionEntity, } from '../types/models'; -import random from './random'; +import { random } from './random'; type MockPayeeEntity = PayeeEntity & { bill?: boolean }; diff --git a/packages/loot-core/src/mocks/index.ts b/packages/loot-core/src/mocks/index.ts index 1b67795bcee..bc056442e83 100644 --- a/packages/loot-core/src/mocks/index.ts +++ b/packages/loot-core/src/mocks/index.ts @@ -3,7 +3,7 @@ import { v4 as uuidv4 } from 'uuid'; import * as monthUtils from '../shared/months'; import type { TransactionEntity } from '../types/models'; -import random from './random'; +import { random } from './random'; export function generateAccount(name, isConnected, offbudget) { return { diff --git a/packages/loot-core/src/mocks/random.ts b/packages/loot-core/src/mocks/random.ts index 2dbf5f67ccb..911ddf53ffe 100644 --- a/packages/loot-core/src/mocks/random.ts +++ b/packages/loot-core/src/mocks/random.ts @@ -13,6 +13,4 @@ function pseudoRandom(): number { return pseudoRandomIterator; } -const random = Platform.isPlaywright ? pseudoRandom : Math.random; - -export default random; +export const random = Platform.isPlaywright ? pseudoRandom : Math.random; diff --git a/packages/loot-core/src/mocks/redux.tsx b/packages/loot-core/src/mocks/redux.tsx index 569c6ae8286..bb32a0fd1ce 100644 --- a/packages/loot-core/src/mocks/redux.tsx +++ b/packages/loot-core/src/mocks/redux.tsx @@ -4,7 +4,7 @@ import { Provider } from 'react-redux'; import { createStore, combineReducers, applyMiddleware } from 'redux'; import thunk from 'redux-thunk'; -import reducers from '../client/reducers'; +import { reducers } from '../client/reducers'; const appReducer = combineReducers(reducers); let store = null; diff --git a/packages/loot-core/src/mocks/spreadsheet.ts b/packages/loot-core/src/mocks/spreadsheet.ts index 7a79ed62dea..e6f2fed78a6 100644 --- a/packages/loot-core/src/mocks/spreadsheet.ts +++ b/packages/loot-core/src/mocks/spreadsheet.ts @@ -1,4 +1,4 @@ -function makeSpreadsheet() { +export function makeSpreadsheet() { const cells = {}; return { observers: [], @@ -98,5 +98,3 @@ function makeSpreadsheet() { }, }; } - -export default makeSpreadsheet; diff --git a/packages/loot-core/src/platform/server/fs/index.d.ts b/packages/loot-core/src/platform/server/fs/index.d.ts index d9c1d8a60ea..d83079467f1 100644 --- a/packages/loot-core/src/platform/server/fs/index.d.ts +++ b/packages/loot-core/src/platform/server/fs/index.d.ts @@ -1,4 +1,4 @@ -export { default as join } from './path-join'; +export { join } from './path-join'; export function init(): void; export type Init = typeof init; diff --git a/packages/loot-core/src/platform/server/fs/index.web.ts b/packages/loot-core/src/platform/server/fs/index.web.ts index 45da2f6f69d..75df4de412e 100644 --- a/packages/loot-core/src/platform/server/fs/index.web.ts +++ b/packages/loot-core/src/platform/server/fs/index.web.ts @@ -5,7 +5,7 @@ import * as connection from '../connection'; import * as idb from '../indexeddb'; import { _getModule } from '../sqlite'; -import join from './path-join'; +import { join } from './path-join'; let FS = null; let BFS = null; diff --git a/packages/loot-core/src/platform/server/fs/path-join.d.ts b/packages/loot-core/src/platform/server/fs/path-join.d.ts index 305356b75d2..7954dc6831c 100644 --- a/packages/loot-core/src/platform/server/fs/path-join.d.ts +++ b/packages/loot-core/src/platform/server/fs/path-join.d.ts @@ -1,2 +1,2 @@ -export default function join(...args: string[]): string; +export function join(...args: string[]): string; export type Join = typeof join; diff --git a/packages/loot-core/src/platform/server/fs/path-join.electron.ts b/packages/loot-core/src/platform/server/fs/path-join.electron.ts index 8ec5406307c..911858b8d21 100644 --- a/packages/loot-core/src/platform/server/fs/path-join.electron.ts +++ b/packages/loot-core/src/platform/server/fs/path-join.electron.ts @@ -1,3 +1 @@ -import { join } from 'path'; - -export default join; +export { join } from 'path'; diff --git a/packages/loot-core/src/platform/server/fs/path-join.web.ts b/packages/loot-core/src/platform/server/fs/path-join.web.ts index 7c36099fb11..9620ba2b7f7 100644 --- a/packages/loot-core/src/platform/server/fs/path-join.web.ts +++ b/packages/loot-core/src/platform/server/fs/path-join.web.ts @@ -83,7 +83,7 @@ function normalizePath(path) { return path; } -const join: T.Join = (...args) => { +export const join: T.Join = (...args) => { if (args.length === 0) return '.'; let joined; for (let i = 0; i < args.length; ++i) { @@ -96,5 +96,3 @@ const join: T.Join = (...args) => { if (joined === undefined) return '.'; return normalizePath(joined); }; - -export default join; diff --git a/packages/loot-core/src/platform/server/fs/shared.ts b/packages/loot-core/src/platform/server/fs/shared.ts index bedc69b6c22..756bc578367 100644 --- a/packages/loot-core/src/platform/server/fs/shared.ts +++ b/packages/loot-core/src/platform/server/fs/shared.ts @@ -1,4 +1,4 @@ -import join from './path-join'; +import { join } from './path-join'; let documentDir; export const _setDocumentDir = dir => (documentDir = dir); diff --git a/packages/loot-core/src/platform/server/log/index.api.ts b/packages/loot-core/src/platform/server/log/index.api.ts index cd368c84532..a650c6323f8 100644 --- a/packages/loot-core/src/platform/server/log/index.api.ts +++ b/packages/loot-core/src/platform/server/log/index.api.ts @@ -1,6 +1,6 @@ import type * as T from '.'; -const logger: T.Logger = { +export const logger: T.Logger = { info: (...args) => { console.log(...args); }, @@ -8,4 +8,3 @@ const logger: T.Logger = { console.warn(...args); }, }; -export default logger; diff --git a/packages/loot-core/src/platform/server/log/index.d.ts b/packages/loot-core/src/platform/server/log/index.d.ts index 00b23ca4dbf..d8ca19d7a38 100644 --- a/packages/loot-core/src/platform/server/log/index.d.ts +++ b/packages/loot-core/src/platform/server/log/index.d.ts @@ -6,5 +6,4 @@ export interface Logger { transports?: Transports; } -const logger: Logger; -export default logger; +export const logger: Logger; diff --git a/packages/loot-core/src/platform/server/log/index.electron.ts b/packages/loot-core/src/platform/server/log/index.electron.ts index 9aba4ec63f5..24a3bebcf18 100644 --- a/packages/loot-core/src/platform/server/log/index.electron.ts +++ b/packages/loot-core/src/platform/server/log/index.electron.ts @@ -1,12 +1,12 @@ -import logger from 'electron-log'; +import electronLogger from 'electron-log'; import type * as T from '.'; -if (logger.transports) { - logger.transports.file.appName = 'Actual'; - logger.transports.file.level = 'info'; - logger.transports.file.maxSize = 7 * 1024 * 1024; - logger.transports.console.level = false; +if (electronLogger.transports) { + electronLogger.transports.file.appName = 'Actual'; + electronLogger.transports.file.level = 'info'; + electronLogger.transports.file.maxSize = 7 * 1024 * 1024; + electronLogger.transports.console.level = false; } -export default logger as T.Logger; +export const logger: T.Logger = electronLogger; diff --git a/packages/loot-core/src/platform/server/log/index.web.ts b/packages/loot-core/src/platform/server/log/index.web.ts index cd368c84532..a650c6323f8 100644 --- a/packages/loot-core/src/platform/server/log/index.web.ts +++ b/packages/loot-core/src/platform/server/log/index.web.ts @@ -1,6 +1,6 @@ import type * as T from '.'; -const logger: T.Logger = { +export const logger: T.Logger = { info: (...args) => { console.log(...args); }, @@ -8,4 +8,3 @@ const logger: T.Logger = { console.warn(...args); }, }; -export default logger; diff --git a/packages/loot-core/src/server/accounts/transaction-rules.test.ts b/packages/loot-core/src/server/accounts/transaction-rules.test.ts index bc09dc15f6c..2144740c7df 100644 --- a/packages/loot-core/src/server/accounts/transaction-rules.test.ts +++ b/packages/loot-core/src/server/accounts/transaction-rules.test.ts @@ -1,4 +1,4 @@ -import q from '../../shared/query'; +import { q } from '../../shared/query'; import { runQuery } from '../aql'; import * as db from '../db'; import { loadMappings } from '../db/mappings'; diff --git a/packages/loot-core/src/server/api.ts b/packages/loot-core/src/server/api.ts index b87d4b14bd2..1e8cfd9d633 100644 --- a/packages/loot-core/src/server/api.ts +++ b/packages/loot-core/src/server/api.ts @@ -7,7 +7,7 @@ import { getTestKeyError, } from '../shared/errors'; import * as monthUtils from '../shared/months'; -import q from '../shared/query'; +import { q } from '../shared/query'; import { ungroupTransactions, updateTransaction, diff --git a/packages/loot-core/src/server/aql/compiler.test.ts b/packages/loot-core/src/server/aql/compiler.test.ts index 42712cb9aca..53984efa656 100644 --- a/packages/loot-core/src/server/aql/compiler.test.ts +++ b/packages/loot-core/src/server/aql/compiler.test.ts @@ -1,4 +1,4 @@ -import query from '../../shared/query'; +import { q } from '../../shared/query'; import { generateSQLWithState } from './compiler'; @@ -61,7 +61,7 @@ const schemaWithTombstone = { describe('sheet language', () => { it('`select` should select fields', () => { let result = generateSQLWithState( - query('accounts') + q('accounts') .select(['trans1', 'trans2']) .withoutValidatedRefs() .serialize(), @@ -73,7 +73,7 @@ describe('sheet language', () => { // Allows renaming result = generateSQLWithState( - query('accounts') + q('accounts') .select(['trans1', 'trans1.id', { transId: 'trans1.id' }]) .withoutValidatedRefs() .serialize(), @@ -85,7 +85,7 @@ describe('sheet language', () => { // Joined fields should be named by path result = generateSQLWithState( - query('accounts') + q('accounts') .select(['trans1.payee.name']) .withoutValidatedRefs() .serialize(), @@ -97,7 +97,7 @@ describe('sheet language', () => { // Renaming works with joined fields result = generateSQLWithState( - query('accounts') + q('accounts') .select([{ payeeName: 'trans1.payee.name' }]) .withoutValidatedRefs() .serialize(), @@ -109,7 +109,7 @@ describe('sheet language', () => { // By default, it should do id ref validation result = generateSQLWithState( - query('accounts').select(['trans1', 'trans2']).serialize(), + q('accounts').select(['trans1', 'trans2']).serialize(), schemaWithRefs, ); expect(sqlLines(result.sql)).toEqual( @@ -124,7 +124,7 @@ describe('sheet language', () => { it('`select` allows nested functions', () => { const result = generateSQLWithState( - query('transactions') + q('transactions') .select([{ num: { $idiv: [{ $neg: '$amount' }, 2] } }]) .serialize(), schemaWithRefs, @@ -136,7 +136,7 @@ describe('sheet language', () => { it('`select` allows selecting all fields with *', () => { let result = generateSQLWithState( - query('accounts').select(['*']).serialize(), + q('accounts').select(['*']).serialize(), schemaWithRefs, ); expect(sqlLines(result.sql)).toEqual( @@ -151,7 +151,7 @@ describe('sheet language', () => { // Test selecting from joined tables result = generateSQLWithState( - query('accounts').select(['*', 'trans1.*']).serialize(), + q('accounts').select(['*', 'trans1.*']).serialize(), schemaWithRefs, ); expect(sqlLines(result.sql)).toEqual( @@ -170,14 +170,14 @@ describe('sheet language', () => { // The tombstone flag is not added if not necessary (the table // doesn't have it ) let result = generateSQLWithState( - query('accounts').select(['trans']).withoutValidatedRefs().serialize(), + q('accounts').select(['trans']).withoutValidatedRefs().serialize(), schemaWithTombstone, ); expect(result.sql).not.toMatch('tombstone'); // By default, the tombstone flag should be added if necessary result = generateSQLWithState( - query('transactions').select(['amount']).serialize(), + q('transactions').select(['amount']).serialize(), schemaWithTombstone, ); expect(sqlLines(result.sql)).toEqual( @@ -189,7 +189,7 @@ describe('sheet language', () => { // `withDead` should not add the tombstone flag result = generateSQLWithState( - query('transactions').select(['amount']).withDead().serialize(), + q('transactions').select(['amount']).withDead().serialize(), schemaWithTombstone, ); expect(sqlLines(result.sql)).toEqual( @@ -201,9 +201,7 @@ describe('sheet language', () => { // The tombstone flag should also be added if joining result = generateSQLWithState( - query('accounts') - .select(['trans.amount', 'trans.payee.name']) - .serialize(), + q('accounts').select(['trans.amount', 'trans.payee.name']).serialize(), schemaWithTombstone, ); expect(sqlLines(result.sql)).toEqual( @@ -221,13 +219,13 @@ describe('sheet language', () => { it('`select` always includes the id', () => { let result = generateSQLWithState( - query('payees').select('name').serialize(), + q('payees').select('name').serialize(), schemaWithRefs, ); expect(result.sql).toMatch('payees.id AS id'); result = generateSQLWithState( - query('payees').select(['name', 'id']).serialize(), + q('payees').select(['name', 'id']).serialize(), schemaWithRefs, ); // id is only included once, we manually selected it @@ -236,7 +234,7 @@ describe('sheet language', () => { ); result = generateSQLWithState( - query('payees').select('name').groupBy('account').serialize(), + q('payees').select('name').groupBy('account').serialize(), schemaWithRefs, ); // id should not automatically by selected if using `groupBy` @@ -246,7 +244,7 @@ describe('sheet language', () => { it('automatically joins tables if referenced by path', () => { // Join a simple table let result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ 'payee.name': 'kroger' }) .select(['amount']) .serialize(), @@ -262,7 +260,7 @@ describe('sheet language', () => { // Make sure it works in a `get` result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ amount: 123 }) .select(['payee.name']) .serialize(), @@ -279,7 +277,7 @@ describe('sheet language', () => { // Join tables deeply result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ 'payee.account.trans1.amount': 234 }) .select(['amount', 'payee.name']) .serialize(), @@ -303,7 +301,7 @@ describe('sheet language', () => { it('avoids unnecessary joins when deeply joining', () => { const { state, sql } = generateSQLWithState( - query('transactions') + q('transactions') .filter({ 'payee.account.trans1.amount': 1, 'payee.account.trans2.amount': 2, @@ -341,7 +339,7 @@ describe('sheet language', () => { it('groupBy should work', () => { let result = generateSQLWithState( - query('transactions').groupBy('payee.name').select('id').serialize(), + q('transactions').groupBy('payee.name').select('id').serialize(), schemaWithRefs, ); expect(sqlLines(result.sql)).toEqual( @@ -355,7 +353,7 @@ describe('sheet language', () => { // Allows functions result = generateSQLWithState( - query('transactions') + q('transactions') .groupBy({ $substr: ['$payee.name', 0, 4] }) .select('id') .serialize(), @@ -366,7 +364,7 @@ describe('sheet language', () => { it('orderBy should work', () => { let result = generateSQLWithState( - query('transactions').orderBy('payee.name').select('id').serialize(), + q('transactions').orderBy('payee.name').select('id').serialize(), schemaWithRefs, ); expect(sqlLines(result.sql)).toEqual( @@ -380,7 +378,7 @@ describe('sheet language', () => { // Allows complex ordering and specifying direction result = generateSQLWithState( - query('transactions') + q('transactions') .orderBy([ 'payee.id', { 'payee.name': 'desc' }, @@ -398,7 +396,7 @@ describe('sheet language', () => { it('allows functions in `select`', () => { let result = generateSQLWithState( - query('transactions') + q('transactions') .select(['id', { payeeName: { $substr: ['$payee.name', 0, 4] } }]) .serialize(), schemaWithRefs, @@ -408,7 +406,7 @@ describe('sheet language', () => { ); result = generateSQLWithState( - query('transactions') + q('transactions') .select([ 'id', { name: { $substr: [{ $substr: ['$payee.name', 1, 5] }, 3, 4] } }, @@ -423,7 +421,7 @@ describe('sheet language', () => { it('allows filtering with `filter`', () => { let result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ date: [{ $lt: '2020-01-01' }], $or: [{ 'payee.name': 'foo' }, { 'payee.name': 'bar' }], @@ -444,7 +442,7 @@ describe('sheet language', () => { // Combining `$or` and `$and` works result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ $or: [ { 'payee.name': 'foo' }, @@ -474,7 +472,7 @@ describe('sheet language', () => { // Giving a field an array implicitly ANDs the filters result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ date: [{ $lt: '2020-01-01' }, { $gt: '2019-12-01' }] }) .select(['id']) .serialize(), @@ -489,7 +487,7 @@ describe('sheet language', () => { // Allows referencing fields result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ amount: { $lt: '$amount2' } }) .select(['id']) .serialize(), @@ -505,7 +503,7 @@ describe('sheet language', () => { it('$and and $or allow the object form', () => { let result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ $and: { payee: 'payee1', amount: 12 }, }) @@ -519,7 +517,7 @@ describe('sheet language', () => { ); result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ $or: { payee: 'payee1', amount: 12 }, }) @@ -536,7 +534,7 @@ describe('sheet language', () => { it('allows functions in `filter`', () => { // Allows transforming the input let result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ 'payee.name': { $transform: { $substr: ['$', 0, 4] }, $lt: 'foo' }, }) @@ -555,7 +553,7 @@ describe('sheet language', () => { // Allows transforming left-hand side and calling a function on // right-hand side result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ date: { $transform: '$month', $lt: { $month: '$date' } }, }) @@ -569,7 +567,7 @@ describe('sheet language', () => { // Allows nesting functions result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ 'payee.name': { $lt: { $substr: [{ $substr: ['$payee.name', 1, 5] }, 3, 4] }, @@ -586,19 +584,19 @@ describe('sheet language', () => { it('allows limit and offset', () => { let result = generateSQLWithState( - query('transactions').select(['id']).limit(10).serialize(), + q('transactions').select(['id']).limit(10).serialize(), schemaWithRefs, ); expect(result.sql).toMatch(/\s+LIMIT 10\s*$/); result = generateSQLWithState( - query('transactions').select(['id']).offset(11).serialize(), + q('transactions').select(['id']).offset(11).serialize(), schemaWithRefs, ); expect(result.sql).toMatch(/\s+OFFSET 11\s*$/); result = generateSQLWithState( - query('transactions').select(['id']).limit(10).offset(11).serialize(), + q('transactions').select(['id']).limit(10).offset(11).serialize(), schemaWithRefs, ); expect(result.sql).toMatch(/\s+LIMIT 10\s*\n\s*OFFSET 11\s*$/); @@ -606,7 +604,7 @@ describe('sheet language', () => { it('allows named parameters', () => { let result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ amount: ':amount' }) .select(['id']) .serialize(), @@ -615,7 +613,7 @@ describe('sheet language', () => { expect(result.sql).toMatch('transactions.amount = ?'); result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ amount: { $lt: { $neg: ':amount' } } }) .select(['id']) .serialize(), @@ -625,7 +623,7 @@ describe('sheet language', () => { // Infers the right type result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ date: { $transform: '$month', $eq: { $month: ':month' } } }) .select() .serialize(), @@ -639,7 +637,7 @@ describe('sheet language', () => { it('allows customizing generated SQL', () => { let result = generateSQLWithState( - query('transactions').select(['amount']).serialize(), + q('transactions').select(['amount']).serialize(), schemaWithRefs, { tableViews: { transactions: 'v_transactions' }, @@ -656,7 +654,7 @@ describe('sheet language', () => { // Make sure the same customizations are applied when joining result = generateSQLWithState( - query('accounts').select(['trans1.amount']).serialize(), + q('accounts').select(['trans1.amount']).serialize(), schemaWithRefs, { tableViews: { transactions: 'v_transactions' }, @@ -681,7 +679,7 @@ describe('sheet language', () => { // Internal table filters can't use paths expect(() => generateSQLWithState( - query('accounts').select(['trans1.amount']).serialize(), + q('accounts').select(['trans1.amount']).serialize(), schemaWithRefs, { tableViews: { transactions: 'v_transactions' }, @@ -694,7 +692,7 @@ describe('sheet language', () => { it('raw mode avoids any internal filters', () => { const result = generateSQLWithState( - query('transactions').select(['amount']).raw().serialize(), + q('transactions').select(['amount']).raw().serialize(), schemaWithRefs, { tableViews: { transactions: 'v_transactions' }, @@ -714,7 +712,7 @@ describe('sheet language', () => { // select try { generateSQLWithState( - query('transactions') + q('transactions') .select({ month: { $month: '$payee.name2' } }) .serialize(), schemaWithRefs, @@ -730,7 +728,7 @@ describe('sheet language', () => { // filter try { generateSQLWithState( - query('transactions') + q('transactions') .filter({ date: { $transform: '$month', $eq: 10 } }) .select(['id']) .serialize(), @@ -748,7 +746,7 @@ describe('sheet language', () => { // group by try { generateSQLWithState( - query('transactions') + q('transactions') .groupBy({ $month: '$date2' }) .select({ amount: { $sum: '$amount' } }) .serialize(), @@ -765,7 +763,7 @@ describe('sheet language', () => { // order by try { generateSQLWithState( - query('transactions') + q('transactions') .orderBy({ $month: '$date2' }) .select({ amount: { $sum: '$amount' } }) .serialize(), @@ -782,7 +780,7 @@ describe('sheet language', () => { it('$oneof creates template for executor to run', () => { const result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ id: { $oneof: ['one', 'two', 'three'] } }) .select(['amount']) .serialize(), @@ -795,7 +793,7 @@ describe('sheet language', () => { describe('Type conversions', () => { it('date literals are converted to ints on input', () => { let result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ date: '2020-01-01' }) .select(['id']) .serialize(), @@ -804,7 +802,7 @@ describe('Type conversions', () => { expect(result.sql).toMatch('WHERE (transactions.date = 20200101)'); result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ date: { $transform: '$month', $eq: '2020-01' } }) .select(['id']) .serialize(), @@ -816,7 +814,7 @@ describe('Type conversions', () => { // You can also specify a full date that is auto-converted to month result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ date: { $transform: '$month', $eq: '2020-01-01' } }) .select(['id']) .serialize(), @@ -828,7 +826,7 @@ describe('Type conversions', () => { // You can also specify a full date that is auto-converted to month result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ date: { $transform: '$year', $eq: '2020-01-01' } }) .select(['id']) .serialize(), @@ -841,7 +839,7 @@ describe('Type conversions', () => { it('date fields are converted to months and years', () => { let result = generateSQLWithState( - query('accounts') + q('accounts') .filter({ 'trans1.date': { $transform: '$month', $eq: '$trans2.date' }, }) @@ -855,7 +853,7 @@ describe('Type conversions', () => { // You can also specify a full date that is auto-converted to month result = generateSQLWithState( - query('accounts') + q('accounts') .filter({ 'trans1.date': { $transform: '$year', $eq: '$trans2.date' } }) .select(['id']) .serialize(), @@ -869,17 +867,14 @@ describe('Type conversions', () => { it('allows conversions from string to id', () => { expect(() => { generateSQLWithState( - query('transactions').filter({ id: 'foo' }).select(['id']).serialize(), + q('transactions').filter({ id: 'foo' }).select(['id']).serialize(), schemaWithRefs, ); }).not.toThrow(); expect(() => { generateSQLWithState( - query('accounts') - .filter({ id: '$trans1.id' }) - .select(['id']) - .serialize(), + q('accounts').filter({ id: '$trans1.id' }).select(['id']).serialize(), schemaWithRefs, ); }).not.toThrow(); @@ -887,7 +882,7 @@ describe('Type conversions', () => { // Numbers cannot be converted to ids expect(() => { generateSQLWithState( - query('transactions').filter({ id: 5 }).select(['id']).serialize(), + q('transactions').filter({ id: 5 }).select(['id']).serialize(), schemaWithRefs, ); }).toThrow(/Can’t convert/); @@ -896,10 +891,7 @@ describe('Type conversions', () => { it('allows conversions from integers to floats', () => { expect(() => { generateSQLWithState( - query('transactions') - .filter({ amount3: 45 }) - .select(['id']) - .serialize(), + q('transactions').filter({ amount3: 45 }).select(['id']).serialize(), basicSchema, ); }).not.toThrow(); @@ -907,10 +899,7 @@ describe('Type conversions', () => { // Floats cannot be converted to ints expect(() => { generateSQLWithState( - query('transactions') - .filter({ amount: 45.5 }) - .select(['id']) - .serialize(), + q('transactions').filter({ amount: 45.5 }).select(['id']).serialize(), basicSchema, ); }).toThrow(/Can’t convert/); @@ -919,14 +908,14 @@ describe('Type conversions', () => { it('allows fields to be nullable', () => { // With validated refs let result = generateSQLWithState( - query('transactions').filter({ payee: null }).select().serialize(), + q('transactions').filter({ payee: null }).select().serialize(), schemaWithRefs, ); expect(result.sql).toMatch('WHERE (payees1.id IS NULL)'); // Without validated refs result = generateSQLWithState( - query('transactions') + q('transactions') .filter({ payee: null }) .select() .withoutValidatedRefs() diff --git a/packages/loot-core/src/server/aql/exec.test.ts b/packages/loot-core/src/server/aql/exec.test.ts index 309f5d8af14..2dbee559e15 100644 --- a/packages/loot-core/src/server/aql/exec.test.ts +++ b/packages/loot-core/src/server/aql/exec.test.ts @@ -1,6 +1,6 @@ import { v4 as uuidv4 } from 'uuid'; -import query from '../../shared/query'; +import { q } from '../../shared/query'; import { makeChild } from '../../shared/transactions'; import * as db from '../db'; @@ -75,15 +75,13 @@ describe('runQuery', () => { await insertTransactions(); // date - let { data } = await runQuery( - query('transactions').select('date').serialize(), - ); + let { data } = await runQuery(q('transactions').select('date').serialize()); expect(data[0].date).toBe('2020-01-04'); // date-month data = ( await runQuery( - query('transactions') + q('transactions') .select({ month: { $month: '$date' } }) .serialize(), ) @@ -93,7 +91,7 @@ describe('runQuery', () => { // date-year data = ( await runQuery( - query('transactions') + q('transactions') .select({ year: { $year: '$date' } }) .serialize(), ) @@ -103,10 +101,7 @@ describe('runQuery', () => { // boolean data = ( await runQuery( - query('transactions') - .select(['is_child', 'is_parent']) - .raw() - .serialize(), + q('transactions').select(['is_child', 'is_parent']).raw().serialize(), ) ).data; expect(data[0].is_child).toBe(false); @@ -126,7 +121,7 @@ describe('runQuery', () => { }); let { data } = await runQuery( - query('transactions') + q('transactions') .filter({ amount: { $lt: { $neg: ':amount' } } }) .select() .serialize(), @@ -136,7 +131,7 @@ describe('runQuery', () => { data = ( await runQuery( - query('transactions') + q('transactions') .filter({ date: { $transform: '$month', $eq: { $month: ':month' } } }) .select('date') .serialize(), @@ -147,7 +142,7 @@ describe('runQuery', () => { data = ( await runQuery( - query('transactions') + q('transactions') .filter({ date: { $transform: '$year', $eq: { $year: ':month' } } }) .select('date') .serialize(), @@ -158,7 +153,7 @@ describe('runQuery', () => { data = ( await runQuery( - query('transactions') + q('transactions') .filter({ cleared: ':cleared' }) .select('date') .serialize(), @@ -184,7 +179,7 @@ describe('runQuery', () => { category: 'cat', }); - const queryState = query('transactions') + const queryState = q('transactions') .filter({ category: ':category' }) .select() .serialize(); @@ -206,7 +201,7 @@ describe('runQuery', () => { }); const { data } = await runQuery( - query('transactions') + q('transactions') .filter({ amount: { $lt: { $neg: ':amount' } }, date: [{ $lte: ':date' }, { $gte: ':date' }], @@ -226,7 +221,7 @@ describe('runQuery', () => { ids.sort(); const { data } = await runQuery( - query('transactions') + q('transactions') .filter({ id: { $oneof: repeat(ids, 1000) }, amount: { $lt: 50 } }) .select('id') .raw() diff --git a/packages/loot-core/src/server/aql/schema/executors.test.ts b/packages/loot-core/src/server/aql/schema/executors.test.ts index 3e588144f54..825ae8c94b2 100644 --- a/packages/loot-core/src/server/aql/schema/executors.test.ts +++ b/packages/loot-core/src/server/aql/schema/executors.test.ts @@ -2,7 +2,7 @@ import { setClock } from '@actual-app/crdt'; import fc from 'fast-check'; import * as arbs from '../../../mocks/arbitrary-schema'; -import query from '../../../shared/query'; +import { q } from '../../../shared/query'; import { groupById } from '../../../shared/util'; import * as db from '../../db'; import { batchMessages, setSyncingMode } from '../../sync/index'; @@ -139,7 +139,7 @@ describe('transaction executors', () => { await insertTransactions(arr); const { data } = await runQuery( - query('transactions') + q('transactions') .filter({ amount: { $lt: 0 } }) .select('*') .options({ splits: 'inline' }) @@ -150,7 +150,7 @@ describe('transaction executors', () => { expect(data.filter(t => t.tombstone).length).toBe(0); const { data: defaultData } = await runQuery( - query('transactions') + q('transactions') .filter({ amount: { $lt: 0 } }) .select('*') .serialize(), @@ -176,7 +176,7 @@ describe('transaction executors', () => { await insertTransactions(arr); const { data } = await runQuery( - query('transactions') + q('transactions') .filter({ amount: { $lt: 0 } }) .select('*') .options({ splits: 'none' }) @@ -200,7 +200,7 @@ describe('transaction executors', () => { async arr => { await insertTransactions(arr, payeeIds); - const aggQuery = query('transactions') + const aggQuery = q('transactions') .filter({ $or: [{ amount: { $lt: -5 } }, { amount: { $gt: -2 } }], 'payee.name': { $gt: '' }, @@ -346,7 +346,7 @@ describe('transaction executors', () => { // Even though we're applying some filters, these are always // guaranteed to return the full split transaction so they // should take the optimized path - const happyQuery = query('transactions') + const happyQuery = q('transactions') .filter({ date: { $gt: '2017-01-01' }, }) @@ -395,7 +395,7 @@ describe('transaction executors', () => { // Because why not? It should deduplicate them ids = repeat(ids, 100); - const unhappyQuery = query('transactions') + const unhappyQuery = q('transactions') .filter({ id: [{ $oneof: ids }], payee: { $gt: '' }, diff --git a/packages/loot-core/src/server/main.ts b/packages/loot-core/src/server/main.ts index 431023d76b4..126dca48cd0 100644 --- a/packages/loot-core/src/server/main.ts +++ b/packages/loot-core/src/server/main.ts @@ -8,11 +8,11 @@ import { captureException, captureBreadcrumb } from '../platform/exceptions'; import * as asyncStorage from '../platform/server/asyncStorage'; import * as connection from '../platform/server/connection'; import * as fs from '../platform/server/fs'; -import logger from '../platform/server/log'; +import { logger } from '../platform/server/log'; import * as sqlite from '../platform/server/sqlite'; import { isNonProductionEnvironment } from '../shared/environment'; import * as monthUtils from '../shared/months'; -import q, { Query } from '../shared/query'; +import { q, Query } from '../shared/query'; import { amountToInteger, stringToInteger } from '../shared/util'; import { Handlers } from '../types/handlers'; diff --git a/packages/loot-core/src/server/schedules/app.test.ts b/packages/loot-core/src/server/schedules/app.test.ts index cee8b965711..1472633bcf8 100644 --- a/packages/loot-core/src/server/schedules/app.test.ts +++ b/packages/loot-core/src/server/schedules/app.test.ts @@ -1,6 +1,6 @@ import MockDate from 'mockdate'; -import q from '../../shared/query'; +import { q } from '../../shared/query'; import { loadRules, updateRule } from '../accounts/transaction-rules'; import { runQuery as aqlQuery } from '../aql'; import { loadMappings } from '../db/mappings'; diff --git a/packages/loot-core/src/server/schedules/app.ts b/packages/loot-core/src/server/schedules/app.ts index 6c4db056138..ec1518f8393 100644 --- a/packages/loot-core/src/server/schedules/app.ts +++ b/packages/loot-core/src/server/schedules/app.ts @@ -5,7 +5,7 @@ import { v4 as uuidv4 } from 'uuid'; import { captureBreadcrumb } from '../../platform/exceptions'; import * as connection from '../../platform/server/connection'; import { dayFromDate, currentDay, parseDate } from '../../shared/months'; -import q from '../../shared/query'; +import { q } from '../../shared/query'; import { extractScheduleConds, recurConfigToRSchedule, diff --git a/packages/loot-core/src/server/schedules/find-schedules.ts b/packages/loot-core/src/server/schedules/find-schedules.ts index 6ac6e7999e7..9b7e76c3e31 100644 --- a/packages/loot-core/src/server/schedules/find-schedules.ts +++ b/packages/loot-core/src/server/schedules/find-schedules.ts @@ -2,7 +2,7 @@ import * as d from 'date-fns'; import { v4 as uuidv4 } from 'uuid'; import { dayFromDate, parseDate } from '../../shared/months'; -import q from '../../shared/query'; +import { q } from '../../shared/query'; import { getApproxNumberThreshold } from '../../shared/rules'; import { recurConfigToRSchedule } from '../../shared/schedules'; import { groupBy } from '../../shared/util'; diff --git a/packages/loot-core/src/server/sync/index.ts b/packages/loot-core/src/server/sync/index.ts index 344ecfec2d0..edbc28d7c94 100644 --- a/packages/loot-core/src/server/sync/index.ts +++ b/packages/loot-core/src/server/sync/index.ts @@ -9,7 +9,7 @@ import { import { captureException } from '../../platform/exceptions'; import * as asyncStorage from '../../platform/server/asyncStorage'; import * as connection from '../../platform/server/connection'; -import logger from '../../platform/server/log'; +import { logger } from '../../platform/server/log'; import { sequential, once } from '../../shared/async'; import { setIn, getIn } from '../../shared/util'; import { LocalPrefs } from '../../types/prefs'; diff --git a/packages/loot-core/src/shared/arithmetic.test.ts b/packages/loot-core/src/shared/arithmetic.test.ts index c0f5afa46c5..0475689b8dc 100644 --- a/packages/loot-core/src/shared/arithmetic.test.ts +++ b/packages/loot-core/src/shared/arithmetic.test.ts @@ -1,4 +1,4 @@ -import evalArithmetic from './arithmetic'; +import { evalArithmetic } from './arithmetic'; describe('arithmetic', () => { test('handles negative numbers', () => { diff --git a/packages/loot-core/src/shared/arithmetic.ts b/packages/loot-core/src/shared/arithmetic.ts index 2bf0eaa88b2..243afa7ed63 100644 --- a/packages/loot-core/src/shared/arithmetic.ts +++ b/packages/loot-core/src/shared/arithmetic.ts @@ -123,7 +123,7 @@ function evaluate(ast) { } } -export default function evalArithmetic(expression, defaultValue = null) { +export function evalArithmetic(expression, defaultValue = null) { // An empty expression always evals to the default if (expression === '') { return defaultValue; diff --git a/packages/loot-core/src/shared/query.ts b/packages/loot-core/src/shared/query.ts index b54ab392f49..1bd35e101d2 100644 --- a/packages/loot-core/src/shared/query.ts +++ b/packages/loot-core/src/shared/query.ts @@ -132,6 +132,6 @@ export function getPrimaryOrderBy(query, defaultOrderBy) { return { field, order: firstOrder[field] }; } -export default function q(table) { +export function q(table) { return new Query({ table }); } diff --git a/packages/loot-core/src/shared/schedules.ts b/packages/loot-core/src/shared/schedules.ts index 213e25af9bd..52d2e0092dd 100644 --- a/packages/loot-core/src/shared/schedules.ts +++ b/packages/loot-core/src/shared/schedules.ts @@ -1,7 +1,7 @@ import type { IRuleOptions } from '@rschedule/core'; import * as monthUtils from './months'; -import q from './query'; +import { q } from './query'; export function getStatus(nextDate, completed, hasTrans) { const today = monthUtils.currentDay(); diff --git a/upcoming-release-notes/2184.md b/upcoming-release-notes/2184.md new file mode 100644 index 00000000000..446130490ac --- /dev/null +++ b/upcoming-release-notes/2184.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [joel-jeremy] +--- + +eslint: no default exports - part 12