@actual-app/api 26.2.0-nightly.20260113 → 26.2.0-nightly.20260115

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.
@@ -383,10 +383,24 @@ export declare const schema: {
383
383
  type: string;
384
384
  };
385
385
  };
386
+ dashboard_pages: {
387
+ id: {
388
+ type: string;
389
+ };
390
+ name: {
391
+ type: string;
392
+ };
393
+ tombstone: {
394
+ type: string;
395
+ };
396
+ };
386
397
  dashboard: {
387
398
  id: {
388
399
  type: string;
389
400
  };
401
+ dashboard_page_id: {
402
+ type: string;
403
+ };
390
404
  type: {
391
405
  type: string;
392
406
  };
@@ -6,7 +6,6 @@ export type BudgetFileHandlers = {
6
6
  'unique-budget-name': typeof handleUniqueBudgetName;
7
7
  'get-budgets': typeof getBudgets;
8
8
  'get-remote-files': typeof getRemoteFiles;
9
- 'get-user-file-info': typeof getUserFileInfo;
10
9
  'reset-budget-cache': typeof resetBudgetCache;
11
10
  'upload-budget': typeof uploadBudget;
12
11
  'download-budget': typeof downloadBudget;
@@ -35,7 +34,7 @@ export declare const app: {
35
34
  handlers: BudgetFileHandlers;
36
35
  services: (() => () => void)[];
37
36
  unlistenServices: (() => void)[];
38
- method<Name extends "load-budget" | "validate-budget-name" | "unique-budget-name" | "get-budgets" | "get-remote-files" | "get-user-file-info" | "reset-budget-cache" | "upload-budget" | "download-budget" | "sync-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">(name: Name, func: BudgetFileHandlers[Name]): void;
37
+ method<Name extends "load-budget" | "validate-budget-name" | "unique-budget-name" | "get-budgets" | "get-remote-files" | "reset-budget-cache" | "upload-budget" | "download-budget" | "sync-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">(name: Name, func: BudgetFileHandlers[Name]): void;
39
38
  service(func: () => () => void): void;
40
39
  combine(...apps: any[]): void;
41
40
  startServices(): void;
@@ -52,7 +51,6 @@ declare function handleUniqueBudgetName({ name }: {
52
51
  }): Promise<string>;
53
52
  declare function getBudgets(): Promise<Budget[]>;
54
53
  declare function getRemoteFiles(): Promise<cloudStorage.RemoteFile[]>;
55
- declare function getUserFileInfo(fileId: string): Promise<cloudStorage.RemoteFile>;
56
54
  declare function resetBudgetCache(): Promise<void>;
57
55
  declare function uploadBudget({ id }?: {
58
56
  id?: Budget['id'];
@@ -35,7 +35,6 @@ export declare function upload(): Promise<void>;
35
35
  export declare function possiblyUpload(): Promise<void>;
36
36
  export declare function removeFile(fileId: any): Promise<void>;
37
37
  export declare function listRemoteFiles(): Promise<RemoteFile[]>;
38
- export declare function getRemoteFile(fileId: string): Promise<RemoteFile | null>;
39
38
  export declare function download(cloudFileId: any): Promise<{
40
39
  id: any;
41
40
  }>;
@@ -1,12 +1,28 @@
1
1
  import { type Widget } from '../../types/models';
2
2
  import { type EverythingButIdOptional } from '../../types/util';
3
+ declare function getDashboardPages(): Promise<unknown[]>;
4
+ declare function createDashboardPage({ name }: {
5
+ name: string;
6
+ }): Promise<string>;
7
+ declare function deleteDashboardPage(id: string): Promise<void>;
8
+ declare function renameDashboardPage({ id, name }: {
9
+ id: string;
10
+ name: string;
11
+ }): Promise<void>;
3
12
  declare function updateDashboard(widgets: EverythingButIdOptional<Omit<Widget, 'tombstone'>>[]): Promise<void>;
4
13
  declare function updateDashboardWidget(widget: EverythingButIdOptional<Omit<Widget, 'tombstone'>>): Promise<void>;
5
- declare function resetDashboard(): Promise<void>;
6
- declare function addDashboardWidget(widget: Omit<Widget, 'id' | 'x' | 'y' | 'tombstone'> & Partial<Pick<Widget, 'x' | 'y'>>): Promise<void>;
14
+ declare function resetDashboard(id: string): Promise<void>;
15
+ declare function addDashboardWidget(widget: Omit<Widget, 'id' | 'x' | 'y' | 'tombstone'> & Partial<Pick<Widget, 'x' | 'y'>> & {
16
+ dashboard_page_id: string;
17
+ }): Promise<void>;
7
18
  declare function removeDashboardWidget(widgetId: string): Promise<void>;
8
- declare function importDashboard({ filepath }: {
19
+ declare function copyDashboardWidget({ widgetId, targetDashboardPageId, }: {
20
+ widgetId: string;
21
+ targetDashboardPageId: string;
22
+ }): Promise<void>;
23
+ declare function importDashboard({ filepath, dashboardPageId, }: {
9
24
  filepath: string;
25
+ dashboardPageId: string;
10
26
  }): Promise<{
11
27
  status: "ok";
12
28
  error?: undefined;
@@ -25,11 +41,16 @@ declare function importDashboard({ filepath }: {
25
41
  message?: undefined;
26
42
  }>;
27
43
  export type DashboardHandlers = {
44
+ 'dashboard_pages-get': typeof getDashboardPages;
45
+ 'dashboard-create': typeof createDashboardPage;
46
+ 'dashboard-delete': typeof deleteDashboardPage;
47
+ 'dashboard-rename': typeof renameDashboardPage;
28
48
  'dashboard-update': typeof updateDashboard;
29
49
  'dashboard-update-widget': typeof updateDashboardWidget;
30
50
  'dashboard-reset': typeof resetDashboard;
31
51
  'dashboard-add-widget': typeof addDashboardWidget;
32
52
  'dashboard-remove-widget': typeof removeDashboardWidget;
53
+ 'dashboard-copy-widget': typeof copyDashboardWidget;
33
54
  'dashboard-import': typeof importDashboard;
34
55
  };
35
56
  export declare const app: {
@@ -42,7 +63,7 @@ export declare const app: {
42
63
  handlers: DashboardHandlers;
43
64
  services: (() => () => void)[];
44
65
  unlistenServices: (() => void)[];
45
- method<Name extends "dashboard-update" | "dashboard-update-widget" | "dashboard-reset" | "dashboard-add-widget" | "dashboard-remove-widget" | "dashboard-import">(name: Name, func: DashboardHandlers[Name]): void;
66
+ method<Name extends "dashboard_pages-get" | "dashboard-create" | "dashboard-delete" | "dashboard-rename" | "dashboard-update" | "dashboard-update-widget" | "dashboard-reset" | "dashboard-add-widget" | "dashboard-remove-widget" | "dashboard-copy-widget" | "dashboard-import">(name: Name, func: DashboardHandlers[Name]): void;
46
67
  service(func: () => () => void): void;
47
68
  combine(...apps: any[]): void;
48
69
  startServices(): void;
@@ -193,8 +193,14 @@ export type DbCustomReport = {
193
193
  sort_by: string;
194
194
  tombstone: 1 | 0;
195
195
  };
196
+ export type DbDashboardPage = {
197
+ id: string;
198
+ name: string;
199
+ tombstone: 1 | 0;
200
+ };
196
201
  export type DbDashboard = {
197
202
  id: string;
203
+ dashboard_page_id: string;
198
204
  type: string;
199
205
  width: number;
200
206
  height: number;
@@ -9,7 +9,7 @@ export declare const app: {
9
9
  handlers: Handlers;
10
10
  services: (() => () => void)[];
11
11
  unlistenServices: (() => void)[];
12
- method<Name extends "sync" | "load-budget" | "undo" | "redo" | "make-filters-from-conditions" | "query" | "get-server-version" | "get-server-url" | "set-server-url" | "app-focused" | "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" | "api/schedule-create" | "api/schedule-update" | "api/schedule-delete" | "api/schedules-get" | "api/get-id-by-name" | "api/get-server-version" | "budget/budget-amount" | "budget/copy-previous-month" | "budget/copy-single-month" | "budget/set-zero" | "budget/set-3month-avg" | "budget/set-6month-avg" | "budget/set-12month-avg" | "budget/set-n-month-avg" | "budget/check-templates" | "budget/apply-goal-template" | "budget/apply-multiple-templates" | "budget/overwrite-goal-template" | "budget/apply-single-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/reset-income-carryover" | "get-categories" | "get-budget-bounds" | "envelope-budget-month" | "tracking-budget-month" | "category-create" | "category-update" | "category-move" | "category-delete" | "get-category-groups" | "category-group-create" | "category-group-update" | "category-group-move" | "category-group-delete" | "must-category-transfer" | "budget/get-category-automations" | "budget/set-category-automations" | "budget/store-note-templates" | "budget/render-note-templates" | "dashboard-update" | "dashboard-update-widget" | "dashboard-reset" | "dashboard-add-widget" | "dashboard-remove-widget" | "dashboard-import" | "filter-create" | "filter-update" | "filter-delete" | "notes-save" | "notes-save-undoable" | "preferences/save" | "preferences/get" | "save-global-prefs" | "load-global-prefs" | "save-prefs" | "load-prefs" | "save-server-prefs" | "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" | "transactions-batch-update" | "transaction-add" | "transaction-update" | "transaction-delete" | "transactions-parse-file" | "transactions-export" | "transactions-export-query" | "transactions-merge" | "get-earliest-transaction" | "get-latest-transaction" | "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" | "account-update" | "accounts-get" | "account-balance" | "account-properties" | "gocardless-accounts-link" | "simplefin-accounts-link" | "pluggyai-accounts-link" | "account-create" | "account-close" | "account-reopen" | "account-move" | "secret-set" | "secret-check" | "gocardless-poll-web-token" | "gocardless-poll-web-token-stop" | "gocardless-status" | "simplefin-status" | "pluggyai-status" | "simplefin-accounts" | "pluggyai-accounts" | "gocardless-get-banks" | "gocardless-create-web-token" | "accounts-bank-sync" | "simplefin-batch-sync" | "transactions-import" | "account-unlink" | "payee-create" | "common-payees-get" | "payees-get" | "payees-get-orphaned" | "payees-get-rule-counts" | "payees-merge" | "payees-batch-change" | "payees-check-orphaned" | "payees-get-rules" | "get-cell" | "get-cell-names" | "create-query" | "sync-reset" | "sync-repair" | "validate-budget-name" | "unique-budget-name" | "get-budgets" | "get-remote-files" | "get-user-file-info" | "reset-budget-cache" | "upload-budget" | "download-budget" | "sync-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" | "key-make" | "key-test" | "tags-get" | "tags-create" | "tags-delete" | "tags-delete-all" | "tags-update" | "tags-find" | "get-did-bootstrap" | "subscribe-needs-bootstrap" | "subscribe-bootstrap" | "subscribe-get-login-methods" | "subscribe-get-user" | "subscribe-change-password" | "subscribe-sign-in" | "subscribe-sign-out" | "subscribe-set-token" | "enable-openid" | "get-openid-config" | "enable-password">(name: Name, func: Handlers[Name]): void;
12
+ method<Name extends "sync" | "load-budget" | "undo" | "redo" | "make-filters-from-conditions" | "query" | "get-server-version" | "get-server-url" | "set-server-url" | "app-focused" | "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" | "api/schedule-create" | "api/schedule-update" | "api/schedule-delete" | "api/schedules-get" | "api/get-id-by-name" | "api/get-server-version" | "budget/budget-amount" | "budget/copy-previous-month" | "budget/copy-single-month" | "budget/set-zero" | "budget/set-3month-avg" | "budget/set-6month-avg" | "budget/set-12month-avg" | "budget/set-n-month-avg" | "budget/check-templates" | "budget/apply-goal-template" | "budget/apply-multiple-templates" | "budget/overwrite-goal-template" | "budget/apply-single-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/reset-income-carryover" | "get-categories" | "get-budget-bounds" | "envelope-budget-month" | "tracking-budget-month" | "category-create" | "category-update" | "category-move" | "category-delete" | "get-category-groups" | "category-group-create" | "category-group-update" | "category-group-move" | "category-group-delete" | "must-category-transfer" | "budget/get-category-automations" | "budget/set-category-automations" | "budget/store-note-templates" | "budget/render-note-templates" | "dashboard_pages-get" | "dashboard-create" | "dashboard-delete" | "dashboard-rename" | "dashboard-update" | "dashboard-update-widget" | "dashboard-reset" | "dashboard-add-widget" | "dashboard-remove-widget" | "dashboard-copy-widget" | "dashboard-import" | "filter-create" | "filter-update" | "filter-delete" | "notes-save" | "notes-save-undoable" | "preferences/save" | "preferences/get" | "save-global-prefs" | "load-global-prefs" | "save-prefs" | "load-prefs" | "save-server-prefs" | "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" | "transactions-batch-update" | "transaction-add" | "transaction-update" | "transaction-delete" | "transactions-parse-file" | "transactions-export" | "transactions-export-query" | "transactions-merge" | "get-earliest-transaction" | "get-latest-transaction" | "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" | "account-update" | "accounts-get" | "account-balance" | "account-properties" | "gocardless-accounts-link" | "simplefin-accounts-link" | "pluggyai-accounts-link" | "account-create" | "account-close" | "account-reopen" | "account-move" | "secret-set" | "secret-check" | "gocardless-poll-web-token" | "gocardless-poll-web-token-stop" | "gocardless-status" | "simplefin-status" | "pluggyai-status" | "simplefin-accounts" | "pluggyai-accounts" | "gocardless-get-banks" | "gocardless-create-web-token" | "accounts-bank-sync" | "simplefin-batch-sync" | "transactions-import" | "account-unlink" | "payee-create" | "common-payees-get" | "payees-get" | "payees-get-orphaned" | "payees-get-rule-counts" | "payees-merge" | "payees-batch-change" | "payees-check-orphaned" | "payees-get-rules" | "get-cell" | "get-cell-names" | "create-query" | "sync-reset" | "sync-repair" | "validate-budget-name" | "unique-budget-name" | "get-budgets" | "get-remote-files" | "reset-budget-cache" | "upload-budget" | "download-budget" | "sync-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" | "key-make" | "key-test" | "tags-get" | "tags-create" | "tags-delete" | "tags-delete-all" | "tags-update" | "tags-find" | "get-did-bootstrap" | "subscribe-needs-bootstrap" | "subscribe-bootstrap" | "subscribe-get-login-methods" | "subscribe-get-user" | "subscribe-change-password" | "subscribe-sign-in" | "subscribe-sign-out" | "subscribe-set-token" | "enable-openid" | "get-openid-config" | "enable-password">(name: Name, func: Handlers[Name]): void;
13
13
  service(func: () => () => void): void;
14
14
  combine(...apps: any[]): void;
15
15
  startServices(): void;
@@ -7,12 +7,27 @@ import * as db from './db';
7
7
  export declare let handlers: Handlers;
8
8
  export declare function getDefaultDocumentDir(): string;
9
9
  export declare function initApp(isDev: any, socketName: any): Promise<void>;
10
- export type InitConfig = {
10
+ type BaseInitConfig = {
11
11
  dataDir?: string;
12
- serverURL?: string;
13
- password?: string;
14
12
  verbose?: boolean;
15
13
  };
14
+ type ServerInitConfig = BaseInitConfig & {
15
+ serverURL: string;
16
+ };
17
+ type PasswordAuthConfig = ServerInitConfig & {
18
+ password: string;
19
+ sessionToken?: never;
20
+ };
21
+ type SessionTokenAuthConfig = ServerInitConfig & {
22
+ sessionToken: string;
23
+ password?: never;
24
+ };
25
+ type NoServerConfig = BaseInitConfig & {
26
+ serverURL?: undefined;
27
+ password?: never;
28
+ sessionToken?: never;
29
+ };
30
+ export type InitConfig = PasswordAuthConfig | SessionTokenAuthConfig | NoServerConfig;
16
31
  export declare function init(config: InitConfig): Promise<{
17
32
  getDataDir: typeof fs.getDataDir;
18
33
  sendMessage: (msg: any, args: any) => void;
@@ -33,3 +48,4 @@ export declare const lib: {
33
48
  amountToInteger: typeof amountToInteger;
34
49
  integerToAmount: typeof integerToAmount;
35
50
  };
51
+ export {};
@@ -1,5 +1,10 @@
1
1
  import { type CustomReportEntity } from './reports';
2
2
  import { type RuleConditionEntity } from './rule';
3
+ export type DashboardEntity = {
4
+ id: string;
5
+ name: string;
6
+ tombstone: boolean;
7
+ };
3
8
  export type TimeFrame = {
4
9
  start: string;
5
10
  end: string;
@@ -7,6 +12,7 @@ export type TimeFrame = {
7
12
  };
8
13
  type AbstractWidget<T extends string, Meta extends Record<string, unknown> | null = null> = {
9
14
  id: string;
15
+ dashboard_page_id: string;
10
16
  type: T;
11
17
  x: number;
12
18
  y: number;
@@ -48,7 +54,7 @@ export type CrossoverWidget = AbstractWidget<'crossover-card', {
48
54
  timeFrame?: TimeFrame;
49
55
  safeWithdrawalRate?: number;
50
56
  estimatedReturn?: number | null;
51
- projectionType?: 'trend' | 'hampel';
57
+ projectionType?: 'hampel' | 'median' | 'mean';
52
58
  showHiddenCategories?: boolean;
53
59
  expenseAdjustmentFactor?: number;
54
60
  } | null>;
@@ -58,7 +64,7 @@ export type MarkdownWidget = AbstractWidget<'markdown-card', {
58
64
  }>;
59
65
  type SpecializedWidget = NetWorthWidget | CashFlowWidget | SpendingWidget | CrossoverWidget | MarkdownWidget | SummaryWidget | CalendarWidget | FormulaWidget;
60
66
  export type Widget = SpecializedWidget | CustomReportWidget;
61
- export type NewWidget = Omit<Widget, 'id' | 'tombstone'>;
67
+ export type NewWidget = Omit<Widget, 'id' | 'tombstone' | 'dashboard_page_id'>;
62
68
  export type ExportImportCustomReportWidget = Omit<CustomReportWidget, 'id' | 'meta' | 'tombstone'> & {
63
69
  meta: Omit<CustomReportEntity, 'tombstone'>;
64
70
  };
@@ -0,0 +1 @@
1
+ export default function runMigration(db: any): Promise<void>;