- 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 = [];