@actual-app/api 24.12.0 → 25.2.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/loot-core/client/constants.d.ts +0 -11
- package/@types/loot-core/client/state-types/index.d.ts +0 -14
- package/@types/loot-core/client/state-types/modals.d.ts +57 -2
- package/@types/loot-core/mocks/index.d.ts +9 -20
- package/@types/loot-core/platform/client/fetch/index.d.ts +10 -1
- package/@types/loot-core/platform/client/undo/index.d.ts +8 -4
- package/@types/loot-core/platform/server/connection/index.d.ts +1 -1
- package/@types/loot-core/server/accounts/sync.d.ts +1 -1
- package/@types/loot-core/server/accounts/transaction-rules.d.ts +4 -6
- package/@types/loot-core/server/accounts/transactions.d.ts +0 -3
- package/@types/loot-core/server/accounts/transfer.d.ts +0 -11
- package/@types/loot-core/server/admin/app.d.ts +17 -0
- package/@types/loot-core/server/admin/types/handlers.d.ts +43 -0
- package/@types/loot-core/server/app.d.ts +14 -4
- package/@types/loot-core/server/aql/compiler.d.ts +4 -6
- package/@types/loot-core/server/aql/schema/index.d.ts +3 -0
- package/@types/loot-core/server/budget/actions.d.ts +6 -0
- package/@types/loot-core/server/budget/app.d.ts +10 -5
- package/@types/loot-core/server/budget/categoryTemplate.d.ts +3 -2
- package/@types/loot-core/server/budget/goalsSchedule.d.ts +7 -5
- package/@types/loot-core/server/budget/types/handlers.d.ts +4 -0
- package/@types/loot-core/server/cloud-storage.d.ts +9 -0
- package/@types/loot-core/server/dashboard/app.d.ts +9 -4
- package/@types/loot-core/server/db/index.d.ts +1 -0
- package/@types/loot-core/server/filters/app.d.ts +9 -4
- package/@types/loot-core/server/importers/ynab4-types.d.ts +0 -2
- package/@types/loot-core/server/importers/ynab5-types.d.ts +0 -2
- package/@types/loot-core/server/main-app.d.ts +10 -5
- package/@types/loot-core/server/main.d.ts +2 -2
- package/@types/loot-core/server/notes/app.d.ts +9 -4
- package/@types/loot-core/server/post.d.ts +2 -0
- package/@types/loot-core/server/preferences/app.d.ts +9 -4
- package/@types/loot-core/server/reports/app.d.ts +11 -4
- package/@types/loot-core/server/rules/app.d.ts +9 -4
- package/@types/loot-core/server/rules/types/handlers.d.ts +4 -4
- package/@types/loot-core/server/schedules/app.d.ts +10 -7
- package/@types/loot-core/server/schedules/types/handlers.d.ts +5 -5
- package/@types/loot-core/server/tools/app.d.ts +9 -4
- package/@types/loot-core/server/tools/types/handlers.d.ts +4 -0
- package/@types/loot-core/server/util/budget-name.d.ts +6 -2
- package/@types/loot-core/shared/errors.d.ts +3 -0
- package/@types/loot-core/shared/query.d.ts +13 -12
- package/@types/loot-core/shared/schedules.d.ts +5 -31
- package/@types/loot-core/shared/transactions.d.ts +101 -17
- package/@types/loot-core/shared/util.d.ts +30 -10
- package/@types/loot-core/types/api-handlers.d.ts +3 -0
- package/@types/loot-core/types/budget.d.ts +1 -0
- package/@types/loot-core/types/file.d.ts +7 -0
- package/@types/loot-core/types/handlers.d.ts +2 -0
- package/@types/loot-core/types/models/dashboard.d.ts +13 -2
- package/@types/loot-core/types/models/index.d.ts +1 -0
- package/@types/loot-core/types/models/openid.d.ts +7 -0
- package/@types/loot-core/types/models/payee.d.ts +1 -0
- package/@types/loot-core/types/models/reports.d.ts +4 -0
- package/@types/loot-core/types/models/rule.d.ts +11 -5
- package/@types/loot-core/types/models/schedule.d.ts +5 -18
- package/@types/loot-core/types/models/simplefin.d.ts +2 -0
- package/@types/loot-core/types/models/transaction.d.ts +6 -0
- package/@types/loot-core/types/models/user.d.ts +26 -0
- package/@types/loot-core/types/models/userAccess.d.ts +9 -0
- package/@types/loot-core/types/prefs.d.ts +7 -3
- package/@types/loot-core/types/server-events.d.ts +80 -17
- package/@types/loot-core/types/server-handlers.d.ts +106 -17
- package/@types/loot-core/types/util.d.ts +5 -0
- package/@types/methods.d.ts +4 -4
- package/dist/app/bundle.api.js +1804 -916
- package/dist/methods.js +8 -2
- package/dist/migrations/1736640000000__custom_report_sorting.sql +7 -0
- package/dist/migrations/1737158400000_add_learn_categories_to_payees.sql +5 -0
- package/dist/migrations/1738491452000__sorting_rename.sql +13 -0
- package/dist/package.json +2 -2
- package/package.json +2 -2
- package/@types/loot-core/client/actions/types.d.ts +0 -6
- package/@types/loot-core/client/state-types/account.d.ts +0 -27
- package/@types/loot-core/client/state-types/app.d.ts +0 -37
- package/@types/loot-core/client/state-types/queries.d.ts +0 -76
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { Handlers } from '../types/handlers';
|
|
2
2
|
export declare const app: {
|
|
3
|
-
events:
|
|
3
|
+
events: import("mitt").Emitter<{
|
|
4
|
+
sync: import("../types/server-events").ServerEvents["sync-event"];
|
|
5
|
+
'load-budget': {
|
|
6
|
+
id: string;
|
|
7
|
+
};
|
|
8
|
+
}>;
|
|
4
9
|
handlers: Handlers;
|
|
5
|
-
services:
|
|
6
|
-
unlistenServices:
|
|
7
|
-
method<Name extends "
|
|
8
|
-
service(func:
|
|
10
|
+
services: (() => () => void)[];
|
|
11
|
+
unlistenServices: (() => void)[];
|
|
12
|
+
method<Name extends "transaction-update" | "undo" | "redo" | "transactions-batch-update" | "transaction-add" | "transaction-delete" | "transactions-parse-file" | "transactions-export" | "transactions-export-query" | "get-categories" | "get-earliest-transaction" | "get-budget-bounds" | "envelope-budget-month" | "tracking-budget-month" | "category-create" | "category-update" | "category-move" | "category-delete" | "category-group-create" | "category-group-update" | "category-group-move" | "category-group-delete" | "must-category-transfer" | "payee-create" | "common-payees-get" | "payees-get" | "payees-get-rule-counts" | "payees-merge" | "payees-batch-change" | "payees-check-orphaned" | "payees-get-orphaned" | "payees-get-rules" | "make-filters-from-conditions" | "getCell" | "getCells" | "getCellNamesInSheet" | "debugCell" | "create-query" | "query" | "account-update" | "accounts-get" | "account-properties" | "gocardless-accounts-link" | "simplefin-accounts-link" | "account-create" | "account-close" | "account-reopen" | "account-move" | "secret-set" | "secret-check" | "gocardless-poll-web-token" | "gocardless-status" | "simplefin-status" | "simplefin-accounts" | "simplefin-batch-sync" | "gocardless-get-banks" | "gocardless-poll-web-token-stop" | "gocardless-create-web-token" | "accounts-bank-sync" | "transactions-import" | "account-unlink" | "save-global-prefs" | "load-global-prefs" | "save-prefs" | "load-prefs" | "sync-reset" | "sync-repair" | "key-make" | "key-test" | "get-did-bootstrap" | "subscribe-needs-bootstrap" | "subscribe-get-login-methods" | "subscribe-bootstrap" | "subscribe-get-user" | "subscribe-change-password" | "subscribe-sign-in" | "subscribe-sign-out" | "subscribe-set-token" | "get-server-version" | "get-server-url" | "set-server-url" | "sync" | "validate-budget-name" | "unique-budget-name" | "get-budgets" | "get-remote-files" | "get-user-file-info" | "reset-budget-cache" | "upload-budget" | "download-budget" | "sync-budget" | "load-budget" | "create-demo-budget" | "close-budget" | "delete-budget" | "duplicate-budget" | "create-budget" | "import-budget" | "export-budget" | "upload-file-web" | "backups-get" | "backup-load" | "backup-make" | "get-last-opened-backup" | "app-focused" | "enable-openid" | "enable-password" | "get-openid-config" | "api/batch-budget-start" | "api/batch-budget-end" | "api/load-budget" | "api/download-budget" | "api/get-budgets" | "api/start-import" | "api/finish-import" | "api/abort-import" | "api/query" | "api/budget-months" | "api/budget-month" | "api/budget-set-amount" | "api/budget-set-carryover" | "api/budget-hold-for-next-month" | "api/budget-reset-hold" | "api/transactions-export" | "api/transactions-import" | "api/transactions-add" | "api/transactions-get" | "api/transaction-update" | "api/transaction-delete" | "api/sync" | "api/bank-sync" | "api/accounts-get" | "api/account-create" | "api/account-update" | "api/account-close" | "api/account-reopen" | "api/account-delete" | "api/account-balance" | "api/categories-get" | "api/category-groups-get" | "api/category-group-create" | "api/category-group-update" | "api/category-group-delete" | "api/category-create" | "api/category-update" | "api/category-delete" | "api/payees-get" | "api/common-payees-get" | "api/payee-create" | "api/payee-update" | "api/payee-delete" | "api/payees-merge" | "api/rules-get" | "api/payee-rules-get" | "api/rule-create" | "api/rule-update" | "api/rule-delete" | "budget/budget-amount" | "budget/copy-previous-month" | "budget/set-zero" | "budget/set-3month-avg" | "budget/set-6month-avg" | "budget/set-12month-avg" | "budget/check-templates" | "budget/apply-goal-template" | "budget/overwrite-goal-template" | "budget/cleanup-goal-template" | "budget/hold-for-next-month" | "budget/reset-hold" | "budget/cover-overspending" | "budget/transfer-available" | "budget/cover-overbudgeted" | "budget/transfer-category" | "budget/set-carryover" | "budget/apply-single-template" | "budget/set-n-month-avg" | "budget/copy-single-month" | "budget/apply-multiple-templates" | "dashboard-update" | "dashboard-update-widget" | "dashboard-reset" | "dashboard-add-widget" | "dashboard-remove-widget" | "dashboard-import" | "filter-create" | "filter-update" | "filter-delete" | "notes-save" | "preferences/save" | "preferences/get" | "report/create" | "report/update" | "report/delete" | "rule-validate" | "rule-add" | "rule-update" | "rule-delete" | "rule-delete-all" | "rule-apply-actions" | "rule-add-payee-rename" | "rules-get" | "rule-get" | "rules-run" | "schedule/create" | "schedule/update" | "schedule/delete" | "schedule/skip-next-date" | "schedule/post-transaction" | "schedule/force-run-service" | "schedule/discover" | "schedule/get-upcoming-dates" | "users-get" | "user-delete-all" | "user-add" | "user-update" | "access-add" | "access-delete-all" | "access-get-available-users" | "transfer-ownership" | "owner-created" | "tools/fix-split-transactions">(name: Name, func: Handlers[Name]): void;
|
|
13
|
+
service(func: () => () => void): void;
|
|
9
14
|
combine(...apps: any[]): void;
|
|
10
15
|
startServices(): void;
|
|
11
16
|
stopServices(): void;
|
|
@@ -14,7 +14,7 @@ export declare function init(config: InitConfig): Promise<{
|
|
|
14
14
|
getDataDir: typeof fs.getDataDir;
|
|
15
15
|
sendMessage: (msg: any, args: any) => void;
|
|
16
16
|
send: <K extends keyof Handlers, T extends Handlers[K]>(name: K, args?: Parameters<T>[0]) => Promise<Awaited<ReturnType<T>>>;
|
|
17
|
-
on: (name: any, func: any) =>
|
|
17
|
+
on: (name: any, func: any) => void;
|
|
18
18
|
q: typeof q;
|
|
19
19
|
db: typeof db;
|
|
20
20
|
}>;
|
|
@@ -22,7 +22,7 @@ export declare const lib: {
|
|
|
22
22
|
getDataDir: typeof fs.getDataDir;
|
|
23
23
|
sendMessage: (msg: any, args: any) => void;
|
|
24
24
|
send: <K extends keyof Handlers, T extends Handlers[K]>(name: K, args?: Parameters<T>[0]) => Promise<Awaited<ReturnType<T>>>;
|
|
25
|
-
on: (name: any, func: any) =>
|
|
25
|
+
on: (name: any, func: any) => void;
|
|
26
26
|
q: typeof q;
|
|
27
27
|
db: typeof db;
|
|
28
28
|
};
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { NotesHandlers } from './types/handlers';
|
|
2
2
|
export declare const app: {
|
|
3
|
-
events:
|
|
3
|
+
events: import("mitt").Emitter<{
|
|
4
|
+
sync: import("../../types/server-events").ServerEvents["sync-event"];
|
|
5
|
+
'load-budget': {
|
|
6
|
+
id: string;
|
|
7
|
+
};
|
|
8
|
+
}>;
|
|
4
9
|
handlers: NotesHandlers;
|
|
5
|
-
services:
|
|
6
|
-
unlistenServices:
|
|
10
|
+
services: (() => () => void)[];
|
|
11
|
+
unlistenServices: (() => void)[];
|
|
7
12
|
method<Name extends "notes-save">(name: Name, func: NotesHandlers[Name]): void;
|
|
8
|
-
service(func:
|
|
13
|
+
service(func: () => () => void): void;
|
|
9
14
|
combine(...apps: any[]): void;
|
|
10
15
|
startServices(): void;
|
|
11
16
|
stopServices(): void;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export declare function post(url: any, data: any, headers?: {}, timeout?: any): Promise<any>;
|
|
2
|
+
export declare function del(url: any, data: any, headers?: {}, timeout?: any): Promise<any>;
|
|
3
|
+
export declare function patch(url: any, data: any, headers?: {}, timeout?: any): Promise<any>;
|
|
2
4
|
export declare function postBinary(url: any, data: any, headers: any): Promise<any>;
|
|
3
5
|
export declare function get(url: any, opts?: any): Promise<string>;
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { PreferencesHandlers } from './types/handlers';
|
|
2
2
|
export declare const app: {
|
|
3
|
-
events:
|
|
3
|
+
events: import("mitt").Emitter<{
|
|
4
|
+
sync: import("../../types/server-events").ServerEvents["sync-event"];
|
|
5
|
+
'load-budget': {
|
|
6
|
+
id: string;
|
|
7
|
+
};
|
|
8
|
+
}>;
|
|
4
9
|
handlers: PreferencesHandlers;
|
|
5
|
-
services:
|
|
6
|
-
unlistenServices:
|
|
10
|
+
services: (() => () => void)[];
|
|
11
|
+
unlistenServices: (() => void)[];
|
|
7
12
|
method<Name extends "preferences/save" | "preferences/get">(name: Name, func: PreferencesHandlers[Name]): void;
|
|
8
|
-
service(func:
|
|
13
|
+
service(func: () => () => void): void;
|
|
9
14
|
combine(...apps: any[]): void;
|
|
10
15
|
startServices(): void;
|
|
11
16
|
stopServices(): void;
|
|
@@ -13,6 +13,7 @@ export declare const reportModel: {
|
|
|
13
13
|
dateRange: string;
|
|
14
14
|
mode: string;
|
|
15
15
|
groupBy: string;
|
|
16
|
+
sortBy: import("../../types/models").sortByOpType;
|
|
16
17
|
interval: string;
|
|
17
18
|
balanceType: string;
|
|
18
19
|
showEmpty: boolean;
|
|
@@ -33,6 +34,7 @@ export declare const reportModel: {
|
|
|
33
34
|
date_range: string;
|
|
34
35
|
mode: string;
|
|
35
36
|
group_by: string;
|
|
37
|
+
sort_by: import("../../types/models").sortByOpType;
|
|
36
38
|
interval: string;
|
|
37
39
|
balance_type: string;
|
|
38
40
|
show_empty: number;
|
|
@@ -46,12 +48,17 @@ export declare const reportModel: {
|
|
|
46
48
|
};
|
|
47
49
|
};
|
|
48
50
|
export declare const app: {
|
|
49
|
-
events:
|
|
51
|
+
events: import("mitt").Emitter<{
|
|
52
|
+
sync: import("../../types/server-events").ServerEvents["sync-event"];
|
|
53
|
+
'load-budget': {
|
|
54
|
+
id: string;
|
|
55
|
+
};
|
|
56
|
+
}>;
|
|
50
57
|
handlers: ReportsHandlers;
|
|
51
|
-
services:
|
|
52
|
-
unlistenServices:
|
|
58
|
+
services: (() => () => void)[];
|
|
59
|
+
unlistenServices: (() => void)[];
|
|
53
60
|
method<Name extends "report/create" | "report/update" | "report/delete">(name: Name, func: ReportsHandlers[Name]): void;
|
|
54
|
-
service(func:
|
|
61
|
+
service(func: () => () => void): void;
|
|
55
62
|
combine(...apps: any[]): void;
|
|
56
63
|
startServices(): void;
|
|
57
64
|
stopServices(): void;
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { RulesHandlers } from './types/handlers';
|
|
2
2
|
export declare const app: {
|
|
3
|
-
events:
|
|
3
|
+
events: import("mitt").Emitter<{
|
|
4
|
+
sync: import("../../types/server-events").ServerEvents["sync-event"];
|
|
5
|
+
'load-budget': {
|
|
6
|
+
id: string;
|
|
7
|
+
};
|
|
8
|
+
}>;
|
|
4
9
|
handlers: RulesHandlers;
|
|
5
|
-
services:
|
|
6
|
-
unlistenServices:
|
|
10
|
+
services: (() => () => void)[];
|
|
11
|
+
unlistenServices: (() => void)[];
|
|
7
12
|
method<Name extends "rule-validate" | "rule-add" | "rule-update" | "rule-delete" | "rule-delete-all" | "rule-apply-actions" | "rule-add-payee-rename" | "rules-get" | "rule-get" | "rules-run">(name: Name, func: RulesHandlers[Name]): void;
|
|
8
|
-
service(func:
|
|
13
|
+
service(func: () => () => void): void;
|
|
9
14
|
combine(...apps: any[]): void;
|
|
10
15
|
startServices(): void;
|
|
11
16
|
stopServices(): void;
|
|
@@ -31,10 +31,10 @@ export interface RulesHandlers {
|
|
|
31
31
|
}) => Promise<string>;
|
|
32
32
|
'rules-get': () => Promise<RuleEntity[]>;
|
|
33
33
|
'rule-get': (arg: {
|
|
34
|
-
id:
|
|
35
|
-
}) => Promise<
|
|
34
|
+
id: RuleEntity['id'];
|
|
35
|
+
}) => Promise<RuleEntity>;
|
|
36
36
|
'rules-run': (arg: {
|
|
37
|
-
transaction:
|
|
38
|
-
}) => Promise<
|
|
37
|
+
transaction: TransactionEntity;
|
|
38
|
+
}) => Promise<TransactionEntity>;
|
|
39
39
|
}
|
|
40
40
|
export {};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Rule } from '../accounts/rules';
|
|
2
2
|
import { SchedulesHandlers } from './types/handlers';
|
|
3
3
|
export declare function updateConditions(conditions: any, newConditions: any): any;
|
|
4
|
-
export declare function getNextDate(dateCond: any, start?: Date, noSkipWeekend?: boolean): any;
|
|
5
4
|
export declare function getRuleForSchedule(id: string | null): Promise<Rule>;
|
|
6
5
|
export declare function setNextDate({ id, start, conditions, reset, }: {
|
|
7
6
|
id: string;
|
|
@@ -17,19 +16,23 @@ export declare function updateSchedule({ schedule, conditions, resetNextDate, }:
|
|
|
17
16
|
schedule: any;
|
|
18
17
|
conditions?: any;
|
|
19
18
|
resetNextDate?: boolean;
|
|
20
|
-
}): Promise<
|
|
19
|
+
}): Promise<any>;
|
|
21
20
|
export declare function deleteSchedule({ id }: {
|
|
22
21
|
id: any;
|
|
23
22
|
}): Promise<void>;
|
|
24
23
|
export declare const app: {
|
|
25
|
-
events:
|
|
24
|
+
events: import("mitt").Emitter<{
|
|
25
|
+
sync: import("../../types/server-events").ServerEvents["sync-event"];
|
|
26
|
+
'load-budget': {
|
|
27
|
+
id: string;
|
|
28
|
+
};
|
|
29
|
+
}>;
|
|
26
30
|
handlers: SchedulesHandlers;
|
|
27
|
-
services:
|
|
28
|
-
unlistenServices:
|
|
31
|
+
services: (() => () => void)[];
|
|
32
|
+
unlistenServices: (() => void)[];
|
|
29
33
|
method<Name extends "schedule/create" | "schedule/update" | "schedule/delete" | "schedule/skip-next-date" | "schedule/post-transaction" | "schedule/force-run-service" | "schedule/discover" | "schedule/get-upcoming-dates">(name: Name, func: SchedulesHandlers[Name]): void;
|
|
30
|
-
service(func:
|
|
34
|
+
service(func: () => () => void): void;
|
|
31
35
|
combine(...apps: any[]): void;
|
|
32
36
|
startServices(): void;
|
|
33
37
|
stopServices(): void;
|
|
34
38
|
};
|
|
35
|
-
export declare function getDateWithSkippedWeekend(date: Date, solveMode: 'after' | 'before'): Date;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DiscoverScheduleEntity } from '../../../types/models';
|
|
1
|
+
import { DiscoverScheduleEntity, ScheduleEntity } from '../../../types/models';
|
|
2
2
|
export interface SchedulesHandlers {
|
|
3
3
|
'schedule/create': (arg: {
|
|
4
4
|
schedule: {
|
|
@@ -12,15 +12,15 @@ export interface SchedulesHandlers {
|
|
|
12
12
|
schedule: any;
|
|
13
13
|
conditions?: any;
|
|
14
14
|
resetNextDate?: boolean;
|
|
15
|
-
}) => Promise<
|
|
15
|
+
}) => Promise<ScheduleEntity['id']>;
|
|
16
16
|
'schedule/delete': (arg: {
|
|
17
|
-
id:
|
|
17
|
+
id: ScheduleEntity['id'];
|
|
18
18
|
}) => Promise<void>;
|
|
19
19
|
'schedule/skip-next-date': (arg: {
|
|
20
|
-
id:
|
|
20
|
+
id: ScheduleEntity['id'];
|
|
21
21
|
}) => Promise<void>;
|
|
22
22
|
'schedule/post-transaction': (arg: {
|
|
23
|
-
id:
|
|
23
|
+
id: ScheduleEntity['id'];
|
|
24
24
|
}) => Promise<void>;
|
|
25
25
|
'schedule/force-run-service': () => Promise<unknown>;
|
|
26
26
|
'schedule/discover': () => Promise<DiscoverScheduleEntity[]>;
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { ToolsHandlers } from './types/handlers';
|
|
2
2
|
export declare const app: {
|
|
3
|
-
events:
|
|
3
|
+
events: import("mitt").Emitter<{
|
|
4
|
+
sync: import("../../types/server-events").ServerEvents["sync-event"];
|
|
5
|
+
'load-budget': {
|
|
6
|
+
id: string;
|
|
7
|
+
};
|
|
8
|
+
}>;
|
|
4
9
|
handlers: ToolsHandlers;
|
|
5
|
-
services:
|
|
6
|
-
unlistenServices:
|
|
10
|
+
services: (() => () => void)[];
|
|
11
|
+
unlistenServices: (() => void)[];
|
|
7
12
|
method<Name extends "tools/fix-split-transactions">(name: Name, func: ToolsHandlers[Name]): void;
|
|
8
|
-
service(func:
|
|
13
|
+
service(func: () => () => void): void;
|
|
9
14
|
combine(...apps: any[]): void;
|
|
10
15
|
startServices(): void;
|
|
11
16
|
stopServices(): void;
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import { TransactionEntity } from '../../../types/models';
|
|
2
|
+
|
|
1
3
|
export interface ToolsHandlers {
|
|
2
4
|
'tools/fix-split-transactions': () => Promise<{
|
|
3
5
|
numBlankPayees: number;
|
|
4
6
|
numCleared: number;
|
|
5
7
|
numDeleted: number;
|
|
8
|
+
numTransfersFixed: number;
|
|
9
|
+
mismatchedSplits: TransactionEntity[];
|
|
6
10
|
}>;
|
|
7
11
|
}
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
export declare function
|
|
2
|
-
export declare function
|
|
1
|
+
export declare function uniqueBudgetName(initialName?: string): Promise<string>;
|
|
2
|
+
export declare function validateBudgetName(name: string): Promise<{
|
|
3
|
+
valid: boolean;
|
|
4
|
+
message?: string;
|
|
5
|
+
}>;
|
|
6
|
+
export declare function idFromBudgetName(name: string): Promise<string>;
|
|
@@ -20,3 +20,6 @@ export declare class LazyLoadFailedError extends Error {
|
|
|
20
20
|
meta: {};
|
|
21
21
|
constructor(name: string, cause: unknown);
|
|
22
22
|
}
|
|
23
|
+
export declare function getUserAccessErrors(reason: string): string;
|
|
24
|
+
export declare function getSecretsError(error: string, reason: string): string;
|
|
25
|
+
export declare function getOpenIdErrors(reason: string): string;
|
|
@@ -3,18 +3,18 @@ type ObjectExpression = {
|
|
|
3
3
|
[key: string]: ObjectExpression | unknown;
|
|
4
4
|
};
|
|
5
5
|
export type QueryState = {
|
|
6
|
-
table: string;
|
|
7
|
-
tableOptions: Record<string, unknown
|
|
8
|
-
filterExpressions:
|
|
9
|
-
selectExpressions:
|
|
10
|
-
groupExpressions:
|
|
11
|
-
orderExpressions:
|
|
12
|
-
calculation: boolean;
|
|
13
|
-
rawMode: boolean;
|
|
14
|
-
withDead: boolean;
|
|
15
|
-
validateRefs: boolean;
|
|
16
|
-
limit: number | null;
|
|
17
|
-
offset: number | null;
|
|
6
|
+
get table(): string;
|
|
7
|
+
get tableOptions(): Readonly<Record<string, unknown>>;
|
|
8
|
+
get filterExpressions(): ReadonlyArray<ObjectExpression>;
|
|
9
|
+
get selectExpressions(): ReadonlyArray<ObjectExpression | string | '*'>;
|
|
10
|
+
get groupExpressions(): ReadonlyArray<ObjectExpression | string>;
|
|
11
|
+
get orderExpressions(): ReadonlyArray<ObjectExpression | string>;
|
|
12
|
+
get calculation(): boolean;
|
|
13
|
+
get rawMode(): boolean;
|
|
14
|
+
get withDead(): boolean;
|
|
15
|
+
get validateRefs(): boolean;
|
|
16
|
+
get limit(): number | null;
|
|
17
|
+
get offset(): number | null;
|
|
18
18
|
};
|
|
19
19
|
export declare class Query {
|
|
20
20
|
state: QueryState;
|
|
@@ -33,6 +33,7 @@ export declare class Query {
|
|
|
33
33
|
options(opts: Record<string, unknown>): Query;
|
|
34
34
|
reset(): Query;
|
|
35
35
|
serialize(): QueryState;
|
|
36
|
+
serializeAsString(): string;
|
|
36
37
|
}
|
|
37
38
|
export declare function getPrimaryOrderBy(query: Query, defaultOrderBy: ObjectExpression | null): {
|
|
38
39
|
order: string;
|
|
@@ -2,45 +2,19 @@ import type { IRuleOptions } from '@rschedule/core';
|
|
|
2
2
|
export declare function getStatus(nextDate: string, completed: boolean, hasTrans: boolean, upcomingLength: string): "completed" | "paid" | "due" | "upcoming" | "missed" | "scheduled";
|
|
3
3
|
export declare function getHasTransactionsQuery(schedules: any): import("./query").Query;
|
|
4
4
|
export declare function getRecurringDescription(config: any, dateFormat: any): string;
|
|
5
|
-
export declare function recurConfigToRSchedule(config: any): IRuleOptions[]
|
|
6
|
-
byDayOfMonth: any;
|
|
7
|
-
start: import("@rschedule/core").RuleOption.Start;
|
|
8
|
-
end?: import("@rschedule/core").RuleOption.End;
|
|
9
|
-
duration?: import("@rschedule/core").RuleOption.Duration;
|
|
10
|
-
count?: import("@rschedule/core").RuleOption.Count;
|
|
11
|
-
frequency: import("@rschedule/core").RuleOption.Frequency;
|
|
12
|
-
interval?: import("@rschedule/core").RuleOption.Interval;
|
|
13
|
-
weekStart?: import("@rschedule/core").RuleOption.WeekStart;
|
|
14
|
-
byDayOfWeek?: import("@rschedule/core").RuleOption.ByDayOfWeek[];
|
|
15
|
-
byHourOfDay?: import("@rschedule/core").RuleOption.ByHourOfDay[];
|
|
16
|
-
byMillisecondOfSecond?: import("@rschedule/core").RuleOption.ByMillisecondOfSecond[];
|
|
17
|
-
byMinuteOfHour?: import("@rschedule/core").RuleOption.ByMinuteOfHour[];
|
|
18
|
-
byMonthOfYear?: import("@rschedule/core").RuleOption.ByMonthOfYear[];
|
|
19
|
-
bySecondOfMinute?: import("@rschedule/core").RuleOption.BySecondOfMinute[];
|
|
20
|
-
} | {
|
|
21
|
-
byDayOfWeek: any;
|
|
22
|
-
start: import("@rschedule/core").RuleOption.Start;
|
|
23
|
-
end?: import("@rschedule/core").RuleOption.End;
|
|
24
|
-
duration?: import("@rschedule/core").RuleOption.Duration;
|
|
25
|
-
count?: import("@rschedule/core").RuleOption.Count;
|
|
26
|
-
frequency: import("@rschedule/core").RuleOption.Frequency;
|
|
27
|
-
interval?: import("@rschedule/core").RuleOption.Interval;
|
|
28
|
-
weekStart?: import("@rschedule/core").RuleOption.WeekStart;
|
|
29
|
-
byDayOfMonth?: import("@rschedule/core").RuleOption.ByDayOfMonth[];
|
|
30
|
-
byHourOfDay?: import("@rschedule/core").RuleOption.ByHourOfDay[];
|
|
31
|
-
byMillisecondOfSecond?: import("@rschedule/core").RuleOption.ByMillisecondOfSecond[];
|
|
32
|
-
byMinuteOfHour?: import("@rschedule/core").RuleOption.ByMinuteOfHour[];
|
|
33
|
-
byMonthOfYear?: import("@rschedule/core").RuleOption.ByMonthOfYear[];
|
|
34
|
-
bySecondOfMinute?: import("@rschedule/core").RuleOption.BySecondOfMinute[];
|
|
35
|
-
})[];
|
|
5
|
+
export declare function recurConfigToRSchedule(config: any): IRuleOptions[];
|
|
36
6
|
export declare function extractScheduleConds(conditions: any): {
|
|
37
7
|
payee: any;
|
|
38
8
|
account: any;
|
|
39
9
|
amount: any;
|
|
40
10
|
date: any;
|
|
41
11
|
};
|
|
12
|
+
export declare function getNextDate(dateCond: any, start?: Date, noSkipWeekend?: boolean): any;
|
|
13
|
+
export declare function getDateWithSkippedWeekend(date: Date, solveMode: 'after' | 'before'): Date;
|
|
42
14
|
export declare function getScheduledAmount(amount: number | {
|
|
43
15
|
num1: number;
|
|
44
16
|
num2: number;
|
|
45
17
|
}, inverse?: boolean): number;
|
|
46
18
|
export declare function describeSchedule(schedule: any, payee: any): string;
|
|
19
|
+
export declare function getUpcomingDays(upcomingLength?: string): number;
|
|
20
|
+
export declare function scheduleIsRecurring(dateCond: any): boolean;
|
|
@@ -1,41 +1,119 @@
|
|
|
1
1
|
import { type TransactionEntity } from '../types/models';
|
|
2
2
|
import { diffItems, applyChanges } from './util';
|
|
3
|
-
interface TransactionEntityWithError extends TransactionEntity {
|
|
4
|
-
error: ReturnType<typeof SplitTransactionError> | null;
|
|
5
|
-
_deleted?: boolean;
|
|
6
|
-
}
|
|
7
3
|
export declare function isTemporaryId(id: string): boolean;
|
|
8
4
|
export declare function isPreviewId(id: string): boolean;
|
|
9
|
-
|
|
10
|
-
type: string;
|
|
11
|
-
version: number;
|
|
12
|
-
difference: number;
|
|
13
|
-
};
|
|
14
|
-
type GenericTransactionEntity = TransactionEntity | TransactionEntityWithError;
|
|
5
|
+
type GenericTransactionEntity = TransactionEntity;
|
|
15
6
|
export declare function makeChild<T extends GenericTransactionEntity>(parent: T, data?: object): T;
|
|
16
|
-
export declare function recalculateSplit(trans: TransactionEntity):
|
|
7
|
+
export declare function recalculateSplit(trans: TransactionEntity): {
|
|
8
|
+
error: {
|
|
9
|
+
type: "SplitTransactionError";
|
|
10
|
+
version: 1;
|
|
11
|
+
difference: number;
|
|
12
|
+
};
|
|
13
|
+
id: string;
|
|
14
|
+
is_parent?: boolean;
|
|
15
|
+
is_child?: boolean;
|
|
16
|
+
parent_id?: TransactionEntity["id"];
|
|
17
|
+
account: import("../types/models").AccountEntity["id"];
|
|
18
|
+
category?: import("../types/models").CategoryEntity["id"];
|
|
19
|
+
amount: number;
|
|
20
|
+
payee?: import("../types/models").PayeeEntity["id"];
|
|
21
|
+
notes?: string;
|
|
22
|
+
date: string;
|
|
23
|
+
imported_id?: string;
|
|
24
|
+
imported_payee?: string;
|
|
25
|
+
starting_balance_flag?: boolean;
|
|
26
|
+
transfer_id?: TransactionEntity["id"];
|
|
27
|
+
sort_order?: number;
|
|
28
|
+
cleared?: boolean;
|
|
29
|
+
reconciled?: boolean;
|
|
30
|
+
tombstone?: boolean;
|
|
31
|
+
forceUpcoming?: boolean;
|
|
32
|
+
schedule?: import("../types/models").ScheduleEntity["id"];
|
|
33
|
+
subtransactions?: TransactionEntity[];
|
|
34
|
+
_unmatched?: boolean;
|
|
35
|
+
_deleted?: boolean;
|
|
36
|
+
};
|
|
17
37
|
export declare function ungroupTransactions(transactions: TransactionEntity[]): TransactionEntity[];
|
|
18
|
-
export declare function groupTransaction(split: TransactionEntity[]):
|
|
38
|
+
export declare function groupTransaction(split: TransactionEntity[]): {
|
|
39
|
+
subtransactions: TransactionEntity[];
|
|
40
|
+
id: string;
|
|
41
|
+
is_parent?: boolean;
|
|
42
|
+
is_child?: boolean;
|
|
43
|
+
parent_id?: TransactionEntity["id"];
|
|
44
|
+
account: import("../types/models").AccountEntity["id"];
|
|
45
|
+
category?: import("../types/models").CategoryEntity["id"];
|
|
46
|
+
amount: number;
|
|
47
|
+
payee?: import("../types/models").PayeeEntity["id"];
|
|
48
|
+
notes?: string;
|
|
49
|
+
date: string;
|
|
50
|
+
imported_id?: string;
|
|
51
|
+
imported_payee?: string;
|
|
52
|
+
starting_balance_flag?: boolean;
|
|
53
|
+
transfer_id?: TransactionEntity["id"];
|
|
54
|
+
sort_order?: number;
|
|
55
|
+
cleared?: boolean;
|
|
56
|
+
reconciled?: boolean;
|
|
57
|
+
tombstone?: boolean;
|
|
58
|
+
forceUpcoming?: boolean;
|
|
59
|
+
schedule?: import("../types/models").ScheduleEntity["id"];
|
|
60
|
+
_unmatched?: boolean;
|
|
61
|
+
_deleted?: boolean;
|
|
62
|
+
error?: {
|
|
63
|
+
type: "SplitTransactionError";
|
|
64
|
+
version: 1;
|
|
65
|
+
difference: number;
|
|
66
|
+
} | null;
|
|
67
|
+
};
|
|
19
68
|
export declare function ungroupTransaction(split: TransactionEntity | null): TransactionEntity[];
|
|
20
|
-
export declare function applyTransactionDiff(groupedTrans: Parameters<typeof ungroupTransaction>[0], diff: Parameters<typeof applyChanges>[0]):
|
|
69
|
+
export declare function applyTransactionDiff(groupedTrans: Parameters<typeof ungroupTransaction>[0], diff: Parameters<typeof applyChanges>[0]): {
|
|
70
|
+
subtransactions: TransactionEntity[];
|
|
71
|
+
id: string;
|
|
72
|
+
is_parent?: boolean;
|
|
73
|
+
is_child?: boolean;
|
|
74
|
+
parent_id?: TransactionEntity["id"];
|
|
75
|
+
account: import("../types/models").AccountEntity["id"];
|
|
76
|
+
category?: import("../types/models").CategoryEntity["id"];
|
|
77
|
+
amount: number;
|
|
78
|
+
payee?: import("../types/models").PayeeEntity["id"];
|
|
79
|
+
notes?: string;
|
|
80
|
+
date: string;
|
|
81
|
+
imported_id?: string;
|
|
82
|
+
imported_payee?: string;
|
|
83
|
+
starting_balance_flag?: boolean;
|
|
84
|
+
transfer_id?: TransactionEntity["id"];
|
|
85
|
+
sort_order?: number;
|
|
86
|
+
cleared?: boolean;
|
|
87
|
+
reconciled?: boolean;
|
|
88
|
+
tombstone?: boolean;
|
|
89
|
+
forceUpcoming?: boolean;
|
|
90
|
+
schedule?: import("../types/models").ScheduleEntity["id"];
|
|
91
|
+
_unmatched?: boolean;
|
|
92
|
+
_deleted?: boolean;
|
|
93
|
+
error?: {
|
|
94
|
+
type: "SplitTransactionError";
|
|
95
|
+
version: 1;
|
|
96
|
+
difference: number;
|
|
97
|
+
} | null;
|
|
98
|
+
};
|
|
21
99
|
export declare function addSplitTransaction(transactions: TransactionEntity[], id: string): {
|
|
22
100
|
data: TransactionEntity[];
|
|
23
|
-
newTransaction: TransactionEntity |
|
|
101
|
+
newTransaction: TransactionEntity | null;
|
|
24
102
|
diff: ReturnType<typeof diffItems<TransactionEntity>>;
|
|
25
103
|
};
|
|
26
104
|
export declare function updateTransaction(transactions: TransactionEntity[], transaction: TransactionEntity): {
|
|
27
105
|
data: TransactionEntity[];
|
|
28
|
-
newTransaction: TransactionEntity |
|
|
106
|
+
newTransaction: TransactionEntity | null;
|
|
29
107
|
diff: ReturnType<typeof diffItems<TransactionEntity>>;
|
|
30
108
|
};
|
|
31
109
|
export declare function deleteTransaction(transactions: TransactionEntity[], id: string): {
|
|
32
110
|
data: TransactionEntity[];
|
|
33
|
-
newTransaction: TransactionEntity |
|
|
111
|
+
newTransaction: TransactionEntity | null;
|
|
34
112
|
diff: ReturnType<typeof diffItems<TransactionEntity>>;
|
|
35
113
|
};
|
|
36
114
|
export declare function splitTransaction(transactions: TransactionEntity[], id: string, createSubtransactions?: (parentTransaction: TransactionEntity) => TransactionEntity[]): {
|
|
37
115
|
data: TransactionEntity[];
|
|
38
|
-
newTransaction: TransactionEntity |
|
|
116
|
+
newTransaction: TransactionEntity | null;
|
|
39
117
|
diff: ReturnType<typeof diffItems<TransactionEntity>>;
|
|
40
118
|
};
|
|
41
119
|
export declare function realizeTempTransactions(transactions: TransactionEntity[]): TransactionEntity[];
|
|
@@ -60,10 +138,16 @@ export declare function makeAsNonChildTransactions(childTransactionsToUpdate: Tr
|
|
|
60
138
|
cleared?: boolean;
|
|
61
139
|
reconciled?: boolean;
|
|
62
140
|
tombstone?: boolean;
|
|
141
|
+
forceUpcoming?: boolean;
|
|
63
142
|
schedule?: import("../types/models").ScheduleEntity["id"];
|
|
64
143
|
subtransactions?: TransactionEntity[];
|
|
65
144
|
_unmatched?: boolean;
|
|
66
145
|
_deleted?: boolean;
|
|
146
|
+
error?: {
|
|
147
|
+
type: "SplitTransactionError";
|
|
148
|
+
version: 1;
|
|
149
|
+
difference: number;
|
|
150
|
+
} | null;
|
|
67
151
|
}[];
|
|
68
152
|
};
|
|
69
153
|
export {};
|
|
@@ -28,7 +28,6 @@ export declare function titleFirst(str: string): string;
|
|
|
28
28
|
export declare function appendDecimals(amountText: string, hideDecimals?: boolean): string;
|
|
29
29
|
declare const NUMBER_FORMATS: readonly ["comma-dot", "dot-comma", "space-comma", "apostrophe-dot", "comma-dot", "comma-dot-in"];
|
|
30
30
|
type NumberFormats = (typeof NUMBER_FORMATS)[number];
|
|
31
|
-
export declare function isNumberFormat(input?: string): input is NumberFormats;
|
|
32
31
|
export declare const numberFormats: Array<{
|
|
33
32
|
value: NumberFormats;
|
|
34
33
|
label: string;
|
|
@@ -38,6 +37,13 @@ declare let numberFormatConfig: {
|
|
|
38
37
|
format: NumberFormats;
|
|
39
38
|
hideFraction: boolean;
|
|
40
39
|
};
|
|
40
|
+
export declare function parseNumberFormat({ format, hideFraction, }: {
|
|
41
|
+
format?: string;
|
|
42
|
+
hideFraction?: string | boolean;
|
|
43
|
+
}): {
|
|
44
|
+
format: "comma-dot" | "dot-comma" | "space-comma" | "apostrophe-dot" | "comma-dot-in";
|
|
45
|
+
hideFraction: boolean;
|
|
46
|
+
};
|
|
41
47
|
export declare function setNumberFormat(config: typeof numberFormatConfig): void;
|
|
42
48
|
export declare function getNumberFormat({ format, hideFraction, }?: {
|
|
43
49
|
format?: NumberFormats;
|
|
@@ -49,16 +55,30 @@ export declare function getNumberFormat({ format, hideFraction, }?: {
|
|
|
49
55
|
regex: any;
|
|
50
56
|
separatorRegex: any;
|
|
51
57
|
};
|
|
58
|
+
/**
|
|
59
|
+
* The exact amount.
|
|
60
|
+
*/
|
|
61
|
+
export type Amount = number;
|
|
62
|
+
/**
|
|
63
|
+
* The exact amount that is formatted based on the configured number format.
|
|
64
|
+
* For example, 123.45 would be '123.45' or '123,45'.
|
|
65
|
+
*/
|
|
66
|
+
export type CurrencyAmount = string;
|
|
67
|
+
/**
|
|
68
|
+
* The amount with the decimal point removed.
|
|
69
|
+
* For example, 123.45 would be 12345.
|
|
70
|
+
*/
|
|
71
|
+
export type IntegerAmount = number;
|
|
52
72
|
export declare function safeNumber(value: number): number;
|
|
53
|
-
export declare function toRelaxedNumber(
|
|
54
|
-
export declare function integerToCurrency(
|
|
55
|
-
export declare function amountToCurrency(
|
|
56
|
-
export declare function amountToCurrencyNoDecimal(
|
|
57
|
-
export declare function currencyToAmount(
|
|
58
|
-
export declare function currencyToInteger(
|
|
59
|
-
export declare function stringToInteger(str: string): number;
|
|
60
|
-
export declare function amountToInteger(
|
|
61
|
-
export declare function integerToAmount(
|
|
73
|
+
export declare function toRelaxedNumber(currencyAmount: CurrencyAmount): Amount;
|
|
74
|
+
export declare function integerToCurrency(integerAmount: IntegerAmount, formatter?: Intl.NumberFormat): string;
|
|
75
|
+
export declare function amountToCurrency(amount: Amount): CurrencyAmount;
|
|
76
|
+
export declare function amountToCurrencyNoDecimal(amount: Amount): CurrencyAmount;
|
|
77
|
+
export declare function currencyToAmount(currencyAmount: CurrencyAmount): Amount | null;
|
|
78
|
+
export declare function currencyToInteger(currencyAmount: CurrencyAmount): IntegerAmount | null;
|
|
79
|
+
export declare function stringToInteger(str: string): number | null;
|
|
80
|
+
export declare function amountToInteger(amount: Amount): IntegerAmount;
|
|
81
|
+
export declare function integerToAmount(integerAmount: IntegerAmount): Amount;
|
|
62
82
|
export declare function looselyParseAmount(amount: string): number;
|
|
63
83
|
export declare function sortByKey<T>(arr: T[], key: keyof T): T[];
|
|
64
84
|
export {};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { ImportTransactionsOpts } from '@actual-app/api';
|
|
2
|
+
|
|
1
3
|
import { type batchUpdateTransactions } from '../server/accounts/transactions';
|
|
2
4
|
import type {
|
|
3
5
|
APIAccountEntity,
|
|
@@ -80,6 +82,7 @@ export interface ApiHandlers {
|
|
|
80
82
|
accountId;
|
|
81
83
|
transactions;
|
|
82
84
|
isPreview?;
|
|
85
|
+
opts?: ImportTransactionsOpts;
|
|
83
86
|
}) => Promise<{
|
|
84
87
|
errors?: { message: string }[];
|
|
85
88
|
added;
|