@actual-app/api 6.7.1 → 6.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/@types/app/bundle.api.d.ts +6 -0
  2. package/@types/app/query.d.ts +19 -0
  3. package/@types/index.d.ts +7 -0
  4. package/@types/injected.d.ts +2 -0
  5. package/@types/jest.config.d.ts +9 -0
  6. package/@types/loot-core/client/actions/types.d.ts +6 -0
  7. package/@types/loot-core/client/constants.d.ts +29 -0
  8. package/@types/loot-core/client/platform.d.ts +4 -0
  9. package/@types/loot-core/client/state-types/account.d.ts +27 -0
  10. package/@types/loot-core/client/state-types/app.d.ts +37 -0
  11. package/@types/loot-core/client/state-types/budgets.d.ts +36 -0
  12. package/@types/loot-core/client/state-types/index.d.ts +41 -0
  13. package/@types/loot-core/client/state-types/modals.d.ts +292 -0
  14. package/@types/loot-core/client/state-types/notifications.d.ts +38 -0
  15. package/@types/loot-core/client/state-types/prefs.d.ts +28 -0
  16. package/@types/loot-core/client/state-types/queries.d.ts +69 -0
  17. package/@types/loot-core/client/state-types/user.d.ts +13 -0
  18. package/@types/loot-core/mocks/budget.d.ts +2 -0
  19. package/@types/loot-core/mocks/index.d.ts +26 -0
  20. package/@types/loot-core/mocks/random.d.ts +1 -0
  21. package/@types/loot-core/mocks/util.d.ts +7 -0
  22. package/@types/loot-core/platform/client/fetch/index.d.ts +48 -0
  23. package/@types/loot-core/platform/client/undo/index.d.ts +29 -0
  24. package/@types/loot-core/platform/exceptions/index.d.ts +5 -0
  25. package/@types/loot-core/platform/server/asyncStorage/index.d.ts +20 -0
  26. package/@types/loot-core/platform/server/connection/index.d.ts +23 -0
  27. package/@types/loot-core/platform/server/fetch/index.d.ts +4 -0
  28. package/@types/loot-core/platform/server/fs/index.d.ts +71 -0
  29. package/@types/loot-core/platform/server/fs/path-join.d.ts +2 -0
  30. package/@types/loot-core/platform/server/indexeddb/index.d.ts +24 -0
  31. package/@types/loot-core/platform/server/log/index.d.ts +9 -0
  32. package/@types/loot-core/platform/server/sqlite/index.d.ts +35 -0
  33. package/@types/loot-core/server/accounts/export-to-csv.d.ts +2 -0
  34. package/@types/loot-core/server/accounts/link.d.ts +1 -0
  35. package/@types/loot-core/server/accounts/ofx2json.d.ts +14 -0
  36. package/@types/loot-core/server/accounts/parse-file.d.ts +15 -0
  37. package/@types/loot-core/server/accounts/payees.d.ts +5 -0
  38. package/@types/loot-core/server/accounts/qif2json.d.ts +26 -0
  39. package/@types/loot-core/server/accounts/rules.d.ts +90 -0
  40. package/@types/loot-core/server/accounts/sync.d.ts +13 -0
  41. package/@types/loot-core/server/accounts/title/index.d.ts +3 -0
  42. package/@types/loot-core/server/accounts/title/lower-case.d.ts +1 -0
  43. package/@types/loot-core/server/accounts/title/specials.d.ts +1 -0
  44. package/@types/loot-core/server/accounts/transaction-rules.d.ts +47 -0
  45. package/@types/loot-core/server/accounts/transactions.d.ts +33 -0
  46. package/@types/loot-core/server/accounts/transfer.d.ts +37 -0
  47. package/@types/loot-core/server/accounts/xmlcamt2json.d.ts +10 -0
  48. package/@types/loot-core/server/api-models.d.ts +66 -0
  49. package/@types/loot-core/server/api.d.ts +3 -0
  50. package/@types/loot-core/server/app.d.ts +14 -0
  51. package/@types/loot-core/server/aql/compiler.d.ts +56 -0
  52. package/@types/loot-core/server/aql/exec.d.ts +9 -0
  53. package/@types/loot-core/server/aql/index.d.ts +5 -0
  54. package/@types/loot-core/server/aql/schema/executors.d.ts +6 -0
  55. package/@types/loot-core/server/aql/schema/index.d.ts +340 -0
  56. package/@types/loot-core/server/aql/schema/run-query.d.ts +6 -0
  57. package/@types/loot-core/server/aql/schema-helpers.d.ts +8 -0
  58. package/@types/loot-core/server/aql/views.d.ts +1 -0
  59. package/@types/loot-core/server/backups.d.ts +16 -0
  60. package/@types/loot-core/server/backups.test.d.ts +1 -0
  61. package/@types/loot-core/server/budget/actions.d.ts +63 -0
  62. package/@types/loot-core/server/budget/app.d.ts +12 -0
  63. package/@types/loot-core/server/budget/base.d.ts +17 -0
  64. package/@types/loot-core/server/budget/cleanup-template.d.ts +4 -0
  65. package/@types/loot-core/server/budget/goals/goalsAverage.d.ts +4 -0
  66. package/@types/loot-core/server/budget/goals/goalsBy.d.ts +5 -0
  67. package/@types/loot-core/server/budget/goals/goalsPercentage.d.ts +4 -0
  68. package/@types/loot-core/server/budget/goals/goalsRemainder.d.ts +8 -0
  69. package/@types/loot-core/server/budget/goals/goalsSchedule.d.ts +6 -0
  70. package/@types/loot-core/server/budget/goals/goalsSimple.d.ts +7 -0
  71. package/@types/loot-core/server/budget/goals/goalsSpend.d.ts +4 -0
  72. package/@types/loot-core/server/budget/goals/goalsWeek.d.ts +7 -0
  73. package/@types/loot-core/server/budget/goaltemplates.d.ts +12 -0
  74. package/@types/loot-core/server/budget/report.d.ts +2 -0
  75. package/@types/loot-core/server/budget/rollover.d.ts +4 -0
  76. package/@types/loot-core/server/budget/types/handlers.d.ts +77 -0
  77. package/@types/loot-core/server/budget/util.d.ts +4 -0
  78. package/@types/loot-core/server/cloud-storage.d.ts +33 -0
  79. package/@types/loot-core/server/db/index.d.ts +60 -0
  80. package/@types/loot-core/server/db/mappings.d.ts +3 -0
  81. package/@types/loot-core/server/db/sort.d.ts +11 -0
  82. package/@types/loot-core/server/db/util.d.ts +2 -0
  83. package/@types/loot-core/server/encryption-internals.d.ts +24 -0
  84. package/@types/loot-core/server/encryption-internals.web.d.ts +24 -0
  85. package/@types/loot-core/server/encryption.d.ts +41 -0
  86. package/@types/loot-core/server/encryption.test.d.ts +1 -0
  87. package/@types/loot-core/server/errors.d.ts +73 -0
  88. package/@types/loot-core/server/filters/app.d.ts +12 -0
  89. package/@types/loot-core/server/filters/types/handlers.d.ts +7 -0
  90. package/@types/loot-core/server/importers/actual.d.ts +4 -0
  91. package/@types/loot-core/server/importers/index.d.ts +6 -0
  92. package/@types/loot-core/server/importers/ynab4-types.d.ts +167 -0
  93. package/@types/loot-core/server/importers/ynab4.d.ts +5 -0
  94. package/@types/loot-core/server/importers/ynab5-types.d.ts +79 -0
  95. package/@types/loot-core/server/importers/ynab5.d.ts +5 -0
  96. package/@types/loot-core/server/main-app.d.ts +12 -0
  97. package/@types/loot-core/server/main.d.ts +28 -0
  98. package/@types/loot-core/server/main.test.d.ts +1 -0
  99. package/@types/loot-core/server/migrate/migrations.d.ts +9 -0
  100. package/@types/loot-core/server/models.d.ts +38 -0
  101. package/@types/loot-core/server/mutators.d.ts +17 -0
  102. package/@types/loot-core/server/notes/app.d.ts +12 -0
  103. package/@types/loot-core/server/notes/types/handlers.d.ts +3 -0
  104. package/@types/loot-core/server/platform.d.ts +3 -0
  105. package/@types/loot-core/server/platform.web.d.ts +3 -0
  106. package/@types/loot-core/server/polyfills.d.ts +0 -0
  107. package/@types/loot-core/server/post.d.ts +3 -0
  108. package/@types/loot-core/server/prefs.d.ts +10 -0
  109. package/@types/loot-core/server/reports/app.d.ts +12 -0
  110. package/@types/loot-core/server/reports/types/handlers.d.ts +6 -0
  111. package/@types/loot-core/server/rules/app.d.ts +12 -0
  112. package/@types/loot-core/server/rules/types/handlers.d.ts +42 -0
  113. package/@types/loot-core/server/schedules/app.d.ts +35 -0
  114. package/@types/loot-core/server/schedules/find-schedules.d.ts +1 -0
  115. package/@types/loot-core/server/schedules/types/handlers.d.ts +31 -0
  116. package/@types/loot-core/server/server-config.d.ts +10 -0
  117. package/@types/loot-core/server/sheet.d.ts +11 -0
  118. package/@types/loot-core/server/sheet.test.d.ts +1 -0
  119. package/@types/loot-core/server/spreadsheet/globals.d.ts +1 -0
  120. package/@types/loot-core/server/spreadsheet/graph-data-structure.d.ts +15 -0
  121. package/@types/loot-core/server/spreadsheet/spreadsheet.d.ts +79 -0
  122. package/@types/loot-core/server/spreadsheet/util.d.ts +5 -0
  123. package/@types/loot-core/server/sync/encoder.d.ts +9 -0
  124. package/@types/loot-core/server/sync/index.d.ts +47 -0
  125. package/@types/loot-core/server/sync/make-test-message.d.ts +10 -0
  126. package/@types/loot-core/server/sync/migrate.d.ts +2 -0
  127. package/@types/loot-core/server/sync/repair.d.ts +6 -0
  128. package/@types/loot-core/server/sync/reset.d.ts +6 -0
  129. package/@types/loot-core/server/sync/utils.d.ts +3 -0
  130. package/@types/loot-core/server/tools/app.d.ts +12 -0
  131. package/@types/loot-core/server/tools/types/handlers.d.ts +7 -0
  132. package/@types/loot-core/server/undo.d.ts +14 -0
  133. package/@types/loot-core/server/update.d.ts +1 -0
  134. package/@types/loot-core/server/util/budget-name.d.ts +2 -0
  135. package/@types/loot-core/server/util/rschedule.d.ts +5 -0
  136. package/@types/loot-core/shared/async.d.ts +3 -0
  137. package/@types/loot-core/shared/environment.d.ts +4 -0
  138. package/@types/loot-core/shared/errors.d.ts +22 -0
  139. package/@types/loot-core/shared/months.d.ts +62 -0
  140. package/@types/loot-core/shared/query.d.ts +31 -0
  141. package/@types/loot-core/shared/rules.d.ts +62 -0
  142. package/@types/loot-core/shared/schedules.d.ts +43 -0
  143. package/@types/loot-core/shared/transactions.d.ts +91 -0
  144. package/@types/loot-core/shared/util.d.ts +67 -0
  145. package/@types/loot-core/types/api-handlers.d.ts +158 -0
  146. package/@types/loot-core/types/budget.d.ts +7 -0
  147. package/@types/loot-core/types/file.d.ts +38 -0
  148. package/@types/loot-core/types/handlers.d.ts +23 -0
  149. package/@types/loot-core/types/models/account.d.ts +21 -0
  150. package/@types/loot-core/types/models/category-group.d.ts +11 -0
  151. package/@types/loot-core/types/models/category.d.ts +9 -0
  152. package/@types/loot-core/types/models/gocardless.d.ts +14 -0
  153. package/@types/loot-core/types/models/index.d.ts +12 -0
  154. package/@types/loot-core/types/models/note.d.ts +4 -0
  155. package/@types/loot-core/types/models/payee.d.ts +10 -0
  156. package/@types/loot-core/types/models/reports.d.ts +123 -0
  157. package/@types/loot-core/types/models/rule.d.ts +71 -0
  158. package/@types/loot-core/types/models/schedule.d.ts +58 -0
  159. package/@types/loot-core/types/models/simplefin.d.ts +10 -0
  160. package/@types/loot-core/types/models/transaction-filter.d.ts +7 -0
  161. package/@types/loot-core/types/models/transaction.d.ts +40 -0
  162. package/@types/loot-core/types/prefs.d.ts +69 -0
  163. package/@types/loot-core/types/server-events.d.ts +21 -0
  164. package/@types/loot-core/types/server-handlers.d.ts +344 -0
  165. package/@types/loot-core/types/util.d.ts +5 -0
  166. package/@types/methods.d.ts +85 -0
  167. package/@types/methods.test.d.ts +1 -0
  168. package/@types/migrations/1632571489012_remove_cache.d.ts +1 -0
  169. package/@types/utils.d.ts +2 -0
  170. package/@types/validateNodeVersion.d.ts +1 -0
  171. package/dist/app/bundle.api.js +430 -5643
  172. package/dist/methods.js +25 -1
  173. package/dist/methods.test.js +205 -5
  174. package/dist/package.json +7 -5
  175. package/package.json +7 -5
package/dist/methods.js CHANGED
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.deletePayee = exports.updatePayee = exports.createPayee = exports.getPayees = exports.deleteCategory = exports.updateCategory = exports.createCategory = exports.getCategories = exports.deleteCategoryGroup = exports.updateCategoryGroup = exports.createCategoryGroup = exports.getCategoryGroups = exports.deleteAccount = exports.reopenAccount = exports.closeAccount = exports.updateAccount = exports.createAccount = exports.getAccounts = exports.deleteTransaction = exports.updateTransaction = exports.getTransactions = exports.importTransactions = exports.addTransactions = exports.setBudgetCarryover = exports.setBudgetAmount = exports.getBudgetMonth = exports.getBudgetMonths = exports.runQuery = exports.batchBudgetUpdates = exports.sync = exports.downloadBudget = exports.loadBudget = exports.runImport = exports.q = void 0;
26
+ exports.deleteRule = exports.updateRule = exports.createRule = exports.getPayeeRules = exports.getRules = exports.deletePayee = exports.updatePayee = exports.createPayee = exports.getPayees = exports.deleteCategory = exports.updateCategory = exports.createCategory = exports.getCategories = exports.deleteCategoryGroup = exports.updateCategoryGroup = exports.createCategoryGroup = exports.getCategoryGroups = exports.deleteAccount = exports.reopenAccount = exports.closeAccount = exports.updateAccount = exports.createAccount = exports.getAccounts = exports.deleteTransaction = exports.updateTransaction = exports.getTransactions = exports.importTransactions = exports.addTransactions = exports.setBudgetCarryover = exports.setBudgetAmount = exports.getBudgetMonth = exports.getBudgetMonths = exports.runQuery = exports.batchBudgetUpdates = exports.runBankSync = exports.sync = exports.downloadBudget = exports.loadBudget = exports.runImport = exports.q = void 0;
27
27
  const injected = __importStar(require("./injected"));
28
28
  var query_1 = require("./app/query");
29
29
  Object.defineProperty(exports, "q", { enumerable: true, get: function () { return query_1.q; } });
@@ -54,6 +54,10 @@ async function sync() {
54
54
  return send('api/sync');
55
55
  }
56
56
  exports.sync = sync;
57
+ async function runBankSync(args) {
58
+ return send('api/bank-sync', args);
59
+ }
60
+ exports.runBankSync = runBankSync;
57
61
  async function batchBudgetUpdates(func) {
58
62
  await send('api/batch-budget-start');
59
63
  try {
@@ -185,3 +189,23 @@ function deletePayee(id) {
185
189
  return send('api/payee-delete', { id });
186
190
  }
187
191
  exports.deletePayee = deletePayee;
192
+ function getRules() {
193
+ return send('api/rules-get');
194
+ }
195
+ exports.getRules = getRules;
196
+ function getPayeeRules(id) {
197
+ return send('api/payee-rules-get', { id });
198
+ }
199
+ exports.getPayeeRules = getPayeeRules;
200
+ function createRule(rule) {
201
+ return send('api/rule-create', { rule });
202
+ }
203
+ exports.createRule = createRule;
204
+ function updateRule(rule) {
205
+ return send('api/rule-update', { rule });
206
+ }
207
+ exports.updateRule = updateRule;
208
+ function deleteRule(id) {
209
+ return send('api/rule-delete', { id });
210
+ }
211
+ exports.deleteRule = deleteRule;
@@ -290,12 +290,203 @@ describe('API CRUD operations', () => {
290
290
  }),
291
291
  ]));
292
292
  });
293
+ // apis: getRules, getPayeeRules, createRule, updateRule, deleteRule
294
+ test('Rules: successfully update rules', async () => {
295
+ await api.createPayee({ name: 'test-payee' });
296
+ await api.createPayee({ name: 'test-payee2' });
297
+ // create our test rules
298
+ const rule = await api.createRule({
299
+ stage: 'pre',
300
+ conditionsOp: 'and',
301
+ conditions: [
302
+ {
303
+ field: 'payee',
304
+ op: 'is',
305
+ value: 'test-payee',
306
+ },
307
+ ],
308
+ actions: [
309
+ {
310
+ op: 'set',
311
+ field: 'category',
312
+ value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
313
+ },
314
+ ],
315
+ });
316
+ const rule2 = await api.createRule({
317
+ stage: 'pre',
318
+ conditionsOp: 'and',
319
+ conditions: [
320
+ {
321
+ field: 'payee',
322
+ op: 'is',
323
+ value: 'test-payee2',
324
+ },
325
+ ],
326
+ actions: [
327
+ {
328
+ op: 'set',
329
+ field: 'category',
330
+ value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
331
+ },
332
+ ],
333
+ });
334
+ // get existing rules
335
+ const rules = await api.getRules();
336
+ expect(rules).toEqual(expect.arrayContaining([
337
+ expect.objectContaining({
338
+ actions: expect.arrayContaining([
339
+ expect.objectContaining({
340
+ field: 'category',
341
+ op: 'set',
342
+ type: 'id',
343
+ value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
344
+ }),
345
+ ]),
346
+ conditions: expect.arrayContaining([
347
+ expect.objectContaining({
348
+ field: 'payee',
349
+ op: 'is',
350
+ type: 'id',
351
+ value: 'test-payee2',
352
+ }),
353
+ ]),
354
+ conditionsOp: 'and',
355
+ id: rule2.id,
356
+ stage: 'pre',
357
+ }),
358
+ expect.objectContaining({
359
+ actions: expect.arrayContaining([
360
+ expect.objectContaining({
361
+ field: 'category',
362
+ op: 'set',
363
+ type: 'id',
364
+ value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
365
+ }),
366
+ ]),
367
+ conditions: expect.arrayContaining([
368
+ expect.objectContaining({
369
+ field: 'payee',
370
+ op: 'is',
371
+ type: 'id',
372
+ value: 'test-payee',
373
+ }),
374
+ ]),
375
+ conditionsOp: 'and',
376
+ id: rule.id,
377
+ stage: 'pre',
378
+ }),
379
+ ]));
380
+ // get by payee
381
+ expect(await api.getPayeeRules('test-payee')).toEqual(expect.arrayContaining([
382
+ expect.objectContaining({
383
+ actions: expect.arrayContaining([
384
+ expect.objectContaining({
385
+ field: 'category',
386
+ op: 'set',
387
+ type: 'id',
388
+ value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
389
+ }),
390
+ ]),
391
+ conditions: expect.arrayContaining([
392
+ expect.objectContaining({
393
+ field: 'payee',
394
+ op: 'is',
395
+ type: 'id',
396
+ value: 'test-payee',
397
+ }),
398
+ ]),
399
+ conditionsOp: 'and',
400
+ id: rule.id,
401
+ stage: 'pre',
402
+ }),
403
+ ]));
404
+ expect(await api.getPayeeRules('test-payee2')).toEqual(expect.arrayContaining([
405
+ expect.objectContaining({
406
+ actions: expect.arrayContaining([
407
+ expect.objectContaining({
408
+ field: 'category',
409
+ op: 'set',
410
+ type: 'id',
411
+ value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
412
+ }),
413
+ ]),
414
+ conditions: expect.arrayContaining([
415
+ expect.objectContaining({
416
+ field: 'payee',
417
+ op: 'is',
418
+ type: 'id',
419
+ value: 'test-payee2',
420
+ }),
421
+ ]),
422
+ conditionsOp: 'and',
423
+ id: rule2.id,
424
+ stage: 'pre',
425
+ }),
426
+ ]));
427
+ // update one rule
428
+ const updatedRule = {
429
+ ...rule,
430
+ stage: 'post',
431
+ conditionsOp: 'or',
432
+ };
433
+ expect(await api.updateRule(updatedRule)).toEqual(updatedRule);
434
+ expect(await api.getRules()).toEqual(expect.arrayContaining([
435
+ expect.objectContaining({
436
+ actions: expect.arrayContaining([
437
+ expect.objectContaining({
438
+ field: 'category',
439
+ op: 'set',
440
+ type: 'id',
441
+ value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
442
+ }),
443
+ ]),
444
+ conditions: expect.arrayContaining([
445
+ expect.objectContaining({
446
+ field: 'payee',
447
+ op: 'is',
448
+ type: 'id',
449
+ value: 'test-payee',
450
+ }),
451
+ ]),
452
+ conditionsOp: 'or',
453
+ id: rule.id,
454
+ stage: 'post',
455
+ }),
456
+ expect.objectContaining({
457
+ actions: expect.arrayContaining([
458
+ expect.objectContaining({
459
+ field: 'category',
460
+ op: 'set',
461
+ type: 'id',
462
+ value: 'fc3825fd-b982-4b72-b768-5b30844cf832',
463
+ }),
464
+ ]),
465
+ conditions: expect.arrayContaining([
466
+ expect.objectContaining({
467
+ field: 'payee',
468
+ op: 'is',
469
+ type: 'id',
470
+ value: 'test-payee2',
471
+ }),
472
+ ]),
473
+ conditionsOp: 'and',
474
+ id: rule2.id,
475
+ stage: 'pre',
476
+ }),
477
+ ]));
478
+ // delete rules
479
+ await api.deleteRule(rules[1]);
480
+ expect(await api.getRules()).toHaveLength(1);
481
+ await api.deleteRule(rules[0]);
482
+ expect(await api.getRules()).toHaveLength(0);
483
+ });
293
484
  // apis: addTransactions, getTransactions, importTransactions, updateTransaction, deleteTransaction
294
485
  test('Transactions: successfully update transactions', async () => {
295
486
  const accountId = await api.createAccount({ name: 'test-account' }, 0);
296
487
  let newTransaction = [
297
- { date: '2023-11-03', imported_id: '11', amount: 100 },
298
- { date: '2023-11-03', imported_id: '11', amount: 100 },
488
+ { date: '2023-11-03', imported_id: '11', amount: 100, notes: 'notes' },
489
+ { date: '2023-11-03', imported_id: '12', amount: 100, notes: '' },
299
490
  ];
300
491
  const addResult = await api.addTransactions(accountId, newTransaction, {
301
492
  learnCategories: true,
@@ -307,8 +498,9 @@ describe('API CRUD operations', () => {
307
498
  expect(transactions).toEqual(expect.arrayContaining(newTransaction.map(trans => expect.objectContaining(trans))));
308
499
  expect(transactions).toHaveLength(2);
309
500
  newTransaction = [
310
- { date: '2023-12-03', imported_id: '11', amount: 100 },
311
- { date: '2023-12-03', imported_id: '22', amount: 200 },
501
+ { date: '2023-12-03', imported_id: '11', amount: 100, notes: 'notes' },
502
+ { date: '2023-12-03', imported_id: '12', amount: 100, notes: 'notes' },
503
+ { date: '2023-12-03', imported_id: '22', amount: 200, notes: '' },
312
504
  ];
313
505
  const reconciled = await api.importTransactions(accountId, newTransaction);
314
506
  // Expect it to reconcile and to have updated one of the previous transactions
@@ -316,7 +508,15 @@ describe('API CRUD operations', () => {
316
508
  expect(reconciled.updated).toHaveLength(1);
317
509
  // confirm imported transactions exist
318
510
  transactions = await api.getTransactions(accountId, '2023-12-01', '2023-12-31');
319
- expect(transactions).toEqual(expect.arrayContaining(newTransaction.map(trans => expect.objectContaining(trans))));
511
+ expect(transactions).toEqual(expect.arrayContaining([
512
+ expect.objectContaining({ imported_id: '22', amount: 200 }),
513
+ ]));
514
+ expect(transactions).toHaveLength(1);
515
+ // confirm imported transactions update perfomed
516
+ transactions = await api.getTransactions(accountId, '2023-11-01', '2023-11-30');
517
+ expect(transactions).toEqual(expect.arrayContaining([
518
+ expect.objectContaining({ notes: 'notes', amount: 100 }),
519
+ ]));
320
520
  expect(transactions).toHaveLength(2);
321
521
  const idToUpdate = reconciled.added[0];
322
522
  const idToDelete = reconciled.updated[0];
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actual-app/api",
3
- "version": "6.7.1",
3
+ "version": "6.8.0",
4
4
  "license": "MIT",
5
5
  "description": "An API for Actual",
6
6
  "engines": {
@@ -9,7 +9,8 @@
9
9
  "main": "dist/index.js",
10
10
  "types": "@types/index.d.ts",
11
11
  "files": [
12
- "dist"
12
+ "dist",
13
+ "@types"
13
14
  ],
14
15
  "scripts": {
15
16
  "build:app": "yarn workspace loot-core build:api",
@@ -21,14 +22,15 @@
21
22
  "clean": "rm -rf dist @types"
22
23
  },
23
24
  "dependencies": {
24
- "better-sqlite3": "^9.3.0",
25
+ "@actual-app/crdt": "workspace:^",
26
+ "better-sqlite3": "^9.6.0",
25
27
  "compare-versions": "^6.1.0",
26
28
  "node-fetch": "^3.3.2",
27
29
  "uuid": "^9.0.1"
28
30
  },
29
31
  "devDependencies": {
30
- "@swc/core": "^1.3.105",
31
- "@swc/jest": "^0.2.31",
32
+ "@swc/core": "^1.5.3",
33
+ "@swc/jest": "^0.2.36",
32
34
  "@types/jest": "^27.5.2",
33
35
  "@types/uuid": "^9.0.2",
34
36
  "jest": "^27.5.1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actual-app/api",
3
- "version": "6.7.1",
3
+ "version": "6.8.0",
4
4
  "license": "MIT",
5
5
  "description": "An API for Actual",
6
6
  "engines": {
@@ -9,7 +9,8 @@
9
9
  "main": "dist/index.js",
10
10
  "types": "@types/index.d.ts",
11
11
  "files": [
12
- "dist"
12
+ "dist",
13
+ "@types"
13
14
  ],
14
15
  "scripts": {
15
16
  "build:app": "yarn workspace loot-core build:api",
@@ -21,14 +22,15 @@
21
22
  "clean": "rm -rf dist @types"
22
23
  },
23
24
  "dependencies": {
24
- "better-sqlite3": "^9.3.0",
25
+ "@actual-app/crdt": "workspace:^",
26
+ "better-sqlite3": "^9.6.0",
25
27
  "compare-versions": "^6.1.0",
26
28
  "node-fetch": "^3.3.2",
27
29
  "uuid": "^9.0.1"
28
30
  },
29
31
  "devDependencies": {
30
- "@swc/core": "^1.3.105",
31
- "@swc/jest": "^0.2.31",
32
+ "@swc/core": "^1.5.3",
33
+ "@swc/jest": "^0.2.36",
32
34
  "@types/jest": "^27.5.2",
33
35
  "@types/uuid": "^9.0.2",
34
36
  "jest": "^27.5.1",