diff --git a/packages/desktop-client/src/components/Box.js b/packages/desktop-client/src/components/Box.js
index 6360eb13f738d00b375ffc46aab08e59c2272e25..0649804b387b45b34857edb0e6c2a37a0512b3ce 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 <div
+  return (
+    <div
       style={{
         ...style,
         flex: getFlex(flex),
         display: 'flex',
         flexDirection: direction || 'column'
       }}
-    >{children}</div>;
+    >
+      {children}
+    </div>
+  );
 }
 
 export default Box;
diff --git a/packages/desktop-client/src/components/Debugger.js b/packages/desktop-client/src/components/Debugger.js
index f65899790b43040d1ca58c9cd122ccfd1b987d58..e91d931af64c3467ec6a7d6b9c7287f57facd82d 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
                 }}
               />
               <Button onClick={this.toggleRecord} style={{ marginRight: 10 }}>
diff --git a/packages/desktop-client/src/components/FatalError.js b/packages/desktop-client/src/components/FatalError.js
index 25b5489c697ecda67a67899218eb6af02825b956..48dd267787f209bfda1410865ceed10a236175f0 100644
--- a/packages/desktop-client/src/components/FatalError.js
+++ b/packages/desktop-client/src/components/FatalError.js
@@ -99,7 +99,9 @@ class FatalError extends React.Component {
               .
             </P>
             <P>
-              <Button onClick={() => window.Actual.relaunch()}>{buttonText}</Button>
+              <Button onClick={() => window.Actual.relaunch()}>
+                {buttonText}
+              </Button>
             </P>
             <P isLast={true} style={{ fontSize: 11 }}>
               <Link
diff --git a/packages/desktop-client/src/components/FinancesApp.js b/packages/desktop-client/src/components/FinancesApp.js
index 65486b468fb024678fb131379c73e47c8050f3e7..4f2be90d7c889d64d69f49da0442d379f136b76e 100644
--- a/packages/desktop-client/src/components/FinancesApp.js
+++ b/packages/desktop-client/src/components/FinancesApp.js
@@ -277,7 +277,4 @@ function FinancesAppWithContext(props) {
   );
 }
 
-export default connect(
-  null,
-  actions
-)(FinancesAppWithContext);
+export default connect(null, actions)(FinancesAppWithContext);
diff --git a/packages/desktop-client/src/components/accounts/Account.js b/packages/desktop-client/src/components/accounts/Account.js
index 4a13dff7c90280de04631e346604e6d7329e33b9..e17fd8a97962b217b0e11a6a0b31990927a0dc82 100644
--- a/packages/desktop-client/src/components/accounts/Account.js
+++ b/packages/desktop-client/src/components/accounts/Account.js
@@ -642,7 +642,7 @@ const AccountHeader = React.memo(
     let searchInput = useRef(null);
     let splitsExpanded = useSplitsExpanded();
 
-    let canSync = syncEnabled && (account && account.account_id);
+    let canSync = syncEnabled && account && account.account_id;
     if (!account) {
       // All accounts - check for any syncable account
       canSync = !!accounts.find(account => !!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 44c0bf49aed27025e8816309500899dfa5e402bc..1ac95080504b239f70b8f0eb396a3f3c04e5ee6e 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 bbf702ae13dc23c9b70590f678cf8ddc5071113d..cc737890c7743e0fa31c164240fc987453683f20 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;
-
-    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);
+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);
diff --git a/packages/desktop-client/src/components/manager/subscribe/ConfirmPasswordForm.js b/packages/desktop-client/src/components/manager/subscribe/ConfirmPasswordForm.js
index cc50b4e9d38c0e0c094a7dea507ce30eaaccaa6f..80601fe198c63751786e34ba1233760f2da6ea07 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 }) {
         </label>
         <View style={{ flex: 1 }} />
         {buttons}
-        <ButtonWithLoading
-          primary
-          loading={loading}
-        >
+        <ButtonWithLoading primary loading={loading}>
           OK
         </ButtonWithLoading>
       </View>
diff --git a/packages/desktop-client/src/components/modals/WelcomeScreen.js b/packages/desktop-client/src/components/modals/WelcomeScreen.js
index 772f36199b271f185715b54653a59a9315390f69..bc2094db6e6d6a012ddc61ac9164ab3738682245 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 21b3aab3cf20ae58165fecc3c7b4f35c8550d6d6..61e9a373d96801194b27beeec2ecda8fe7bbbb0d 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 5e2ba9313a9889f510e92c658b821a73bd2c6f86..2366656130d67e4e1c25a647dcb9c28102140811 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 (
     <View
-    style={[
-      styles.page,
-      { paddingLeft: 40, paddingRight: 40, minWidth: 700 }
+      style={[
+        styles.page,
+        { paddingLeft: 40, paddingRight: 40, minWidth: 700 }
       ]}
     >
       <View
diff --git a/packages/desktop-client/src/components/tutorial/BudgetInitial.js b/packages/desktop-client/src/components/tutorial/BudgetInitial.js
index 1b07883c9fac7c7153ee1999349d4f19530cba72..4e1b577b6292cbfde3c2354bd5d1a8f4882b3a3d 100644
--- a/packages/desktop-client/src/components/tutorial/BudgetInitial.js
+++ b/packages/desktop-client/src/components/tutorial/BudgetInitial.js
@@ -15,9 +15,9 @@ function BudgetInitial({ accounts, navigationProps }) {
       {!minimized && (
         <React.Fragment>
           <P>
-            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.
           </P>
           <P>
             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 60904aea59a6b452369fd859b82870ca7df1952b..089ac9be920ebbe7016302a73b44cc953c48e83a 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 76d983570802b2218fb8060d2c49f4a4f503dab7..5a3da2235ef1fe3f507e23976aa3c2a79d0c6dcb 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 (
     <Standalone>
diff --git a/packages/desktop-client/src/components/tutorial/Overspending.js b/packages/desktop-client/src/components/tutorial/Overspending.js
index a1e3bef5783f4ef87cbc60f189d47f957e77e3a8..68f4188670d8091a43e84dfca3eae0c339bb94b3 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 e812656b9741242a79cf9515ab5e5a6d83af47f9..99738c3ef48acad04d19ac83ec0bfb093c37645d 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 }) {
         </P>
 
         <P isLast={true}>
-          Try <strong>clicking "Add New"</strong> to see how adding
-          transactions affects your budget.
+          Try <strong>clicking "Add New"</strong> to see how adding transactions
+          affects your budget.
         </P>
 
         <Navigation {...navigationProps} showBack={false} />
diff --git a/packages/desktop-client/src/components/tutorial/TransactionFinalize.js b/packages/desktop-client/src/components/tutorial/TransactionFinalize.js
index b702edf1ce2a4124a14d6bdf4e779121ff9d4de7..0a27f7fca0b740b022c1347043ed151f2d38ea1c 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 e4cda0d9a6c6565b990786da4b6a28b453295592..afa90415e997eeb681bbc919dbbc71773274a7f5 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 7de8781efbe2ef01e28238b7eb1f7646e94162fc..5e03bf4e6079221335643e9d4baf8824307b94b9 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 32f445c757c26d414efdecde2447666dd713a5bb..a375a3a0ce9b7010e03d0ccf5121230a0e146a38 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 14df5f4d855e0cd2c0c2f99f8cecce295b6e543a..133a09037ab6025311bb271eba178e3c050f5859 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 7664d5b4355c78da3f0fd25d17af9f48994adeee..bef3633b8e91b7fa198c1abe522f9dfb36629e68 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 d50b8f093f407a29776209f4ea51baf7d7e9c83b..37d8880edeb16b2a5634c00a24108fbe3140c854 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 670d02154e295e2bd369b2e15e8f889a0c72e794..cc1a66bfacd5e71666b8a5eac248b958d5a69a84 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 a819f0ec6aa32d7f4acf3426c0b48fe6d54f9ed1..591824f745c1bab5501780511b378ecdb20b9c07 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 9d65b416ec15b3f298e31ca6c1a7bbc1c2349970..7f97be6b1754a68286e5990aaf9a6b3653192ebd 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 3ad022ef5ad6a8956934070995f1382df18d4770..ab90383dd290cb129562bf1043573060cf1bf81f 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 f38ab50a1f836f6df4f9b213260ef9429c654606..818831f6e1b4f1befc474529b8bdaf33961fdbb7 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 19228da6a23496dd7bbf6e88fdc53ec3d9add5d1..716c8fe40034547e0820137d5ae55d9e6d782c1d 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 c447ac3911d5187cbddc3c68f696d8254296d062..f64ab128c6c31ef27f386a3231a7ab71dbd5f24d 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 4c06bccd4a19203bec0cb0b790801570bd9529ee..0de670b2b9324a02ec5ca5d77545ddb05421c512 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 2704b76b037ad16a5aa68e3eeb28c71837b89879..8b543e3a5ca167961def9f7ecb3d334b686690ed 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 3867ea3b9dbf41de63212d1b434c523f57fcaa2b..2ef9ea936902ae1becbbe81208098d51ee6dc689 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 8cc208c3d1968e7dc24dea55e6f142e5cd320deb..ae1a2887e0a717c3b5515a27d4fcb4170fe15429 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 6e8c3b2574cb18c8f32078f884b9b81d2d08d711..ed6eba92e38b4b8c1a63439eb60c28c817e33d76 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 2a5bf61b6ce961b8476b29dcd90561fdb8d6b34f..895dd8c7cc5ecd41012b0d0b5cb489b133e454f4 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 014d0cab90ccc1451dd8869f56938d5aa68c83e4..eff4af787ab21ee2a42dd49104f0a1369b0cfef2 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 346192e6a4b5b1a574659666e45b50c8b3d95c6d..9427e4debb4637038933dee54f4d20b2a74ef5a5 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 f190a60472ffe08234edcf4d7224684ead570959..2bf3b04919a4b5b661fd2846f8214c21a484710f 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 127ad698928969298fd51abe74ddc7c90f48c621..f042c3f5e91fde6d8e590b67cf1664724b4e2290 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 4a66a7155977394c71dd8fdd15f5bf3140ccaf90..ab4dc715b415b0d4f55417fd474e35923a9b071b 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 45e73989667ec52b52a4e78877aecb95bb9b0d28..9d8544f45f93c591da8fc5ba570b897b3eb72ba2 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 dbc8345c15c3715acd1d67138ef80bf5aa1d7e78..c938e09b2e34308d1bdca6f8db2eeb8db54e8c40 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 4b8f12f4aa61e0e670b675e01c4b21642c11fb9c..abe6f8cd1d734fcb47fd75b35b0dee8590ad29dc 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 8a93eabb767794a27787e46e6a3d0e060bea3f8b..a91d490935edfb7e0878195c327e8183124f08b7 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 19489e41b1761160496266b654f6057199700e0d..2a574566c7eded0d624bd45b986edcfd6ee91c69 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 8069233d69179c85959adbabcaa228db8fb63d68..8c5a4c9f24146bdb4c90b6bbcd347d3d83a0edd2 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 = [];