From d30067b5b925f96e6d9f5cebb963496535269a57 Mon Sep 17 00:00:00 2001 From: Tom French Date: Sun, 17 Jul 2022 11:28:05 +0100 Subject: [PATCH] style: apply prettier fixes --- packages/desktop-client/src/components/Box.js | 8 +- .../desktop-client/src/components/Debugger.js | 2 +- .../src/components/FatalError.js | 4 +- .../src/components/FinancesApp.js | 5 +- .../src/components/accounts/Account.js | 8 +- .../src/components/accounts/Filters.js | 6 +- .../src/components/manager/ManagementApp.js | 23 +- .../manager/subscribe/ConfirmPasswordForm.js | 5 +- .../src/components/modals/WelcomeScreen.js | 5 +- .../src/components/reports/Change.js | 2 +- .../src/components/reports/Overview.js | 11 +- .../src/components/tutorial/BudgetInitial.js | 6 +- .../components/tutorial/BudgetNextMonth.js | 7 +- .../components/tutorial/CategoryBalance.js | 2 +- .../src/components/tutorial/Overspending.js | 7 +- .../src/components/tutorial/TransactionAdd.js | 4 +- .../tutorial/TransactionFinalize.js | 2 +- .../loot-core/src/client/actions/debug.js | 2 +- packages/loot-core/src/mocks/budget.js | 18 +- .../platform/client/fetch/index.browser.js | 5 +- .../src/platform/client/fetch/index.mobile.js | 5 +- .../platform/client/fetch/index.testing.js | 5 +- .../src/platform/client/fetch/index.web.js | 5 +- .../src/platform/exceptions/index.testing.js | 6 +- .../src/platform/server/fs/index.web.js | 6 +- .../loot-core/src/server/accounts/link.js | 2 +- .../src/server/accounts/title/lower-case.js | 16 +- .../src/server/accounts/transactions.js | 6 +- .../loot-core/src/server/accounts/transfer.js | 37 +- .../loot-core/src/server/aql/exec.test.js | 86 +++-- .../src/server/aql/schema/executors.js | 5 +- .../src/server/aql/schema/index.test.js | 4 +- packages/loot-core/src/server/budget/app.js | 1 - packages/loot-core/src/server/budget/util.js | 1 - packages/loot-core/src/server/main.js | 105 +++--- .../loot-core/src/server/polyfills.mobile.js | 2 +- .../src/server/schedules/app.test.js | 35 +- .../src/server/schedules/find-schedules.js | 10 +- .../src/server/spreadsheet/new/parser.js | 2 +- .../src/server/spreadsheet/new/sqlgen.js | 4 +- .../src/server/spreadsheet/new/vm.js | 5 +- .../spreadsheet/tests/data-propagation.js | 10 +- .../src/server/spreadsheet/tests/graph.js | 340 +++++++++--------- .../loot-core/src/server/spreadsheet/usage.js | 37 +- .../src/server/sync/sync.property.test.js | 12 +- .../loot-core/src/server/sync/sync.test.js | 7 +- .../loot-core/src/server/tracking/events.js | 6 +- 47 files changed, 474 insertions(+), 418 deletions(-) diff --git a/packages/desktop-client/src/components/Box.js b/packages/desktop-client/src/components/Box.js index 6360eb1..0649804 100644 --- a/packages/desktop-client/src/components/Box.js +++ b/packages/desktop-client/src/components/Box.js @@ -9,14 +9,18 @@ function getFlex(flex) { } function Box({ flex, children, direction, style }) { - return
{children}
; + > + {children} + + ); } export default Box; diff --git a/packages/desktop-client/src/components/Debugger.js b/packages/desktop-client/src/components/Debugger.js index f658997..e91d931 100644 --- a/packages/desktop-client/src/components/Debugger.js +++ b/packages/desktop-client/src/components/Debugger.js @@ -206,7 +206,7 @@ class Debugger extends React.Component { height: 10, backgroundColor: '#303030', marginRight: 10, - borderRadius: 10, + borderRadius: 10 }} /> +

!!account.account_id); @@ -1701,9 +1701,9 @@ class AccountInternal extends React.PureComponent { } showAccount={ !accountId || - (accountId === 'offbudget' || - accountId === 'budgeted' || - accountId === 'uncategorized') + accountId === 'offbudget' || + accountId === 'budgeted' || + accountId === 'uncategorized' } isAdding={this.state.isAdding} isNew={this.isNew} diff --git a/packages/desktop-client/src/components/accounts/Filters.js b/packages/desktop-client/src/components/accounts/Filters.js index 44c0bf4..1ac9508 100644 --- a/packages/desktop-client/src/components/accounts/Filters.js +++ b/packages/desktop-client/src/components/accounts/Filters.js @@ -149,7 +149,11 @@ function ConfigureField({ field, op, value, dispatch, onApply }) { ['amount-outflow', 'Amount (outflow)'] ] : field === 'date' - ? [['date', 'Date'], ['month', 'Month'], ['year', 'Year']] + ? [ + ['date', 'Date'], + ['month', 'Month'], + ['year', 'Year'] + ] : null } value={subfield} diff --git a/packages/desktop-client/src/components/manager/ManagementApp.js b/packages/desktop-client/src/components/manager/ManagementApp.js index bbf702a..cc73789 100644 --- a/packages/desktop-client/src/components/manager/ManagementApp.js +++ b/packages/desktop-client/src/components/manager/ManagementApp.js @@ -230,17 +230,14 @@ class ManagementApp extends React.Component { } } -export default connect( - state => { - let { modalStack } = state.modals; +export default connect(state => { + let { modalStack } = state.modals; - return { - files: state.budgets.allFiles, - userData: state.user.data, - managerHasInitialized: state.app.managerHasInitialized, - loadingText: state.app.loadingText, - currentModals: modalStack.map(modal => modal.name) - }; - }, - actions -)(ManagementApp); + return { + files: state.budgets.allFiles, + userData: state.user.data, + managerHasInitialized: state.app.managerHasInitialized, + loadingText: state.app.loadingText, + currentModals: modalStack.map(modal => modal.name) + }; +}, actions)(ManagementApp); diff --git a/packages/desktop-client/src/components/manager/subscribe/ConfirmPasswordForm.js b/packages/desktop-client/src/components/manager/subscribe/ConfirmPasswordForm.js index cc50b4e..80601fe 100644 --- a/packages/desktop-client/src/components/manager/subscribe/ConfirmPasswordForm.js +++ b/packages/desktop-client/src/components/manager/subscribe/ConfirmPasswordForm.js @@ -69,10 +69,7 @@ export function ConfirmPasswordForm({ buttons, onSetPassword, onError }) { {buttons} - + OK diff --git a/packages/desktop-client/src/components/modals/WelcomeScreen.js b/packages/desktop-client/src/components/modals/WelcomeScreen.js index 772f361..bc2094d 100644 --- a/packages/desktop-client/src/components/modals/WelcomeScreen.js +++ b/packages/desktop-client/src/components/modals/WelcomeScreen.js @@ -70,7 +70,4 @@ function WelcomeScreen({ modalProps, actions }) { ); } -export default connect( - null, - actions -)(WelcomeScreen); +export default connect(null, actions)(WelcomeScreen); diff --git a/packages/desktop-client/src/components/reports/Change.js b/packages/desktop-client/src/components/reports/Change.js index 21b3aab..61e9a37 100644 --- a/packages/desktop-client/src/components/reports/Change.js +++ b/packages/desktop-client/src/components/reports/Change.js @@ -2,7 +2,7 @@ import React from 'react'; import { styles } from 'loot-design/src/style'; import { integerToCurrency } from 'loot-core/src/shared/util'; import { Block } from 'loot-design/src/components/common'; -import { colors } from 'loot-design/src/style' +import { colors } from 'loot-design/src/style'; function Change({ amount, style }) { return ( diff --git a/packages/desktop-client/src/components/reports/Overview.js b/packages/desktop-client/src/components/reports/Overview.js index 5e2ba93..2366656 100644 --- a/packages/desktop-client/src/components/reports/Overview.js +++ b/packages/desktop-client/src/components/reports/Overview.js @@ -110,7 +110,10 @@ function CashFlowCard() { const end = monthUtils.currentDay(); const start = monthUtils.currentMonth() + '-01'; - const data = useReport('cash_flow_simple', useArgsMemo(simpleCashFlow)(start, end)); + const data = useReport( + 'cash_flow_simple', + useArgsMemo(simpleCashFlow)(start, end) + ); if (!data) { return null; } @@ -218,9 +221,9 @@ function CashFlowCard() { function Overview({ accounts }) { return (

- You should see all of your current accounts' balance available - to budget. Click on the budgeted column for a category create a - budget. Keep doing this until your "To Budget" amount is zero. + You should see all of your current accounts' balance available to + budget. Click on the budgeted column for a category create a budget. + Keep doing this until your "To Budget" amount is zero.

Don't worry too much about your initial budget. Just guess. You'll diff --git a/packages/desktop-client/src/components/tutorial/BudgetNextMonth.js b/packages/desktop-client/src/components/tutorial/BudgetNextMonth.js index 60904ae..089ac9b 100644 --- a/packages/desktop-client/src/components/tutorial/BudgetNextMonth.js +++ b/packages/desktop-client/src/components/tutorial/BudgetNextMonth.js @@ -61,7 +61,6 @@ function BudgetNextMonth({ stepTwo, navigationProps }) { ); } -export default connect( - null, - dispatch => bindActionCreators(actions, dispatch) -)(BudgetNextMonth); +export default connect(null, dispatch => bindActionCreators(actions, dispatch))( + BudgetNextMonth +); diff --git a/packages/desktop-client/src/components/tutorial/CategoryBalance.js b/packages/desktop-client/src/components/tutorial/CategoryBalance.js index 76d9835..5a3da22 100644 --- a/packages/desktop-client/src/components/tutorial/CategoryBalance.js +++ b/packages/desktop-client/src/components/tutorial/CategoryBalance.js @@ -5,7 +5,7 @@ import { styles, colors } from 'loot-design/src/style'; import { Standalone, Title, useMinimized } from './common'; function CategoryBalance({ targetRect, navigationProps }) { - let [minimized, toggle] = useMinimized() + let [minimized, toggle] = useMinimized(); return ( diff --git a/packages/desktop-client/src/components/tutorial/Overspending.js b/packages/desktop-client/src/components/tutorial/Overspending.js index a1e3bef..68f4188 100644 --- a/packages/desktop-client/src/components/tutorial/Overspending.js +++ b/packages/desktop-client/src/components/tutorial/Overspending.js @@ -96,7 +96,6 @@ function Overspending({ navigationProps, stepTwo }) { ); } -export default connect( - null, - dispatch => bindActionCreators(actions, dispatch) -)(Overspending); +export default connect(null, dispatch => bindActionCreators(actions, dispatch))( + Overspending +); diff --git a/packages/desktop-client/src/components/tutorial/TransactionAdd.js b/packages/desktop-client/src/components/tutorial/TransactionAdd.js index e812656..99738c3 100644 --- a/packages/desktop-client/src/components/tutorial/TransactionAdd.js +++ b/packages/desktop-client/src/components/tutorial/TransactionAdd.js @@ -33,8 +33,8 @@ function TransactionAdd({ targetRect, navigationProps }) {

- Try clicking "Add New" to see how adding - transactions affects your budget. + Try clicking "Add New" to see how adding transactions + affects your budget.

diff --git a/packages/desktop-client/src/components/tutorial/TransactionFinalize.js b/packages/desktop-client/src/components/tutorial/TransactionFinalize.js index b702edf..0a27f7f 100644 --- a/packages/desktop-client/src/components/tutorial/TransactionFinalize.js +++ b/packages/desktop-client/src/components/tutorial/TransactionFinalize.js @@ -3,7 +3,7 @@ import { P } from 'loot-design/src/components/common'; import { css } from 'glamor'; import Navigation from './Navigation'; import * as monthUtils from 'loot-core/src/shared/months'; -import {Standalone} from './common'; +import { Standalone } from './common'; function TransactionFinalize({ navigationProps }) { return ( diff --git a/packages/loot-core/src/client/actions/debug.js b/packages/loot-core/src/client/actions/debug.js index e4cda0d..afa9041 100644 --- a/packages/loot-core/src/client/actions/debug.js +++ b/packages/loot-core/src/client/actions/debug.js @@ -5,5 +5,5 @@ export function debugCell(sheet, name) { type: constants.DEBUG_CELL, sheet, name - } + }; } diff --git a/packages/loot-core/src/mocks/budget.js b/packages/loot-core/src/mocks/budget.js index 7de8781..5e03bf4 100644 --- a/packages/loot-core/src/mocks/budget.js +++ b/packages/loot-core/src/mocks/budget.js @@ -439,15 +439,19 @@ async function fillOther(handlers, account, payees, groups) { async function createBudget(accounts, payees, groups) { let primaryAccount = accounts.find(a => (a.name = 'Bank of America')); - let earliestDate = (await db.first( - `SELECT * FROM v_transactions t LEFT JOIN accounts a ON t.account = a.id + let earliestDate = ( + await db.first( + `SELECT * FROM v_transactions t LEFT JOIN accounts a ON t.account = a.id WHERE a.offbudget = 0 AND t.is_child = 0 ORDER BY date ASC LIMIT 1` - )).date; - let earliestPrimaryDate = (await db.first( - `SELECT * FROM v_transactions t LEFT JOIN accounts a ON t.account = a.id + ) + ).date; + let earliestPrimaryDate = ( + await db.first( + `SELECT * FROM v_transactions t LEFT JOIN accounts a ON t.account = a.id WHERE a.id = ? AND a.offbudget = 0 AND t.is_child = 0 ORDER BY date ASC LIMIT 1`, - [primaryAccount.id] - )).date; + [primaryAccount.id] + ) + ).date; let start = monthUtils.monthFromDate(db.fromDateRepr(earliestDate)); let end = monthUtils.currentMonth(); diff --git a/packages/loot-core/src/platform/client/fetch/index.browser.js b/packages/loot-core/src/platform/client/fetch/index.browser.js index 32f445c..a375a3a 100644 --- a/packages/loot-core/src/platform/client/fetch/index.browser.js +++ b/packages/loot-core/src/platform/client/fetch/index.browser.js @@ -172,7 +172,10 @@ module.exports.listen = function listen(name, cb) { return () => { let arr = listeners.get(name); - listeners.set(name, arr.filter(cb_ => cb_ !== cb)); + listeners.set( + name, + arr.filter(cb_ => cb_ !== cb) + ); }; }; diff --git a/packages/loot-core/src/platform/client/fetch/index.mobile.js b/packages/loot-core/src/platform/client/fetch/index.mobile.js index 14df5f4..133a090 100644 --- a/packages/loot-core/src/platform/client/fetch/index.mobile.js +++ b/packages/loot-core/src/platform/client/fetch/index.mobile.js @@ -82,7 +82,10 @@ function listen(name, cb) { return () => { let arr = listeners.get(name); - listeners.set(name, arr.filter(cb_ => cb_ !== cb)); + listeners.set( + name, + arr.filter(cb_ => cb_ !== cb) + ); }; } diff --git a/packages/loot-core/src/platform/client/fetch/index.testing.js b/packages/loot-core/src/platform/client/fetch/index.testing.js index 7664d5b..bef3633 100644 --- a/packages/loot-core/src/platform/client/fetch/index.testing.js +++ b/packages/loot-core/src/platform/client/fetch/index.testing.js @@ -56,6 +56,9 @@ module.exports.listen = function listen(name, cb) { return () => { let arr = listeners.get(name); - listeners.set(name, arr.filter(cb_ => cb_ !== cb)); + listeners.set( + name, + arr.filter(cb_ => cb_ !== cb) + ); }; }; diff --git a/packages/loot-core/src/platform/client/fetch/index.web.js b/packages/loot-core/src/platform/client/fetch/index.web.js index d50b8f0..37d8880 100644 --- a/packages/loot-core/src/platform/client/fetch/index.web.js +++ b/packages/loot-core/src/platform/client/fetch/index.web.js @@ -117,7 +117,10 @@ module.exports.listen = function listen(name, cb) { return () => { let arr = listeners.get(name); if (arr) { - listeners.set(name, arr.filter(cb_ => cb_ !== cb)); + listeners.set( + name, + arr.filter(cb_ => cb_ !== cb) + ); } }; }; diff --git a/packages/loot-core/src/platform/exceptions/index.testing.js b/packages/loot-core/src/platform/exceptions/index.testing.js index 670d021..cc1a66b 100644 --- a/packages/loot-core/src/platform/exceptions/index.testing.js +++ b/packages/loot-core/src/platform/exceptions/index.testing.js @@ -1,5 +1,3 @@ -export function captureException(exc) { -} +export function captureException(exc) {} -export function captureBreadcrumb(info) { -} +export function captureBreadcrumb(info) {} diff --git a/packages/loot-core/src/platform/server/fs/index.web.js b/packages/loot-core/src/platform/server/fs/index.web.js index a819f0e..591824f 100644 --- a/packages/loot-core/src/platform/server/fs/index.web.js +++ b/packages/loot-core/src/platform/server/fs/index.web.js @@ -167,9 +167,9 @@ async function _removeFile(filepath) { // Load files from the server that should exist by default async function populateDefaultFilesystem() { - let index = await (await fetch( - process.env.PUBLIC_URL + 'data-file-index.txt' - )).text(); + let index = await ( + await fetch(process.env.PUBLIC_URL + 'data-file-index.txt') + ).text(); let files = index .split('\n') .map(name => name.trim()) diff --git a/packages/loot-core/src/server/accounts/link.js b/packages/loot-core/src/server/accounts/link.js index 9d65b41..7f97be6 100644 --- a/packages/loot-core/src/server/accounts/link.js +++ b/packages/loot-core/src/server/accounts/link.js @@ -1,6 +1,6 @@ import asyncStorage from '../../platform/server/asyncStorage'; import * as db from '../db'; -import { getServer } from '../server-config'; +import { getServer } from '../server-config'; import * as bankSync from './sync'; import { fromPlaidAccountType } from '../../shared/accounts'; import { amountToInteger } from '../../shared/util'; diff --git a/packages/loot-core/src/server/accounts/title/lower-case.js b/packages/loot-core/src/server/accounts/title/lower-case.js index 3ad022e..ab90383 100644 --- a/packages/loot-core/src/server/accounts/title/lower-case.js +++ b/packages/loot-core/src/server/accounts/title/lower-case.js @@ -1,18 +1,18 @@ const conjunctions = [ - 'for', + 'for', // 'and', 'nor', 'but', 'or', 'yet', 'so' -] +]; const articles = [ - 'a', + 'a', // 'an', 'the' -] +]; const prepositions = [ 'aboard', @@ -84,10 +84,6 @@ const prepositions = [ 'with', 'within', 'without' -] +]; -module.exports = new Set([ - ...conjunctions, - ...articles, - ...prepositions -]) +module.exports = new Set([...conjunctions, ...articles, ...prepositions]); diff --git a/packages/loot-core/src/server/accounts/transactions.js b/packages/loot-core/src/server/accounts/transactions.js index f38ab50..818831f 100644 --- a/packages/loot-core/src/server/accounts/transactions.js +++ b/packages/loot-core/src/server/accounts/transactions.js @@ -117,9 +117,9 @@ export async function batchUpdateTransactions({ await Promise.all(allAdded.map(t => transfer.onInsert(t))); // Return any updates from here - resultUpdated = (await Promise.all( - allUpdated.map(t => transfer.onUpdate(t)) - )).filter(Boolean); + resultUpdated = ( + await Promise.all(allUpdated.map(t => transfer.onUpdate(t))) + ).filter(Boolean); await Promise.all(allDeleted.map(t => transfer.onDelete(t))); }); diff --git a/packages/loot-core/src/server/accounts/transfer.js b/packages/loot-core/src/server/accounts/transfer.js index 19228da..716c8fe 100644 --- a/packages/loot-core/src/server/accounts/transfer.js +++ b/packages/loot-core/src/server/accounts/transfer.js @@ -6,24 +6,28 @@ async function getPayee(acct) { async function getTransferredAccount(transaction) { if (transaction.payee) { - let { transfer_acct, id } = await db.first( - 'SELECT id, transfer_acct FROM v_payees WHERE id = ?', - [transaction.payee] - ); + let { + transfer_acct, + id + } = await db.first('SELECT id, transfer_acct FROM v_payees WHERE id = ?', [ + transaction.payee + ]); return transfer_acct; } return null; } async function clearCategory(transaction, transferAcct) { - const { offbudget: fromOffBudget } = await db.first( - 'SELECT offbudget FROM accounts WHERE id = ?', - [transaction.account] - ); - const { offbudget: toOffBudget } = await db.first( - 'SELECT offbudget FROM accounts WHERE id = ?', - [transferAcct] - ); + const { + offbudget: fromOffBudget + } = await db.first('SELECT offbudget FROM accounts WHERE id = ?', [ + transaction.account + ]); + const { + offbudget: toOffBudget + } = await db.first('SELECT offbudget FROM accounts WHERE id = ?', [ + transferAcct + ]); // We should clear the category to make sure it's not being // accounted for in the budget, unless it should be in the case of @@ -36,10 +40,11 @@ async function clearCategory(transaction, transferAcct) { } export async function addTransfer(transaction, transferredAccount) { - let { id: fromPayee } = await db.first( - 'SELECT id FROM payees WHERE transfer_acct = ?', - [transaction.account] - ); + let { + id: fromPayee + } = await db.first('SELECT id FROM payees WHERE transfer_acct = ?', [ + transaction.account + ]); // We need to enforce certain constraints with child transaction transfers if (transaction.parent_id) { diff --git a/packages/loot-core/src/server/aql/exec.test.js b/packages/loot-core/src/server/aql/exec.test.js index c447ac3..f64ab12 100644 --- a/packages/loot-core/src/server/aql/exec.test.js +++ b/packages/loot-core/src/server/aql/exec.test.js @@ -81,28 +81,34 @@ describe('runQuery', () => { expect(data[0].date).toBe('2020-01-04'); // date-month - data = (await runQuery( - query('transactions') - .select({ month: { $month: '$date' } }) - .serialize() - )).data; + data = ( + await runQuery( + query('transactions') + .select({ month: { $month: '$date' } }) + .serialize() + ) + ).data; expect(data[0].month).toBe('2020-01'); // date-year - data = (await runQuery( - query('transactions') - .select({ year: { $year: '$date' } }) - .serialize() - )).data; + data = ( + await runQuery( + query('transactions') + .select({ year: { $year: '$date' } }) + .serialize() + ) + ).data; expect(data[0].year).toBe('2020'); // boolean - data = (await runQuery( - query('transactions') - .select(['is_child', 'is_parent']) - .raw() - .serialize() - )).data; + data = ( + await runQuery( + query('transactions') + .select(['is_child', 'is_parent']) + .raw() + .serialize() + ) + ).data; expect(data[0].is_child).toBe(false); expect(data[0].is_parent).toBe(true); expect(data[1].is_child).toBe(true); @@ -128,31 +134,37 @@ describe('runQuery', () => { ); expect(data[0].id).toBe(transId); - data = (await runQuery( - query('transactions') - .filter({ date: { $transform: '$month', $eq: { $month: ':month' } } }) - .select('date') - .serialize(), - { params: { month: '2020-01-02' } } - )).data; + data = ( + await runQuery( + query('transactions') + .filter({ date: { $transform: '$month', $eq: { $month: ':month' } } }) + .select('date') + .serialize(), + { params: { month: '2020-01-02' } } + ) + ).data; expect(data[0].id).toBe(transId); - data = (await runQuery( - query('transactions') - .filter({ date: { $transform: '$year', $eq: { $year: ':month' } } }) - .select('date') - .serialize(), - { params: { month: '2020-01-02' } } - )).data; + data = ( + await runQuery( + query('transactions') + .filter({ date: { $transform: '$year', $eq: { $year: ':month' } } }) + .select('date') + .serialize(), + { params: { month: '2020-01-02' } } + ) + ).data; expect(data[0].id).toBe(transId); - data = (await runQuery( - query('transactions') - .filter({ cleared: ':cleared' }) - .select('date') - .serialize(), - { params: { cleared: true } } - )).data; + data = ( + await runQuery( + query('transactions') + .filter({ cleared: ':cleared' }) + .select('date') + .serialize(), + { params: { cleared: true } } + ) + ).data; expect(data[0].id).toBe(transId); }); diff --git a/packages/loot-core/src/server/aql/schema/executors.js b/packages/loot-core/src/server/aql/schema/executors.js index 4c06bcc..0de670b 100644 --- a/packages/loot-core/src/server/aql/schema/executors.js +++ b/packages/loot-core/src/server/aql/schema/executors.js @@ -143,7 +143,10 @@ async function execTransactionsGrouped( rows = await db.all(rowSql, params); matched = new Set( - [].concat.apply([], rows.map(row => row.matched.split(','))) + [].concat.apply( + [], + rows.map(row => row.matched.split(',')) + ) ); } diff --git a/packages/loot-core/src/server/aql/schema/index.test.js b/packages/loot-core/src/server/aql/schema/index.test.js index 2704b76..8b543e3 100644 --- a/packages/loot-core/src/server/aql/schema/index.test.js +++ b/packages/loot-core/src/server/aql/schema/index.test.js @@ -10,7 +10,7 @@ describe('schema', () => { test('never returns transactions without a date', async () => { expect((await db.all('SELECT * FROM transactions')).length).toBe(0); expect((await db.all('SELECT * FROM v_transactions')).length).toBe(0); - await db.runQuery('INSERT INTO transactions (acct) VALUES (?)', ["foo"]); + await db.runQuery('INSERT INTO transactions (acct) VALUES (?)', ['foo']); expect((await db.all('SELECT * FROM transactions')).length).toBe(1); expect((await db.all('SELECT * FROM v_transactions')).length).toBe(0); }); @@ -28,7 +28,7 @@ describe('schema', () => { expect((await db.all('SELECT * FROM v_transactions')).length).toBe(0); await db.runQuery( 'INSERT INTO transactions (date, acct, isChild) VALUES (?, ?, ?)', - [20200101, "foo", 1] + [20200101, 'foo', 1] ); expect((await db.all('SELECT * FROM transactions')).length).toBe(1); expect((await db.all('SELECT * FROM v_transactions')).length).toBe(0); diff --git a/packages/loot-core/src/server/budget/app.js b/packages/loot-core/src/server/budget/app.js index 3867ea3..2ef9ea9 100644 --- a/packages/loot-core/src/server/budget/app.js +++ b/packages/loot-core/src/server/budget/app.js @@ -3,7 +3,6 @@ import { mutator } from '../mutators'; import { undoable } from '../undo'; import * as actions from './actions'; - let app = createApp(); app.method('budget/budget-amount', mutator(undoable(actions.setBudget))); diff --git a/packages/loot-core/src/server/budget/util.js b/packages/loot-core/src/server/budget/util.js index 8cc208c..ae1a288 100644 --- a/packages/loot-core/src/server/budget/util.js +++ b/packages/loot-core/src/server/budget/util.js @@ -19,4 +19,3 @@ export function unflatten2(arr) { } return res; } - diff --git a/packages/loot-core/src/server/main.js b/packages/loot-core/src/server/main.js index 6e8c3b2..ed6eba9 100644 --- a/packages/loot-core/src/server/main.js +++ b/packages/loot-core/src/server/main.js @@ -416,7 +416,10 @@ handlers['category-group-delete'] = mutator(async function({ id, transferId }) { return batchMessages(async () => { if (transferId) { - await budget.doTransfer(groupCategories.map(c => c.id), transferId); + await budget.doTransfer( + groupCategories.map(c => c.id), + transferId + ); } await db.deleteCategoryGroup({ id }, transferId); }); @@ -761,11 +764,15 @@ handlers['accounts-get'] = async function() { }; handlers['account-properties'] = async function({ id }) { - const { balance } = await db.first( + const { + balance + } = await db.first( 'SELECT sum(amount) as balance FROM transactions WHERE acct = ? AND isParent = 0 AND tombstone = 0', [id] ); - const { count } = await db.first( + const { + count + } = await db.first( 'SELECT count(id) as count FROM transactions WHERE acct = ? AND tombstone = 0', [id] ); @@ -904,10 +911,9 @@ handlers['account-close'] = mutator(async function({ true ); - let { id: payeeId } = await db.first( - 'SELECT id FROM payees WHERE transfer_acct = ?', - [id] - ); + let { + id: payeeId + } = await db.first('SELECT id FROM payees WHERE transfer_acct = ?', [id]); await batchMessages(() => { // TODO: what this should really do is send a special message that @@ -941,10 +947,11 @@ handlers['account-close'] = mutator(async function({ // If there is a balance we need to transfer it to the specified // account (and possibly categorize it) if (balance !== 0) { - let { id: payeeId } = await db.first( - 'SELECT id FROM payees WHERE transfer_acct = ?', - [transferAccountId] - ); + let { + id: payeeId + } = await db.first('SELECT id FROM payees WHERE transfer_acct = ?', [ + transferAccountId + ]); await handlers['transaction-add']({ id: uuid.v4Sync(), @@ -1084,9 +1091,7 @@ handlers['accounts-sync'] = async function({ id }) { } else if (err instanceof PostError && err.reason !== 'internal') { errors.push({ accountId: acct.id, - message: `Account "${ - acct.name - }" is not linked properly. Please link it again` + message: `Account "${acct.name}" is not linked properly. Please link it again` }); } else { errors.push({ @@ -1136,10 +1141,9 @@ handlers['transactions-import'] = mutator(function({ }); handlers['account-unlink'] = mutator(async function({ id }) { - let { bank: bankId } = await db.first( - 'SELECT bank FROM accounts WHERE id = ?', - [id] - ); + let { + bank: bankId + } = await db.first('SELECT bank FROM accounts WHERE id = ?', [id]); if (!bankId) { return 'ok'; @@ -1154,10 +1158,11 @@ handlers['account-unlink'] = mutator(async function({ id }) { balance_limit: null }); - let { count } = await db.first( - 'SELECT COUNT(*) as count FROM accounts WHERE bank = ?', - [bankId] - ); + let { + count + } = await db.first('SELECT COUNT(*) as count FROM accounts WHERE bank = ?', [ + bankId + ]); if (count === 0) { // No more accounts are associated with this bank. We can remove @@ -1547,35 +1552,37 @@ handlers['get-version'] = async function() { handlers['get-budgets'] = async function() { const paths = await fs.listDir(fs.getDocumentDir()); - const budgets = (await Promise.all( - paths.map(async name => { - const prefsPath = fs.join(fs.getDocumentDir(), name, 'metadata.json'); - if (await fs.exists(prefsPath)) { - let prefs; - try { - prefs = JSON.parse(await fs.readFile(prefsPath)); - } catch (e) { - console.log('Error parsing metadata:', e.stack); - return; + const budgets = ( + await Promise.all( + paths.map(async name => { + const prefsPath = fs.join(fs.getDocumentDir(), name, 'metadata.json'); + if (await fs.exists(prefsPath)) { + let prefs; + try { + prefs = JSON.parse(await fs.readFile(prefsPath)); + } catch (e) { + console.log('Error parsing metadata:', e.stack); + return; + } + + // We treat the directory name as the canonical id so that if + // the user moves it around/renames/etc, nothing breaks. The + // id is stored in prefs just for convenience (and the prefs + // will always update to the latest given id) + if (name !== DEMO_BUDGET_ID) { + return { + id: name, + cloudFileId: prefs.cloudFileId, + groupId: prefs.groupId, + name: prefs.budgetName || '(no name)' + }; + } } - // We treat the directory name as the canonical id so that if - // the user moves it around/renames/etc, nothing breaks. The - // id is stored in prefs just for convenience (and the prefs - // will always update to the latest given id) - if (name !== DEMO_BUDGET_ID) { - return { - id: name, - cloudFileId: prefs.cloudFileId, - groupId: prefs.groupId, - name: prefs.budgetName || '(no name)' - }; - } - } - - return null; - }) - )).filter(x => x); + return null; + }) + ) + ).filter(x => x); return budgets; }; diff --git a/packages/loot-core/src/server/polyfills.mobile.js b/packages/loot-core/src/server/polyfills.mobile.js index 2a5bf61..895dd8c 100644 --- a/packages/loot-core/src/server/polyfills.mobile.js +++ b/packages/loot-core/src/server/polyfills.mobile.js @@ -1,2 +1,2 @@ // Mobile needs this -import 'core-js/modules/es.object.from-entries' +import 'core-js/modules/es.object.from-entries'; diff --git a/packages/loot-core/src/server/schedules/app.test.js b/packages/loot-core/src/server/schedules/app.test.js index 014d0ca..eff4af7 100644 --- a/packages/loot-core/src/server/schedules/app.test.js +++ b/packages/loot-core/src/server/schedules/app.test.js @@ -73,7 +73,10 @@ describe('schedule app', () => { value: { start: '2020-12-20', frequency: 'monthly', - patterns: [{ type: 'day', value: 15 }, { type: 'day', value: 30 }] + patterns: [ + { type: 'day', value: 15 }, + { type: 'day', value: 30 } + ] } }) ).toBe('2021-05-30'); @@ -90,7 +93,10 @@ describe('schedule app', () => { value: { start: '2020-12-20', frequency: 'monthly', - patterns: [{ type: 'day', value: 15 }, { type: 'day', value: 30 }] + patterns: [ + { type: 'day', value: 15 }, + { type: 'day', value: 30 } + ] } } ] @@ -125,7 +131,10 @@ describe('schedule app', () => { value: { start: '2020-12-20', frequency: 'monthly', - patterns: [{ type: 'day', value: 15 }, { type: 'day', value: 30 }] + patterns: [ + { type: 'day', value: 15 }, + { type: 'day', value: 30 } + ] } } ] @@ -152,7 +161,10 @@ describe('schedule app', () => { value: { start: '2020-12-20', frequency: 'monthly', - patterns: [{ type: 'day', value: 18 }, { type: 'day', value: 29 }] + patterns: [ + { type: 'day', value: 18 }, + { type: 'day', value: 29 } + ] } } ] @@ -179,7 +191,10 @@ describe('schedule app', () => { value: { start: '2020-12-20', frequency: 'monthly', - patterns: [{ type: 'day', value: 15 }, { type: 'day', value: 30 }] + patterns: [ + { type: 'day', value: 15 }, + { type: 'day', value: 30 } + ] } } ] @@ -202,7 +217,10 @@ describe('schedule app', () => { value: { start: '2020-12-20', frequency: 'monthly', - patterns: [{ type: 'day', value: 15 }, { type: 'day', value: 30 }] + patterns: [ + { type: 'day', value: 15 }, + { type: 'day', value: 30 } + ] } } ] @@ -224,7 +242,10 @@ describe('schedule app', () => { value: { start: '2020-12-20', frequency: 'monthly', - patterns: [{ type: 'day', value: 18 }, { type: 'day', value: 28 }] + patterns: [ + { type: 'day', value: 18 }, + { type: 'day', value: 28 } + ] } } ] diff --git a/packages/loot-core/src/server/schedules/find-schedules.js b/packages/loot-core/src/server/schedules/find-schedules.js index 346192e..9427e4d 100644 --- a/packages/loot-core/src/server/schedules/find-schedules.js +++ b/packages/loot-core/src/server/schedules/find-schedules.js @@ -219,7 +219,10 @@ async function monthly1stor3rd(startDate, accountId) { return { start, frequency: 'monthly', - patterns: [{ type: dayValue, value: 1 }, { type: dayValue, value: 3 }] + patterns: [ + { type: dayValue, value: 1 }, + { type: dayValue, value: 3 } + ] }; }, accountId @@ -237,7 +240,10 @@ async function monthly2ndor4th(startDate, accountId) { return { start, frequency: 'monthly', - patterns: [{ type: dayValue, value: 2 }, { type: dayValue, value: 4 }] + patterns: [ + { type: dayValue, value: 2 }, + { type: dayValue, value: 4 } + ] }; }, accountId diff --git a/packages/loot-core/src/server/spreadsheet/new/parser.js b/packages/loot-core/src/server/spreadsheet/new/parser.js index f190a60..2bf3b04 100644 --- a/packages/loot-core/src/server/spreadsheet/new/parser.js +++ b/packages/loot-core/src/server/spreadsheet/new/parser.js @@ -363,7 +363,7 @@ function parsePostfix(state, node) { while ((tok = nextToken(state))) { if (tok.type === types.TOKEN_LEFT_PAREN) { pushToken(state, tok); - let args = parseArgs(state) + let args = parseArgs(state); node = new nodes.FunCall(tok.lineno, tok.colno, node, args); } else if (tok.type === types.TOKEN_DOT) { const val = nextToken(state); diff --git a/packages/loot-core/src/server/spreadsheet/new/sqlgen.js b/packages/loot-core/src/server/spreadsheet/new/sqlgen.js index 127ad69..f042c3f 100644 --- a/packages/loot-core/src/server/spreadsheet/new/sqlgen.js +++ b/packages/loot-core/src/server/spreadsheet/new/sqlgen.js @@ -239,9 +239,7 @@ export default function generate(table, where, groupby, select, deps) { joins.push(meta.sql(lookup.tableId)); } else { joins.push( - `LEFT JOIN ${meta.table} ${lookup.tableId} ON ${ - lookup.tableId - }.id = ${currentTable.id}.${lookup.field}` + `LEFT JOIN ${meta.table} ${lookup.tableId} ON ${lookup.tableId}.id = ${currentTable.id}.${lookup.field}` ); } diff --git a/packages/loot-core/src/server/spreadsheet/new/vm.js b/packages/loot-core/src/server/spreadsheet/new/vm.js index 4a66a71..ab4dc71 100644 --- a/packages/loot-core/src/server/spreadsheet/new/vm.js +++ b/packages/loot-core/src/server/spreadsheet/new/vm.js @@ -74,7 +74,10 @@ export default class VM { call(callee, args) { const func = this.get(callee); - this.reg1 = func.apply(null, args.map(arg => this.get(arg))); + this.reg1 = func.apply( + null, + args.map(arg => this.get(arg)) + ); } query(sql, calculated) { diff --git a/packages/loot-core/src/server/spreadsheet/tests/data-propagation.js b/packages/loot-core/src/server/spreadsheet/tests/data-propagation.js index 45e7398..9d8544f 100644 --- a/packages/loot-core/src/server/spreadsheet/tests/data-propagation.js +++ b/packages/loot-core/src/server/spreadsheet/tests/data-propagation.js @@ -1,10 +1,8 @@ +const expect = require('expect'); +const propagate = require('../data-compute/propagate.js'); - -const expect = require("expect"); -const propagate = require("../data-compute/propagate.js"); - -describe("data propagation", () => { - it("should work", () => { +describe('data propagation', () => { + it('should work', () => { expect(true).toExist(); }); }); diff --git a/packages/loot-core/src/server/spreadsheet/tests/graph.js b/packages/loot-core/src/server/spreadsheet/tests/graph.js index dbc8345..c938e09 100644 --- a/packages/loot-core/src/server/spreadsheet/tests/graph.js +++ b/packages/loot-core/src/server/spreadsheet/tests/graph.js @@ -1,308 +1,304 @@ - // Unit tests for reactive-property. -var assert = require("assert"); +var assert = require('assert'); // If using from the NPM package, this line would be // var Graph = require("graph-data-structure"); -var Graph = require("../data-compute/graph-data-structure"); +var Graph = require('../data-compute/graph-data-structure'); -describe("Graph", function() { - describe("Data structure", function() { - it("Should add nodes and list them.", function (){ +describe('Graph', function() { + describe('Data structure', function() { + it('Should add nodes and list them.', function() { var graph = Graph(); - graph.addNode("a"); - graph.addNode("b"); + graph.addNode('a'); + graph.addNode('b'); assert.equal(graph.nodes().length, 2); - assert(contains(graph.nodes(), "a")); - assert(contains(graph.nodes(), "b")); + assert(contains(graph.nodes(), 'a')); + assert(contains(graph.nodes(), 'b')); }); - it("Should chain addNode.", function (){ - var graph = Graph().addNode("a").addNode("b"); + it('Should chain addNode.', function() { + var graph = Graph() + .addNode('a') + .addNode('b'); assert.equal(graph.nodes().length, 2); - assert(contains(graph.nodes(), "a")); - assert(contains(graph.nodes(), "b")); + assert(contains(graph.nodes(), 'a')); + assert(contains(graph.nodes(), 'b')); }); - it("Should remove nodes.", function (){ + it('Should remove nodes.', function() { var graph = Graph(); - graph.addNode("a"); - graph.addNode("b"); - graph.removeNode("a"); - graph.removeNode("b"); + graph.addNode('a'); + graph.addNode('b'); + graph.removeNode('a'); + graph.removeNode('b'); assert.equal(graph.nodes().length, 0); }); - it("Should chain removeNode.", function (){ + it('Should chain removeNode.', function() { var graph = Graph() - .addNode("a") - .addNode("b") - .removeNode("a") - .removeNode("b"); + .addNode('a') + .addNode('b') + .removeNode('a') + .removeNode('b'); assert.equal(graph.nodes().length, 0); }); - it("Should add edges and query for adjacent nodes.", function (){ + it('Should add edges and query for adjacent nodes.', function() { var graph = Graph(); - graph.addNode("a"); - graph.addNode("b"); - graph.addEdge("a", "b"); - assert.equal(graph.adjacent("a").length, 1); - assert.equal(graph.adjacent("a")[0], "b"); + graph.addNode('a'); + graph.addNode('b'); + graph.addEdge('a', 'b'); + assert.equal(graph.adjacent('a').length, 1); + assert.equal(graph.adjacent('a')[0], 'b'); }); - it("Should implicitly add nodes when edges are added.", function (){ + it('Should implicitly add nodes when edges are added.', function() { var graph = Graph(); - graph.addEdge("a", "b"); - assert.equal(graph.adjacent("a").length, 1); - assert.equal(graph.adjacent("a")[0], "b"); + graph.addEdge('a', 'b'); + assert.equal(graph.adjacent('a').length, 1); + assert.equal(graph.adjacent('a')[0], 'b'); assert.equal(graph.nodes().length, 2); - assert(contains(graph.nodes(), "a")); - assert(contains(graph.nodes(), "b")); + assert(contains(graph.nodes(), 'a')); + assert(contains(graph.nodes(), 'b')); }); - it("Should chain addEdge.", function (){ - var graph = Graph().addEdge("a", "b"); - assert.equal(graph.adjacent("a").length, 1); - assert.equal(graph.adjacent("a")[0], "b"); + it('Should chain addEdge.', function() { + var graph = Graph().addEdge('a', 'b'); + assert.equal(graph.adjacent('a').length, 1); + assert.equal(graph.adjacent('a')[0], 'b'); }); - it("Should remove edges.", function (){ + it('Should remove edges.', function() { var graph = Graph(); - graph.addEdge("a", "b"); - graph.removeEdge("a", "b"); - assert.equal(graph.adjacent("a").length, 0); + graph.addEdge('a', 'b'); + graph.removeEdge('a', 'b'); + assert.equal(graph.adjacent('a').length, 0); }); - it("Should chain removeEdge.", function (){ + it('Should chain removeEdge.', function() { var graph = Graph() - .addEdge("a", "b") - .removeEdge("a", "b"); - assert.equal(graph.adjacent("a").length, 0); + .addEdge('a', 'b') + .removeEdge('a', 'b'); + assert.equal(graph.adjacent('a').length, 0); }); - it("Should not remove nodes when edges are removed.", function (){ + it('Should not remove nodes when edges are removed.', function() { var graph = Graph(); - graph.addEdge("a", "b"); - graph.removeEdge("a", "b"); + graph.addEdge('a', 'b'); + graph.removeEdge('a', 'b'); assert.equal(graph.nodes().length, 2); - assert(contains(graph.nodes(), "a")); - assert(contains(graph.nodes(), "b")); + assert(contains(graph.nodes(), 'a')); + assert(contains(graph.nodes(), 'b')); }); - it("Should remove outgoing edges when a node is removed.", function (){ + it('Should remove outgoing edges when a node is removed.', function() { var graph = Graph(); - graph.addEdge("a", "b"); - graph.removeNode("a"); - assert.equal(graph.adjacent("a").length, 0); + graph.addEdge('a', 'b'); + graph.removeNode('a'); + assert.equal(graph.adjacent('a').length, 0); }); - it("Should remove incoming edges when a node is removed.", function (){ + it('Should remove incoming edges when a node is removed.', function() { var graph = Graph(); - graph.addEdge("a", "b"); - graph.removeNode("b"); - assert.equal(graph.adjacent("a").length, 0); + graph.addEdge('a', 'b'); + graph.removeNode('b'); + assert.equal(graph.adjacent('a').length, 0); }); - it("Should compute indegree.", function (){ + it('Should compute indegree.', function() { var graph = Graph(); - graph.addEdge("a", "b"); - assert.equal(graph.indegree("a"), 0); - assert.equal(graph.indegree("b"), 1); + graph.addEdge('a', 'b'); + assert.equal(graph.indegree('a'), 0); + assert.equal(graph.indegree('b'), 1); - graph.addEdge("c", "b"); - assert.equal(graph.indegree("b"), 2); + graph.addEdge('c', 'b'); + assert.equal(graph.indegree('b'), 2); }); - it("Should compute outdegree.", function (){ + it('Should compute outdegree.', function() { var graph = Graph(); - graph.addEdge("a", "b"); - assert.equal(graph.outdegree("a"), 1); - assert.equal(graph.outdegree("b"), 0); + graph.addEdge('a', 'b'); + assert.equal(graph.outdegree('a'), 1); + assert.equal(graph.outdegree('b'), 0); - graph.addEdge("a", "c"); - assert.equal(graph.outdegree("a"), 2); + graph.addEdge('a', 'c'); + assert.equal(graph.outdegree('a'), 2); }); - }); - describe("Algorithms", function() { - + describe('Algorithms', function() { // This example is from Cormen et al. "Introduction to Algorithms" page 550 - it("Should compute topological sort.", function (){ - + it('Should compute topological sort.', function() { var graph = Graph(); // Shoes depend on socks. // Socks need to be put on before shoes. - graph.addEdge("socks", "shoes"); + graph.addEdge('socks', 'shoes'); - graph.addEdge("shirt", "belt"); - graph.addEdge("shirt", "tie"); - graph.addEdge("tie", "jacket"); - graph.addEdge("belt", "jacket"); - graph.addEdge("pants", "shoes"); - graph.addEdge("underpants", "pants"); - graph.addEdge("pants", "belt"); + graph.addEdge('shirt', 'belt'); + graph.addEdge('shirt', 'tie'); + graph.addEdge('tie', 'jacket'); + graph.addEdge('belt', 'jacket'); + graph.addEdge('pants', 'shoes'); + graph.addEdge('underpants', 'pants'); + graph.addEdge('pants', 'belt'); var sorted = graph.topologicalSort(); - assert(comesBefore(sorted, "pants", "shoes")); - assert(comesBefore(sorted, "underpants", "pants")); - assert(comesBefore(sorted, "underpants", "shoes")); - assert(comesBefore(sorted, "shirt", "jacket")); - assert(comesBefore(sorted, "shirt", "belt")); - assert(comesBefore(sorted, "belt", "jacket")); + assert(comesBefore(sorted, 'pants', 'shoes')); + assert(comesBefore(sorted, 'underpants', 'pants')); + assert(comesBefore(sorted, 'underpants', 'shoes')); + assert(comesBefore(sorted, 'shirt', 'jacket')); + assert(comesBefore(sorted, 'shirt', 'belt')); + assert(comesBefore(sorted, 'belt', 'jacket')); assert.equal(sorted.length, 8); - }); - it("Should compute topological sort, excluding source nodes.", function (){ + it('Should compute topological sort, excluding source nodes.', function() { var graph = Graph(); - graph.addEdge("a", "b"); - graph.addEdge("b", "c"); - var sorted = graph.topologicalSort(["a"], false); + graph.addEdge('a', 'b'); + graph.addEdge('b', 'c'); + var sorted = graph.topologicalSort(['a'], false); assert.equal(sorted.length, 2); - assert.equal(sorted[0], "b"); - assert.equal(sorted[1], "c"); + assert.equal(sorted[0], 'b'); + assert.equal(sorted[1], 'c'); }); - it("Should compute topological sort tricky case.", function (){ + it('Should compute topological sort tricky case.', function() { + var graph = Graph(); // a + // / \ + graph.addEdge('a', 'b'); // b | + graph.addEdge('a', 'd'); // | d + graph.addEdge('b', 'c'); // c | + graph.addEdge('d', 'e'); // \ / + graph.addEdge('c', 'e'); // e - var graph = Graph(); // a - // / \ - graph.addEdge("a", "b"); // b | - graph.addEdge("a", "d"); // | d - graph.addEdge("b", "c"); // c | - graph.addEdge("d", "e"); // \ / - graph.addEdge("c", "e"); // e - - var sorted = graph.topologicalSort(["a"], false); + var sorted = graph.topologicalSort(['a'], false); assert.equal(sorted.length, 4); - assert(contains(sorted, "b")); - assert(contains(sorted, "c")); - assert(contains(sorted, "d")); - assert.equal(sorted[sorted.length - 1], "e"); - - assert(comesBefore(sorted, "b", "c")); - assert(comesBefore(sorted, "b", "e")); - assert(comesBefore(sorted, "c", "e")); - assert(comesBefore(sorted, "d", "e")); + assert(contains(sorted, 'b')); + assert(contains(sorted, 'c')); + assert(contains(sorted, 'd')); + assert.equal(sorted[sorted.length - 1], 'e'); + assert(comesBefore(sorted, 'b', 'c')); + assert(comesBefore(sorted, 'b', 'e')); + assert(comesBefore(sorted, 'c', 'e')); + assert(comesBefore(sorted, 'd', 'e')); }); - it("Should exclude source nodes with a cycle.", function (){ + it('Should exclude source nodes with a cycle.', function() { var graph = Graph() - .addEdge("a", "b") - .addEdge("b", "c") - .addEdge("c", "a"); - var sorted = graph.topologicalSort(["a"], false); + .addEdge('a', 'b') + .addEdge('b', 'c') + .addEdge('c', 'a'); + var sorted = graph.topologicalSort(['a'], false); assert.equal(sorted.length, 2); - assert.equal(sorted[0], "b"); - assert.equal(sorted[1], "c"); - + assert.equal(sorted[0], 'b'); + assert.equal(sorted[1], 'c'); }); - it("Should exclude source nodes with multiple cycles.", function (){ + it('Should exclude source nodes with multiple cycles.', function() { var graph = Graph() + .addEdge('a', 'b') + .addEdge('b', 'a') - .addEdge("a", "b") - .addEdge("b", "a") + .addEdge('b', 'c') + .addEdge('c', 'b') - .addEdge("b", "c") - .addEdge("c", "b") + .addEdge('a', 'c') + .addEdge('c', 'a'); - .addEdge("a", "c") - .addEdge("c", "a"); - - var sorted = graph.topologicalSort(["a", "b"], false); - assert(!contains(sorted, "b")); + var sorted = graph.topologicalSort(['a', 'b'], false); + assert(!contains(sorted, 'b')); }); }); - describe("Edge cases and error handling", function() { - - it("Should return empty array of adjacent nodes for unknown nodes.", function (){ + describe('Edge cases and error handling', function() { + it('Should return empty array of adjacent nodes for unknown nodes.', function() { var graph = Graph(); - assert.equal(graph.adjacent("a").length, 0); + assert.equal(graph.adjacent('a').length, 0); assert.equal(graph.nodes(), 0); }); - it("Should do nothing if removing an edge that does not exist.", function (){ - assert.doesNotThrow(function (){ + it('Should do nothing if removing an edge that does not exist.', function() { + assert.doesNotThrow(function() { var graph = Graph(); - graph.removeEdge("a", "b"); + graph.removeEdge('a', 'b'); }); }); - it("Should return indegree of 0 for unknown nodes.", function (){ + it('Should return indegree of 0 for unknown nodes.', function() { var graph = Graph(); - assert.equal(graph.indegree("z"), 0); + assert.equal(graph.indegree('z'), 0); }); - it("Should return outdegree of 0 for unknown nodes.", function (){ + it('Should return outdegree of 0 for unknown nodes.', function() { var graph = Graph(); - assert.equal(graph.outdegree("z"), 0); + assert.equal(graph.outdegree('z'), 0); }); - }); - describe("Serialization", function() { - + describe('Serialization', function() { var serialized; - function checkSerialized(graph){ + function checkSerialized(graph) { assert.equal(graph.nodes.length, 3); assert.equal(graph.links.length, 2); - assert.equal(graph.nodes[0].id, "a"); - assert.equal(graph.nodes[1].id, "b"); - assert.equal(graph.nodes[2].id, "c"); + assert.equal(graph.nodes[0].id, 'a'); + assert.equal(graph.nodes[1].id, 'b'); + assert.equal(graph.nodes[2].id, 'c'); - assert.equal(graph.links[0].source, "a"); - assert.equal(graph.links[0].target, "b"); - assert.equal(graph.links[1].source, "b"); - assert.equal(graph.links[1].target, "c"); + assert.equal(graph.links[0].source, 'a'); + assert.equal(graph.links[0].target, 'b'); + assert.equal(graph.links[1].source, 'b'); + assert.equal(graph.links[1].target, 'c'); } - it("Should serialize a graph.", function (){ + it('Should serialize a graph.', function() { var graph = Graph() - .addEdge("a", "b") - .addEdge("b", "c"); + .addEdge('a', 'b') + .addEdge('b', 'c'); serialized = graph.serialize(); checkSerialized(serialized); }); - it("Should deserialize a graph.", function (){ + it('Should deserialize a graph.', function() { var graph = Graph(); graph.deserialize(serialized); checkSerialized(graph.serialize()); }); - it("Should chain deserialize a graph.", function (){ + it('Should chain deserialize a graph.', function() { var graph = Graph().deserialize(serialized); checkSerialized(graph.serialize()); }); - it("Should deserialize a graph passed to constructor.", function (){ + it('Should deserialize a graph passed to constructor.', function() { var graph = Graph(serialized); checkSerialized(graph.serialize()); }); }); }); -function contains(arr, item){ - return arr.filter(function (d){ - return d === item; - }).length > 0; +function contains(arr, item) { + return ( + arr.filter(function(d) { + return d === item; + }).length > 0 + ); } -function comesBefore(arr, a, b){ +function comesBefore(arr, a, b) { var aIndex, bIndex; - arr.forEach(function (d, i){ - if(d === a){ aIndex = i; } - if(d === b){ bIndex = i; } + arr.forEach(function(d, i) { + if (d === a) { + aIndex = i; + } + if (d === b) { + bIndex = i; + } }); return aIndex < bIndex; } diff --git a/packages/loot-core/src/server/spreadsheet/usage.js b/packages/loot-core/src/server/spreadsheet/usage.js index 4b8f12f..abe6f8c 100644 --- a/packages/loot-core/src/server/spreadsheet/usage.js +++ b/packages/loot-core/src/server/spreadsheet/usage.js @@ -1,12 +1,12 @@ -const sqlite = require("sqlite3"); -const escodegen = require("escodegen"); -const sqlgen = require("./sqlgen"); +const sqlite = require('sqlite3'); +const escodegen = require('escodegen'); +const sqlgen = require('./sqlgen'); // Example usage: -const Spreadsheet = require("./spreadsheet"); +const Spreadsheet = require('./spreadsheet'); -const db = new sqlite.Database(__dirname + "/../../db.sqlite"); +const db = new sqlite.Database(__dirname + '/../../db.sqlite'); const sheet = new Spreadsheet({ plugins: { runQuery: { @@ -20,22 +20,24 @@ const sheet = new Spreadsheet({ return { data: { - type: "query", + type: 'query', query: query, sql: sql }, ast: { - type: "CallExpression", + type: 'CallExpression', callee: { - type: "Identifier", - name: "runQuery" + type: 'Identifier', + name: 'runQuery' }, - arguments: [{ - type: "Literal", - raw: sql, - value: sql - }] + arguments: [ + { + type: 'Literal', + raw: sql, + value: sql + } + ] } }; }, @@ -43,7 +45,7 @@ const sheet = new Spreadsheet({ return new Promise(resolve => { const start = Date.now(); db.all(sql, function(err, rows) { - if(err) { + if (err) { throw new Error(err); } resolve(rows); @@ -54,11 +56,12 @@ const sheet = new Spreadsheet({ } }); -db.on("preupdate", function(type, dbname, table, old, _new, oldId, newId) { +db.on('preupdate', function(type, dbname, table, old, _new, oldId, newId) { sheet.resolve().then(() => { const start = Date.now(); sheet.startTransaction(); - sheet.getNodesOfType("query") + sheet + .getNodesOfType('query') .filter(node => node.data.query.table === table) .forEach(q => { sheet.signal(q.name); diff --git a/packages/loot-core/src/server/sync/sync.property.test.js b/packages/loot-core/src/server/sync/sync.property.test.js index 8a93eab..a91d490 100644 --- a/packages/loot-core/src/server/sync/sync.property.test.js +++ b/packages/loot-core/src/server/sync/sync.property.test.js @@ -9,9 +9,10 @@ const Database = require('better-sqlite3'); const fs = require('fs'); const jsc = require('jsverify'); const uuid = require('uuid'); -const uuidGenerator = jsc - .integer(97, 122) - .smap(x => String.fromCharCode(x), x => x.charCodeAt(x)); +const uuidGenerator = jsc.integer(97, 122).smap( + x => String.fromCharCode(x), + x => x.charCodeAt(x) +); const mockSyncServer = require('../tests/mockSyncServer'); @@ -129,7 +130,10 @@ Object.keys(schema).forEach(table => { generators.push( makeGen({ table, - row: jsc.asciinestring.smap(x => 'sheet!' + x, x => x), + row: jsc.asciinestring.smap( + x => 'sheet!' + x, + x => x + ), field: 'expr', value: jsc.constant(JSON.stringify('fooooo')) }) diff --git a/packages/loot-core/src/server/sync/sync.test.js b/packages/loot-core/src/server/sync/sync.test.js index 19489e4..2a57456 100644 --- a/packages/loot-core/src/server/sync/sync.test.js +++ b/packages/loot-core/src/server/sync/sync.test.js @@ -3,12 +3,7 @@ import * as db from '../db'; import * as sheet from '../sheet'; import Timestamp, { getClock } from '../timestamp'; import { resolveName } from '../spreadsheet/util'; -import { - setSyncingMode, - sendMessages, - applyMessages, - fullSync -} from './index'; +import { setSyncingMode, sendMessages, applyMessages, fullSync } from './index'; import * as encoder from './encoder'; const mockSyncServer = require('../tests/mockSyncServer'); diff --git a/packages/loot-core/src/server/tracking/events.js b/packages/loot-core/src/server/tracking/events.js index 8069233..8c5a4c9 100644 --- a/packages/loot-core/src/server/tracking/events.js +++ b/packages/loot-core/src/server/tracking/events.js @@ -26,11 +26,9 @@ function isAnonymous(id) { return !id.startsWith('user-'); } -export async function init() { -} +export async function init() {} -export async function login(userId) { -} +export async function login(userId) {} let BUFFERING = false; let BUFFER = [];