@actual-app/api 6.7.0 → 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.
- package/@types/app/bundle.api.d.ts +6 -0
- package/@types/app/query.d.ts +19 -0
- package/@types/index.d.ts +7 -0
- package/@types/injected.d.ts +2 -0
- package/@types/jest.config.d.ts +9 -0
- package/@types/loot-core/client/actions/types.d.ts +6 -0
- package/@types/loot-core/client/constants.d.ts +29 -0
- package/@types/loot-core/client/platform.d.ts +4 -0
- package/@types/loot-core/client/state-types/account.d.ts +27 -0
- package/@types/loot-core/client/state-types/app.d.ts +37 -0
- package/@types/loot-core/client/state-types/budgets.d.ts +36 -0
- package/@types/loot-core/client/state-types/index.d.ts +41 -0
- package/@types/loot-core/client/state-types/modals.d.ts +292 -0
- package/@types/loot-core/client/state-types/notifications.d.ts +38 -0
- package/@types/loot-core/client/state-types/prefs.d.ts +28 -0
- package/@types/loot-core/client/state-types/queries.d.ts +69 -0
- package/@types/loot-core/client/state-types/user.d.ts +13 -0
- package/@types/loot-core/mocks/budget.d.ts +2 -0
- package/@types/loot-core/mocks/index.d.ts +26 -0
- package/@types/loot-core/mocks/random.d.ts +1 -0
- package/@types/loot-core/mocks/util.d.ts +7 -0
- package/@types/loot-core/platform/client/fetch/index.d.ts +48 -0
- package/@types/loot-core/platform/client/undo/index.d.ts +29 -0
- package/@types/loot-core/platform/exceptions/index.d.ts +5 -0
- package/@types/loot-core/platform/server/asyncStorage/index.d.ts +20 -0
- package/@types/loot-core/platform/server/connection/index.d.ts +23 -0
- package/@types/loot-core/platform/server/fetch/index.d.ts +4 -0
- package/@types/loot-core/platform/server/fs/index.d.ts +71 -0
- package/@types/loot-core/platform/server/fs/path-join.d.ts +2 -0
- package/@types/loot-core/platform/server/indexeddb/index.d.ts +24 -0
- package/@types/loot-core/platform/server/log/index.d.ts +9 -0
- package/@types/loot-core/platform/server/sqlite/index.d.ts +35 -0
- package/@types/loot-core/server/accounts/export-to-csv.d.ts +2 -0
- package/@types/loot-core/server/accounts/link.d.ts +1 -0
- package/@types/loot-core/server/accounts/ofx2json.d.ts +14 -0
- package/@types/loot-core/server/accounts/parse-file.d.ts +15 -0
- package/@types/loot-core/server/accounts/payees.d.ts +5 -0
- package/@types/loot-core/server/accounts/qif2json.d.ts +26 -0
- package/@types/loot-core/server/accounts/rules.d.ts +90 -0
- package/@types/loot-core/server/accounts/sync.d.ts +13 -0
- package/@types/loot-core/server/accounts/title/index.d.ts +3 -0
- package/@types/loot-core/server/accounts/title/lower-case.d.ts +1 -0
- package/@types/loot-core/server/accounts/title/specials.d.ts +1 -0
- package/@types/loot-core/server/accounts/transaction-rules.d.ts +47 -0
- package/@types/loot-core/server/accounts/transactions.d.ts +33 -0
- package/@types/loot-core/server/accounts/transfer.d.ts +37 -0
- package/@types/loot-core/server/accounts/xmlcamt2json.d.ts +10 -0
- package/@types/loot-core/server/api-models.d.ts +66 -0
- package/@types/loot-core/server/api.d.ts +3 -0
- package/@types/loot-core/server/app.d.ts +14 -0
- package/@types/loot-core/server/aql/compiler.d.ts +56 -0
- package/@types/loot-core/server/aql/exec.d.ts +9 -0
- package/@types/loot-core/server/aql/index.d.ts +5 -0
- package/@types/loot-core/server/aql/schema/executors.d.ts +6 -0
- package/@types/loot-core/server/aql/schema/index.d.ts +340 -0
- package/@types/loot-core/server/aql/schema/run-query.d.ts +6 -0
- package/@types/loot-core/server/aql/schema-helpers.d.ts +8 -0
- package/@types/loot-core/server/aql/views.d.ts +1 -0
- package/@types/loot-core/server/backups.d.ts +16 -0
- package/@types/loot-core/server/backups.test.d.ts +1 -0
- package/@types/loot-core/server/budget/actions.d.ts +63 -0
- package/@types/loot-core/server/budget/app.d.ts +12 -0
- package/@types/loot-core/server/budget/base.d.ts +17 -0
- package/@types/loot-core/server/budget/cleanup-template.d.ts +4 -0
- package/@types/loot-core/server/budget/goals/goalsAverage.d.ts +4 -0
- package/@types/loot-core/server/budget/goals/goalsBy.d.ts +5 -0
- package/@types/loot-core/server/budget/goals/goalsPercentage.d.ts +4 -0
- package/@types/loot-core/server/budget/goals/goalsRemainder.d.ts +8 -0
- package/@types/loot-core/server/budget/goals/goalsSchedule.d.ts +6 -0
- package/@types/loot-core/server/budget/goals/goalsSimple.d.ts +7 -0
- package/@types/loot-core/server/budget/goals/goalsSpend.d.ts +4 -0
- package/@types/loot-core/server/budget/goals/goalsWeek.d.ts +7 -0
- package/@types/loot-core/server/budget/goaltemplates.d.ts +12 -0
- package/@types/loot-core/server/budget/report.d.ts +2 -0
- package/@types/loot-core/server/budget/rollover.d.ts +4 -0
- package/@types/loot-core/server/budget/types/handlers.d.ts +77 -0
- package/@types/loot-core/server/budget/util.d.ts +4 -0
- package/@types/loot-core/server/cloud-storage.d.ts +33 -0
- package/@types/loot-core/server/db/index.d.ts +60 -0
- package/@types/loot-core/server/db/mappings.d.ts +3 -0
- package/@types/loot-core/server/db/sort.d.ts +11 -0
- package/@types/loot-core/server/db/util.d.ts +2 -0
- package/@types/loot-core/server/encryption-internals.d.ts +24 -0
- package/@types/loot-core/server/encryption-internals.web.d.ts +24 -0
- package/@types/loot-core/server/encryption.d.ts +41 -0
- package/@types/loot-core/server/encryption.test.d.ts +1 -0
- package/@types/loot-core/server/errors.d.ts +73 -0
- package/@types/loot-core/server/filters/app.d.ts +12 -0
- package/@types/loot-core/server/filters/types/handlers.d.ts +7 -0
- package/@types/loot-core/server/importers/actual.d.ts +4 -0
- package/@types/loot-core/server/importers/index.d.ts +6 -0
- package/@types/loot-core/server/importers/ynab4-types.d.ts +167 -0
- package/@types/loot-core/server/importers/ynab4.d.ts +5 -0
- package/@types/loot-core/server/importers/ynab5-types.d.ts +79 -0
- package/@types/loot-core/server/importers/ynab5.d.ts +5 -0
- package/@types/loot-core/server/main-app.d.ts +12 -0
- package/@types/loot-core/server/main.d.ts +28 -0
- package/@types/loot-core/server/main.test.d.ts +1 -0
- package/@types/loot-core/server/migrate/migrations.d.ts +9 -0
- package/@types/loot-core/server/models.d.ts +38 -0
- package/@types/loot-core/server/mutators.d.ts +17 -0
- package/@types/loot-core/server/notes/app.d.ts +12 -0
- package/@types/loot-core/server/notes/types/handlers.d.ts +3 -0
- package/@types/loot-core/server/platform.d.ts +3 -0
- package/@types/loot-core/server/platform.web.d.ts +3 -0
- package/@types/loot-core/server/polyfills.d.ts +0 -0
- package/@types/loot-core/server/post.d.ts +3 -0
- package/@types/loot-core/server/prefs.d.ts +10 -0
- package/@types/loot-core/server/reports/app.d.ts +12 -0
- package/@types/loot-core/server/reports/types/handlers.d.ts +6 -0
- package/@types/loot-core/server/rules/app.d.ts +12 -0
- package/@types/loot-core/server/rules/types/handlers.d.ts +42 -0
- package/@types/loot-core/server/schedules/app.d.ts +35 -0
- package/@types/loot-core/server/schedules/find-schedules.d.ts +1 -0
- package/@types/loot-core/server/schedules/types/handlers.d.ts +31 -0
- package/@types/loot-core/server/server-config.d.ts +10 -0
- package/@types/loot-core/server/sheet.d.ts +11 -0
- package/@types/loot-core/server/sheet.test.d.ts +1 -0
- package/@types/loot-core/server/spreadsheet/globals.d.ts +1 -0
- package/@types/loot-core/server/spreadsheet/graph-data-structure.d.ts +15 -0
- package/@types/loot-core/server/spreadsheet/spreadsheet.d.ts +79 -0
- package/@types/loot-core/server/spreadsheet/util.d.ts +5 -0
- package/@types/loot-core/server/sync/encoder.d.ts +9 -0
- package/@types/loot-core/server/sync/index.d.ts +47 -0
- package/@types/loot-core/server/sync/make-test-message.d.ts +10 -0
- package/@types/loot-core/server/sync/migrate.d.ts +2 -0
- package/@types/loot-core/server/sync/repair.d.ts +6 -0
- package/@types/loot-core/server/sync/reset.d.ts +6 -0
- package/@types/loot-core/server/sync/utils.d.ts +3 -0
- package/@types/loot-core/server/tools/app.d.ts +12 -0
- package/@types/loot-core/server/tools/types/handlers.d.ts +7 -0
- package/@types/loot-core/server/undo.d.ts +14 -0
- package/@types/loot-core/server/update.d.ts +1 -0
- package/@types/loot-core/server/util/budget-name.d.ts +2 -0
- package/@types/loot-core/server/util/rschedule.d.ts +5 -0
- package/@types/loot-core/shared/async.d.ts +3 -0
- package/@types/loot-core/shared/environment.d.ts +4 -0
- package/@types/loot-core/shared/errors.d.ts +22 -0
- package/@types/loot-core/shared/months.d.ts +62 -0
- package/@types/loot-core/shared/query.d.ts +31 -0
- package/@types/loot-core/shared/rules.d.ts +62 -0
- package/@types/loot-core/shared/schedules.d.ts +43 -0
- package/@types/loot-core/shared/transactions.d.ts +91 -0
- package/@types/loot-core/shared/util.d.ts +67 -0
- package/@types/loot-core/types/api-handlers.d.ts +158 -0
- package/@types/loot-core/types/budget.d.ts +7 -0
- package/@types/loot-core/types/file.d.ts +38 -0
- package/@types/loot-core/types/handlers.d.ts +23 -0
- package/@types/loot-core/types/models/account.d.ts +21 -0
- package/@types/loot-core/types/models/category-group.d.ts +11 -0
- package/@types/loot-core/types/models/category.d.ts +9 -0
- package/@types/loot-core/types/models/gocardless.d.ts +14 -0
- package/@types/loot-core/types/models/index.d.ts +12 -0
- package/@types/loot-core/types/models/note.d.ts +4 -0
- package/@types/loot-core/types/models/payee.d.ts +10 -0
- package/@types/loot-core/types/models/reports.d.ts +123 -0
- package/@types/loot-core/types/models/rule.d.ts +71 -0
- package/@types/loot-core/types/models/schedule.d.ts +58 -0
- package/@types/loot-core/types/models/simplefin.d.ts +10 -0
- package/@types/loot-core/types/models/transaction-filter.d.ts +7 -0
- package/@types/loot-core/types/models/transaction.d.ts +40 -0
- package/@types/loot-core/types/prefs.d.ts +69 -0
- package/@types/loot-core/types/server-events.d.ts +21 -0
- package/@types/loot-core/types/server-handlers.d.ts +344 -0
- package/@types/loot-core/types/util.d.ts +5 -0
- package/@types/methods.d.ts +85 -0
- package/@types/methods.test.d.ts +1 -0
- package/@types/migrations/1632571489012_remove_cache.d.ts +1 -0
- package/@types/utils.d.ts +2 -0
- package/@types/validateNodeVersion.d.ts +1 -0
- package/dist/app/bundle.api.js +1649 -6538
- package/dist/methods.js +25 -1
- package/dist/methods.test.js +205 -5
- package/dist/migrations/1712784523000_unhide_input_group.sql +8 -0
- package/dist/package.json +7 -5
- 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;
|
package/dist/methods.test.js
CHANGED
|
@@ -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: '
|
|
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: '
|
|
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(
|
|
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.
|
|
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
|
-
"
|
|
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
|
|
31
|
-
"@swc/jest": "^0.2.
|
|
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.
|
|
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
|
-
"
|
|
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
|
|
31
|
-
"@swc/jest": "^0.2.
|
|
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",
|