Files
actual/packages/api/package.json
Claude 332db28e2e [AI] Add browser-compatible build for @actual-app/api
The API package was previously Node.js-only due to its dependency on
better-sqlite3 and Node.js fs/path modules. This adds a browser build
that uses loot-core's existing browser platform implementations
(sql.js/WASM, IndexedDB, absurd-sql) instead.

Changes:
- Add index.web.ts: browser entry point (no Node.js version check or
  node-fetch polyfill)
- Add vite.browser.config.ts: browser-targeted Vite build that resolves
  to browser platform files (index.ts) instead of Node.js ones
  (index.api.ts -> index.electron.ts)
- Update package.json: conditional exports (browser vs default/node),
  module field, build:browser script
- Update tsconfig.json: exclude new config file from type checking

The browser build outputs dist/browser.js (ESM) alongside the existing
dist/index.js (CJS/Node). Bundlers that support the "browser" condition
in package.json exports will automatically use the browser build.

https://claude.ai/code/session_01MnxRXLNjqXrVb5CdsC85Fb
2026-03-20 21:27:31 +00:00

68 lines
1.6 KiB
JSON

{
"name": "@actual-app/api",
"version": "26.3.0",
"description": "An API for Actual",
"license": "MIT",
"files": [
"@types",
"dist"
],
"main": "dist/index.js",
"module": "dist/browser.js",
"types": "@types/index.d.ts",
"exports": {
".": {
"development": "./index.ts",
"browser": {
"types": "./@types/index.d.ts",
"default": "./dist/browser.js"
},
"default": {
"types": "./@types/index.d.ts",
"default": "./dist/index.js"
}
}
},
"publishConfig": {
"exports": {
".": {
"browser": {
"types": "./@types/index.d.ts",
"default": "./dist/browser.js"
},
"default": {
"types": "./@types/index.d.ts",
"default": "./dist/index.js"
}
}
}
},
"scripts": {
"build": "vite build && vite build --config vite.browser.config.ts",
"build:node": "vite build",
"build:browser": "vite build --config vite.browser.config.ts",
"test": "vitest --run",
"typecheck": "tsgo -b && tsc-strict"
},
"dependencies": {
"@actual-app/core": "workspace:*",
"@actual-app/crdt": "workspace:*",
"better-sqlite3": "^12.6.2",
"compare-versions": "^6.1.1",
"node-fetch": "^3.3.2",
"uuid": "^13.0.0"
},
"devDependencies": {
"@typescript/native-preview": "^7.0.0-dev.20260309.1",
"rollup-plugin-visualizer": "^6.0.11",
"typescript-strict-plugin": "^2.4.4",
"vite": "^8.0.0",
"vite-plugin-dts": "^4.5.4",
"vite-plugin-peggy-loader": "^2.0.1",
"vitest": "^4.1.0"
},
"engines": {
"node": ">=20"
}
}