From 0f960df8cf3eabf22f84c2c52827a3c315096c98 Mon Sep 17 00:00:00 2001
From: DJ Mountney <david@twkie.net>
Date: Thu, 11 Apr 2024 07:36:48 -0700
Subject: [PATCH] Improve api output types (#2567)

* Improve api output types

- Fixes some missing models
- Fixes some output path aliasing

* Add changelog
---
 packages/api/tsconfig.dist.json                  |  1 +
 packages/loot-core/src/server/importers/ynab5.ts | 11 +++++++++--
 packages/loot-core/src/types/api-handlers.d.ts   |  9 ++++++++-
 upcoming-release-notes/2567.md                   |  6 ++++++
 4 files changed, 24 insertions(+), 3 deletions(-)
 create mode 100644 upcoming-release-notes/2567.md

diff --git a/packages/api/tsconfig.dist.json b/packages/api/tsconfig.dist.json
index 4795f0c97..d85cb67ca 100644
--- a/packages/api/tsconfig.dist.json
+++ b/packages/api/tsconfig.dist.json
@@ -10,6 +10,7 @@
     "outDir": "dist",
     "declarationDir": "@types",
     "paths": {
+      "loot-core/src/*": ["./loot-core/*"],
       "loot-core/*": ["./@types/loot-core/*"],
     }
   },
diff --git a/packages/loot-core/src/server/importers/ynab5.ts b/packages/loot-core/src/server/importers/ynab5.ts
index 30ab10224..011b0d15b 100644
--- a/packages/loot-core/src/server/importers/ynab5.ts
+++ b/packages/loot-core/src/server/importers/ynab5.ts
@@ -8,6 +8,7 @@ import { v4 as uuidv4 } from 'uuid';
 
 import * as monthUtils from '../../shared/months';
 import { sortByKey, groupBy } from '../../shared/util';
+import { CategoryGroupEntity } from '../../types/models';
 
 import { YNAB5 } from './ynab5-types';
 
@@ -338,10 +339,16 @@ function equalsIgnoreCase(stringa: string, stringb: string): boolean {
   );
 }
 
-function findByNameIgnoreCase(categories: YNAB5.CategoryGroup[], name: string) {
+function findByNameIgnoreCase(
+  categories: (YNAB5.CategoryGroup | CategoryGroupEntity)[],
+  name: string,
+) {
   return categories.find(cat => equalsIgnoreCase(cat.name, name));
 }
 
-function findIdByName(categories: YNAB5.CategoryGroup[], name: string) {
+function findIdByName(
+  categories: (YNAB5.CategoryGroup | CategoryGroupEntity)[],
+  name: string,
+) {
   return findByNameIgnoreCase(categories, name)?.id;
 }
diff --git a/packages/loot-core/src/types/api-handlers.d.ts b/packages/loot-core/src/types/api-handlers.d.ts
index 1f314fde6..c1f42776f 100644
--- a/packages/loot-core/src/types/api-handlers.d.ts
+++ b/packages/loot-core/src/types/api-handlers.d.ts
@@ -1,5 +1,12 @@
 import { type batchUpdateTransactions } from '../server/accounts/transactions';
 
+import type {
+  TransactionEntity,
+  AccountEntity,
+  CategoryGroupEntity,
+  CategoryEntity,
+  PayeeEntity,
+} from './models';
 import { type ServerHandlers } from './server-handlers';
 
 export interface ApiHandlers {
@@ -107,7 +114,7 @@ export interface ApiHandlers {
 
   'api/categories-get': (arg: {
     grouped;
-  }) => Promise<Array<CategoryGroupEntity> | Array<CategoryEntity>>;
+  }) => Promise<Array<CategoryGroupEntity | CategoryEntity>>;
 
   'api/category-groups-get': () => Promise<CategoryGroupEntity[]>;
 
diff --git a/upcoming-release-notes/2567.md b/upcoming-release-notes/2567.md
new file mode 100644
index 000000000..c73a7289c
--- /dev/null
+++ b/upcoming-release-notes/2567.md
@@ -0,0 +1,6 @@
+---
+category: Maintenance
+authors: [twk3]
+---
+
+Improve API output types.
-- 
GitLab