From 7d4e28041c3c056f2d19a377ee88080dc62a7bf7 Mon Sep 17 00:00:00 2001 From: Matiss Janis Aboltins Date: Wed, 22 Apr 2026 11:45:54 +0100 Subject: [PATCH] [AI] Export API models as separate entry point (#7581) * [AI] Expose API entity types via @actual-app/api/models Adds a new `./models` subpath export on `@actual-app/api` that re-exports the public API entity types (`APIAccountEntity`, `APICategoryEntity`, `APICategoryGroupEntity`, `APIFileEntity`, `APIPayeeEntity`, `APIScheduleEntity`, `APITagEntity`, `AmountOPType`) from `@actual-app/core/server/api-models`. Consumers can now import these types from a stable public entry point instead of reaching into core internals: import type { APICategoryEntity, APICategoryGroupEntity, } from '@actual-app/api/models'; Uses `export type *` so the compiled `dist/models.js` is empty and no runtime code is added. The Vite lib config is expanded to a multi-entry map (`index`, `models`) so both bundles are produced, and tsgo already emits `@types/models.d.ts` via the existing `declarationDir` setup. * Add release notes for PR #7581 * Modify release notes for API model exports Updated category from 'Features' to 'Enhancements' and added API export details. --------- Co-authored-by: Claude Co-authored-by: github-actions[bot] --- packages/api/models.ts | 1 + packages/api/package.json | 9 +++++++++ packages/api/vite.config.mts | 7 +++++-- upcoming-release-notes/7581.md | 6 ++++++ 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 packages/api/models.ts create mode 100644 upcoming-release-notes/7581.md diff --git a/packages/api/models.ts b/packages/api/models.ts new file mode 100644 index 0000000000..53b3d98e44 --- /dev/null +++ b/packages/api/models.ts @@ -0,0 +1 @@ +export type * from '@actual-app/core/server/api-models'; diff --git a/packages/api/package.json b/packages/api/package.json index b5bec9c266..932ebcc97d 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -19,6 +19,11 @@ "types": "./@types/index.d.ts", "development": "./index.ts", "default": "./dist/index.js" + }, + "./models": { + "types": "./@types/models.d.ts", + "development": "./models.ts", + "default": "./dist/models.js" } }, "publishConfig": { @@ -26,6 +31,10 @@ ".": { "types": "./@types/index.d.ts", "default": "./dist/index.js" + }, + "./models": { + "types": "./@types/models.d.ts", + "default": "./dist/models.js" } } }, diff --git a/packages/api/vite.config.mts b/packages/api/vite.config.mts index 433c5c1059..5614095c6f 100644 --- a/packages/api/vite.config.mts +++ b/packages/api/vite.config.mts @@ -66,9 +66,12 @@ export default defineConfig({ emptyOutDir: true, sourcemap: true, lib: { - entry: path.resolve(__dirname, 'index.ts'), + entry: { + index: path.resolve(__dirname, 'index.ts'), + models: path.resolve(__dirname, 'models.ts'), + }, formats: ['cjs'], - fileName: () => 'index.js', + fileName: (_format, entryName) => `${entryName}.js`, }, }, plugins: [ diff --git a/upcoming-release-notes/7581.md b/upcoming-release-notes/7581.md new file mode 100644 index 0000000000..996ea4629f --- /dev/null +++ b/upcoming-release-notes/7581.md @@ -0,0 +1,6 @@ +--- +category: Enhancements +authors: [MatissJanis] +--- + +API: export model types via "@actual-app/api/models".