Files
actual/packages/loot-core/package.json
T
Matiss Janis AboltinsandClaude Opus 4.8 60c5d9b993 [AI] DX: replace ts-node with Node native TypeScript execution (#8304)
* [AI] Replace ts-node with Node native TypeScript execution

Node 22.18+ runs TypeScript files directly via type stripping, so the
ts-node dependency is no longer needed for the repo's helper scripts.

- Run bin/ and loot-core pack-hook scripts with `node` instead of `ts-node`
- Rename bin/*.ts scripts to .mts (unambiguous ESM, runs warning-free)
- ESM-ify validate-publish-imports: __dirname / require.main via import.meta
- Drop ts-node devDependency and the tsconfig ts-node override block
- Bump engines.node to >=22.18.0 (first release with stable type stripping)

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_019d6S7BWQdmtAcYg89WuAVd

* [AI] Use .mts import specifier and simplify release note

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_019d6S7BWQdmtAcYg89WuAVd

* [AI] Bump .nvmrc to v22.18.0 to match engines floor

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_019d6S7BWQdmtAcYg89WuAVd

---------

Co-authored-by: Claude <[email protected]>
2026-06-22 21:41:00 +00:00

236 lines
9.5 KiB
JSON

{
"name": "@actual-app/core",
"version": "26.6.0",
"description": "",
"license": "ISC",
"repository": {
"type": "git",
"url": "git+https://github.com/actualbudget/actual.git",
"directory": "packages/loot-core"
},
"files": [
"src",
"@types",
"migrations",
"typings",
"default-db.sqlite",
"!src/**/*.test.ts",
"!src/**/__tests__/**",
"!src/**/__snapshots__/**",
"!src/**/__mocks__/**",
"!@types/**/*.test.d.ts",
"!@types/**/*.test.d.ts.map",
"!@types/**/__tests__/**",
"!@types/**/__mocks__/**"
],
"imports": {
"#platform/server/asyncStorage": {
"electron": "./src/platform/server/asyncStorage/index.electron.ts",
"api": "./src/platform/server/asyncStorage/index.api.ts",
"default": "./src/platform/server/asyncStorage/index.ts"
},
"#platform/server/connection": {
"electron": "./src/platform/server/connection/index.electron.ts",
"api": "./src/platform/server/connection/index.api.ts",
"default": "./src/platform/server/connection/index.ts"
},
"#platform/server/fetch": {
"electron": "./src/platform/server/fetch/index.electron.ts",
"api": "./src/platform/server/fetch/index.api.ts",
"default": "./src/platform/server/fetch/index.ts"
},
"#platform/server/fs": {
"electron": "./src/platform/server/fs/index.electron.ts",
"api": "./src/platform/server/fs/index.api.ts",
"default": "./src/platform/server/fs/index.ts"
},
"#platform/server/fs/path-join": {
"electron": "./src/platform/server/fs/path-join.electron.ts",
"api": "./src/platform/server/fs/path-join.api.ts",
"default": "./src/platform/server/fs/path-join.ts"
},
"#platform/server/sqlite": {
"electron": "./src/platform/server/sqlite/index.electron.ts",
"api": "./src/platform/server/sqlite/index.api.ts",
"default": "./src/platform/server/sqlite/index.ts"
},
"#platform/client/connection": {
"electron-renderer": "./src/platform/client/connection/index.electron.ts",
"default": "./src/platform/client/connection/index.ts"
},
"#server/encryption/encryption-internals": {
"electron": "./src/server/encryption/encryption-internals.electron.ts",
"api": "./src/server/encryption/encryption-internals.api.ts",
"default": "./src/server/encryption/encryption-internals.ts"
},
"#shared/platform": {
"electron": "./src/shared/platform.electron.ts",
"api": "./src/shared/platform.api.ts",
"default": "./src/shared/platform.ts"
},
"#mocks": "./src/mocks/index.ts",
"#platform/client/undo": "./src/platform/client/undo/index.ts",
"#platform/exceptions": "./src/platform/exceptions/index.ts",
"#platform/server/indexeddb": "./src/platform/server/indexeddb/index.ts",
"#platform/server/log": "./src/platform/server/log/index.ts",
"#server/aql": "./src/server/aql/index.ts",
"#server/db": "./src/server/db/index.ts",
"#server/encryption": "./src/server/encryption/index.ts",
"#server/importers": "./src/server/importers/index.ts",
"#server/rules": "./src/server/rules/index.ts",
"#server/sync": "./src/server/sync/index.ts",
"#server/transactions": "./src/server/transactions/index.ts",
"#types/models": "./src/types/models/index.ts",
"#platform/client/*": "./src/platform/client/*.ts",
"#platform/server/*": "./src/platform/server/*.ts",
"#platform/*": "./src/platform/*.ts",
"#server/*": "./src/server/*.ts",
"#shared/environment": {
"electron": "./src/shared/environment.ts",
"api": "./src/shared/environment.ts",
"default": "./src/shared/environment.browser.ts"
},
"#shared/*": "./src/shared/*.ts",
"#types/*": "./src/types/*.ts",
"#mocks/*": "./src/mocks/*.ts",
"#migrations/*": "./migrations/*.js",
"#*": "./src/*.ts"
},
"exports": {
"./client/accounts/*": "./src/client/accounts/*.ts",
"./client/app/*": "./src/client/app/*.ts",
"./client/budgets/*": "./src/client/budgets/*.ts",
"./client/data-hooks/schedules": "./src/client/data-hooks/schedules.tsx",
"./client/data-hooks/*": "./src/client/data-hooks/*.ts",
"./client/modals/*": "./src/client/modals/*.ts",
"./client/notifications/*": "./src/client/notifications/*.ts",
"./client/prefs/*": "./src/client/prefs/*.ts",
"./client/queries/*": "./src/client/queries/*.ts",
"./client/redux": "./src/client/redux/index.ts",
"./client/store": "./src/client/store/index.ts",
"./client/store/mock": "./src/client/store/mock.ts",
"./client/users/*": "./src/client/users/*.ts",
"./client/queries": "./src/client/queries.ts",
"./client/query-helpers": "./src/client/query-helpers.ts",
"./client/query-hooks": "./src/client/query-hooks.ts",
"./client/reports": "./src/client/reports.ts",
"./client/shared-listeners": "./src/client/shared-listeners.ts",
"./client/SpreadsheetProvider": "./src/client/SpreadsheetProvider.tsx",
"./client/transfer": "./src/client/transfer.ts",
"./client/undo": "./src/client/undo.ts",
"./mocks": "./src/mocks/index.ts",
"./platform/client/backend-worker": "./src/platform/client/backend-worker.ts",
"./platform/client/browser-preload": "./src/platform/client/browser-preload/index.ts",
"./platform/client/browser-server/coordinator": "./src/platform/client/browser-server/coordinator.ts",
"./platform/client/connection": {
"electron-renderer": "./src/platform/client/connection/index.electron.ts",
"api": "./src/platform/client/connection/index.api.ts",
"default": "./src/platform/client/connection/index.ts"
},
"./platform/client/undo": "./src/platform/client/undo/index.ts",
"./platform/exceptions": "./src/platform/exceptions/index.ts",
"./platform/server/asyncStorage": {
"electron": "./src/platform/server/asyncStorage/index.electron.ts",
"api": "./src/platform/server/asyncStorage/index.api.ts",
"default": "./src/platform/server/asyncStorage/index.ts"
},
"./platform/server/connection": {
"electron": "./src/platform/server/connection/index.electron.ts",
"api": "./src/platform/server/connection/index.api.ts",
"default": "./src/platform/server/connection/index.ts"
},
"./platform/server/fetch": {
"electron": "./src/platform/server/fetch/index.electron.ts",
"api": "./src/platform/server/fetch/index.api.ts",
"default": "./src/platform/server/fetch/index.ts"
},
"./platform/server/fs": {
"electron": "./src/platform/server/fs/index.electron.ts",
"api": "./src/platform/server/fs/index.api.ts",
"default": "./src/platform/server/fs/index.ts"
},
"./platform/server/log": "./src/platform/server/log/index.ts",
"./platform/server/sqlite": {
"electron": "./src/platform/server/sqlite/index.electron.ts",
"api": "./src/platform/server/sqlite/index.api.ts",
"default": "./src/platform/server/sqlite/index.ts"
},
"./server/budget/types/*": "./src/server/budget/types/*.d.ts",
"./server/*": "./src/server/*.ts",
"./shared/platform": {
"electron": "./src/shared/platform.electron.ts",
"api": "./src/shared/platform.api.ts",
"default": "./src/shared/platform.ts"
},
"./shared/environment": {
"electron": "./src/shared/environment.ts",
"api": "./src/shared/environment.ts",
"default": "./src/shared/environment.browser.ts"
},
"./shared/*": "./src/shared/*.ts",
"./types/models": "./src/types/models/index.ts",
"./types/*": "./src/types/*.ts",
"./typings/*": "./typings/*.ts",
"./lib-dist/electron/bundle.desktop.js": "./lib-dist/electron/bundle.desktop.js"
},
"scripts": {
"build:node": "cross-env NODE_ENV=production vite build --config ./vite.desktop.config.mts",
"watch:node": "cross-env NODE_ENV=development vite build --config ./vite.desktop.config.mts --watch",
"test": "npm-run-all -cp 'test:*'",
"test:node": "ENV=node vitest --run",
"test:web": "ENV=web vitest --run -c vitest.web.config.ts",
"typecheck": "tsgo -b && tsc-strict",
"build": "tsgo -b",
"prepack": "yarn build && node scripts/add-types-conditions.mts",
"postpack": "node scripts/restore-package-json.mts"
},
"dependencies": {
"@jlongster/sql.js": "^1.6.7",
"@rschedule/core": "^1.5.0",
"@rschedule/standard-date-adapter": "^1.5.0",
"absurd-sql": "0.0.54",
"adm-zip": "^0.5.17",
"better-sqlite3": "^12.10.0",
"csv-parse": "^6.2.1",
"csv-stringify": "^6.7.0",
"date-fns": "^4.4.0",
"es-toolkit": "^1.47.1",
"handlebars": "^4.7.9",
"hyperformula": "^3.3.0",
"lru-cache": "^11.5.1",
"mitt": "^3.0.1",
"uuid": "^14.0.1",
"xml2js": "^0.6.2"
},
"devDependencies": {
"@actual-app/crdt": "workspace:*",
"@actual-app/vite-plugin-peggy": "workspace:*",
"@types/adm-zip": "^0.5.8",
"@types/better-sqlite3": "^7.6.13",
"@types/jlongster__sql.js": "npm:@types/sql.js@latest",
"@types/node": "^22.19.21",
"@typescript/native-preview": "beta",
"assert": "^2.1.0",
"browserify-zlib": "^0.2.0",
"buffer": "^6.0.3",
"cross-env": "^10.1.0",
"crypto-browserify": "^3.12.1",
"fake-indexeddb": "^6.2.5",
"fast-check": "^4.8.0",
"jest-diff": "^30.4.1",
"jsverify": "^0.8.4",
"mockdate": "^3.0.5",
"npm-run-all": "^4.1.5",
"path-browserify": "^1.0.1",
"rollup-plugin-visualizer": "^7.0.1",
"stream-browserify": "^3.0.0",
"timers-browserify": "^2.0.12",
"typescript-strict-plugin": "^2.4.4",
"util": "^0.12.5",
"vite": "^8.0.16",
"vite-plugin-node-polyfills": "^0.28.0",
"vitest": "^4.1.8",
"yargs": "^18.0.0"
}
}