mirror of
https://github.com/actualbudget/actual.git
synced 2026-05-07 12:28:57 -05:00
Extracts the WorkerBridge class + the Worker/SharedWorker transport
selector out of packages/desktop-client/src/browser-preload.js and into
a new loot-core module at packages/loot-core/src/platform/client/
browser-preload/. desktop-client's preload shrinks to a thin shell that
only wires its PWA service worker, package.json version, SharedWorker
factory, and the global.Actual shim — everything else is a one-line
startBrowserBackend({ ... }) call into loot-core.
The api package still uses the lighter-weight createBackendWorker entry
in the sibling loot-core module; both packages now consume the worker-
bootstrap primitives from loot-core rather than duplicating them.
Verified end-to-end in the browser via playwright — the api playground
still loads, downloads the budget, and renders accounts+transactions
identically.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
225 lines
9.3 KiB
JSON
225 lines
9.3 KiB
JSON
{
|
|
"name": "@actual-app/core",
|
|
"version": "26.4.0",
|
|
"description": "",
|
|
"license": "ISC",
|
|
"files": [
|
|
"src",
|
|
"@types",
|
|
"migrations",
|
|
"typings",
|
|
"default-db.sqlite",
|
|
"!src/**/*.test.ts",
|
|
"!src/**/__tests__/**",
|
|
"!src/**/__snapshots__/**",
|
|
"!src/**/__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/backend-worker": "./src/platform/client/backend-worker/index.ts",
|
|
"#platform/client/browser-preload": "./src/platform/client/browser-preload/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/*": "./src/shared/*.ts",
|
|
"#types/*": "./src/types/*.ts",
|
|
"#mocks/*": "./src/mocks/*.ts",
|
|
"#*": "./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/index.ts",
|
|
"./platform/client/browser-preload": "./src/platform/client/browser-preload/index.ts",
|
|
"./platform/client/connection": {
|
|
"electron-renderer": "./src/platform/client/connection/index.electron.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/*": "./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",
|
|
"build:browser": "cross-env NODE_ENV=production ./bin/build-browser",
|
|
"watch:browser": "cross-env NODE_ENV=development ./bin/build-browser",
|
|
"generate:i18n": "i18next",
|
|
"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 && ts-node scripts/add-types-conditions.mts",
|
|
"postpack": "ts-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.8.0",
|
|
"csv-parse": "^6.2.1",
|
|
"csv-stringify": "^6.7.0",
|
|
"date-fns": "^4.1.0",
|
|
"google-protobuf": "^3.21.4",
|
|
"handlebars": "^4.7.9",
|
|
"hyperformula": "^3.2.0",
|
|
"lodash": "^4.18.1",
|
|
"lru-cache": "^11.2.7",
|
|
"memoize-one": "^6.0.0",
|
|
"mitt": "^3.0.1",
|
|
"promise-retry": "^2.0.1",
|
|
"typescript-strict-plugin": "^2.4.4",
|
|
"ua-parser-js": "^2.0.9",
|
|
"xml2js": "^0.6.2"
|
|
},
|
|
"devDependencies": {
|
|
"@actual-app/crdt": "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.17",
|
|
"@typescript/native-preview": "^7.0.0-dev.20260404.1",
|
|
"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.6.0",
|
|
"i18next": "^25.10.10",
|
|
"jest-diff": "^30.3.0",
|
|
"jsverify": "^0.8.4",
|
|
"mockdate": "^3.0.5",
|
|
"npm-run-all": "^4.1.5",
|
|
"path-browserify": "^1.0.1",
|
|
"peggy": "5.1.0",
|
|
"rollup-plugin-visualizer": "^7.0.1",
|
|
"stream-browserify": "^3.0.0",
|
|
"timers-browserify": "^2.0.12",
|
|
"ts-node": "^10.9.2",
|
|
"util": "^0.12.5",
|
|
"vite": "^8.0.5",
|
|
"vite-plugin-node-polyfills": "^0.26.0",
|
|
"vite-plugin-peggy-loader": "^2.0.1",
|
|
"vitest": "^4.1.2",
|
|
"yargs": "^18.0.0"
|
|
}
|
|
}
|