{ "name": "@actual-app/web", "version": "26.7.0", "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/actualbudget/actual.git", "directory": "packages/desktop-client" }, "files": [ "build" ], "imports": { "#browser-preload": { "electron-renderer": "./src/browser-preload.electron.ts", "default": "./src/browser-preload.js" }, "#accounts": "./src/accounts/index.ts", "#budget": "./src/budget/index.ts", "#payees": "./src/payees/index.ts", "#queries": "./src/queries/index.ts", "#redux": "./src/redux/index.ts", "#reports": "./src/reports/index.ts", "#spreadsheet": "./src/spreadsheet/index.ts", "#style": "./src/style/index.ts", "#tags": "./src/tags/index.ts", "#transactions": "./src/transactions/index.ts", "#undo": "./src/undo/index.ts", "#global-events": "./src/global-events.ts", "#enablebanking": "./src/enablebanking.ts", "#gocardless": "./src/gocardless.ts", "#i18n": "./src/i18n.ts", "#mocks": "./src/mocks.tsx", "#mocks/*": "./src/mocks/*.ts", "#components/forms": "./src/components/forms/index.tsx", "#components/banksync": "./src/components/banksync/index.tsx", "#components/banksync/bankSyncUtils": "./src/components/banksync/bankSyncUtils.ts", "#components/banksync/BuiltInProviders": "./src/components/banksync/BuiltInProviders.tsx", "#components/banksync/useBuiltInBankSyncProviders": "./src/components/banksync/useBuiltInBankSyncProviders.ts", "#components/banksync/useBankSyncAccountSettings": "./src/components/banksync/useBankSyncAccountSettings.ts", "#components/budget": "./src/components/budget/index.tsx", "#components/budget/goals/actions": "./src/components/budget/goals/actions.ts", "#components/budget/goals/automationExamples": "./src/components/budget/goals/automationExamples.ts", "#components/budget/goals/cleanupModel": "./src/components/budget/goals/cleanupModel.ts", "#components/budget/goals/constants": "./src/components/budget/goals/constants.ts", "#components/budget/goals/displayTemplateMeta": "./src/components/budget/goals/displayTemplateMeta.ts", "#components/budget/goals/editor/fieldLayout": "./src/components/budget/goals/editor/fieldLayout.ts", "#components/budget/goals/formatMonthLabel": "./src/components/budget/goals/formatMonthLabel.ts", "#components/budget/goals/reducer": "./src/components/budget/goals/reducer.ts", "#components/budget/goals/useBudgetAutomationCategories": "./src/components/budget/goals/useBudgetAutomationCategories.ts", "#components/budget/goals/validateAutomation": "./src/components/budget/goals/validateAutomation.ts", "#components/budget/util": "./src/components/budget/util.ts", "#components/codemirror/autocompleteTabAccept": "./src/components/codemirror/autocompleteTabAccept.ts", "#components/formula/queryTimeFrame": "./src/components/formula/queryTimeFrame.ts", "#components/mobile/utils": "./src/components/mobile/utils.ts", "#components/modals/BudgetAutomationsModal/migrateTemplatesToAutomations": "./src/components/modals/BudgetAutomationsModal/migrateTemplatesToAutomations.ts", "#components/reports/chart-theme": "./src/components/reports/chart-theme.ts", "#components/reports/constants": "./src/components/reports/constants.ts", "#components/reports/disabledList": "./src/components/reports/disabledList.ts", "#components/reports/getCustomTick": "./src/components/reports/getCustomTick.ts", "#components/reports/getLiveRange": "./src/components/reports/getLiveRange.ts", "#components/reports/graphs/showActivity": "./src/components/reports/graphs/showActivity.ts", "#components/reports/graphs/util/computePadding": "./src/components/reports/graphs/util/computePadding.ts", "#components/reports/numberFormatter": "./src/components/reports/numberFormatter.ts", "#components/reports/ReportOptions": "./src/components/reports/ReportOptions.ts", "#components/reports/reportRanges": "./src/components/reports/reportRanges.ts", "#components/reports/setSessionReport": "./src/components/reports/setSessionReport.ts", "#components/reports/spendingAverageRange": "./src/components/reports/spendingAverageRange.ts", "#components/reports/spreadsheets/cash-flow-spreadsheet": "./src/components/reports/spreadsheets/cash-flow-spreadsheet.tsx", "#components/reports/spreadsheets/*": "./src/components/reports/spreadsheets/*.ts", "#components/reports/useDashboardWidgetCopyMenu": "./src/components/reports/useDashboardWidgetCopyMenu.ts", "#components/reports/useReport": "./src/components/reports/useReport.ts", "#components/reports/util": "./src/components/reports/util.ts", "#components/schedules": "./src/components/schedules/index.tsx", "#components/schedules/schedule-edit-utils": "./src/components/schedules/schedule-edit-utils.ts", "#components/transactions/table/utils": "./src/components/transactions/table/utils.ts", "#components/util/accountValidation": "./src/components/util/accountValidation.ts", "#components/util/countries": "./src/components/util/countries.ts", "#components/util/localeToCountry": "./src/components/util/localeToCountry.ts", "#components/*": "./src/components/*.tsx", "#hooks/useCachedSchedules": "./src/hooks/useCachedSchedules.tsx", "#hooks/useDisplayPayee": "./src/hooks/useDisplayPayee.tsx", "#hooks/useDragDrop": "./src/hooks/useDragDrop.tsx", "#hooks/useProperFocus": "./src/hooks/useProperFocus.tsx", "#hooks/useScrollListener": "./src/hooks/useScrollListener.tsx", "#hooks/useSelected": "./src/hooks/useSelected.tsx", "#hooks/useSheetName": "./src/hooks/useSheetName.tsx", "#hooks/useSingleActiveEditForm": "./src/hooks/useSingleActiveEditForm.tsx", "#hooks/useSplitsExpanded": "./src/hooks/useSplitsExpanded.tsx", "#hooks/useSpreadsheet": "./src/hooks/useSpreadsheet.tsx", "#hooks/*": "./src/hooks/*.ts", "#auth/AuthProvider": "./src/auth/AuthProvider.tsx", "#auth/ProtectedRoute": "./src/auth/ProtectedRoute.tsx", "#auth/*": "./src/auth/*.ts", "#contextmenu/*": "./src/contextmenu/*.ts", "#style/theme": "./src/style/theme.tsx", "#style/*": "./src/style/*.ts", "#notes/*": "./src/notes/*.tsx", "#accounts/*": "./src/accounts/*.ts", "#app/*": "./src/app/*.ts", "#budget/*": "./src/budget/*.ts", "#budgetfiles/*": "./src/budgetfiles/*.ts", "#modals/*": "./src/modals/*.ts", "#notifications/*": "./src/notifications/*.ts", "#payees/*": "./src/payees/*.ts", "#prefs/*": "./src/prefs/*.ts", "#queries/*": "./src/queries/*.ts", "#redux/*": "./src/redux/*.ts", "#reports/*": "./src/reports/*.ts", "#spreadsheet/*": "./src/spreadsheet/*.ts", "#tags/*": "./src/tags/*.ts", "#transactions/*": "./src/transactions/*.ts", "#undo/*": "./src/undo/*.ts", "#users/*": "./src/users/*.ts", "#util/*": "./src/util/*.ts" }, "scripts": { "start": "cross-env PORT=3001 vite", "start:browser": "cross-env ./bin/watch-browser", "watch": "cross-env BROWSER=none yarn start", "build": "vite build", "build:browser": "vite build --mode=browser", "generate:i18n": "i18next", "test": "vitest --run", "validate:theme-catalog": "node --experimental-strip-types bin/validate-theme-catalog.mts", "e2e": "npx playwright test --browser=chromium", "vrt": "cross-env VRT=true npx playwright test --browser=chromium", "playwright": "playwright", "typecheck": "tsgo -b && tsc-strict" }, "devDependencies": { "@actual-app/components": "workspace:*", "@actual-app/core": "workspace:*", "@babel/core": "^8.0.1", "@codemirror/autocomplete": "^6.20.3", "@codemirror/language": "^6.12.4", "@codemirror/state": "^6.7.1", "@codemirror/view": "^6.43.6", "@emotion/css": "^11.13.5", "@fontsource-variable/inter": "^5.2.8", "@fontsource/redacted-script": "^5.2.8", "@internationalized/date": "^3.12.2", "@lezer/highlight": "^1.2.3", "@playwright/test": "1.61.1", "@react-aria/interactions": "^3.28.1", "@reduxjs/toolkit": "^2.12.0", "@rolldown/plugin-babel": "~0.2.3", "@rollup/plugin-inject": "^5.0.5", "@tanstack/react-query": "^5.101.2", "@testing-library/dom": "10.4.1", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "16.3.2", "@testing-library/user-event": "14.6.1", "@types/react": "^19.2.17", "@types/react-dom": "^19.2.3", "@typescript/native-preview": "beta", "@uiw/react-codemirror": "^4.25.11", "@use-gesture/react": "^10.3.1", "@vitejs/plugin-basic-ssl": "^2.3.0", "@vitejs/plugin-react": "^6.0.3", "auto-text-size": "^0.2.3", "babel-plugin-react-compiler": "^1.0.0", "cmdk": "^1.1.1", "cross-env": "^10.1.0", "csv-stringify": "^6.8.1", "date-fns": "^4.4.0", "downshift": "9.4.0", "es-toolkit": "^1.49.0", "fzf": "^0.5.2", "html-to-image": "^1.11.13", "hyperformula": "^3.3.0", "i18next": "^26.3.6", "i18next-parser": "^9.4.0", "i18next-resources-to-backend": "^1.2.1", "jsdom": "^29.1.1", "lru-cache": "^11.5.2", "mdast-util-newline-to-break": "^2.0.0", "plugins-service": "workspace:*", "re-resizable": "^6.11.2", "react": "19.2.7", "react-aria": "^3.50.0", "react-aria-components": "^1.19.0", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", "react-dom": "19.2.7", "react-error-boundary": "^6.1.2", "react-grid-layout": "^2.2.3", "react-hotkeys-hook": "^5.3.3", "react-i18next": "^17.0.10", "react-markdown": "^10.1.0", "react-redux": "^9.3.0", "react-router": "8.2.0", "react-simple-pull-to-refresh": "^1.3.4", "react-spring": "^10.0.4", "react-swipeable": "^7.0.2", "react-virtualized-auto-sizer": "^2.0.3", "recharts": "^3.9.2", "rehype-external-links": "^3.0.0", "remark-gfm": "^4.0.1", "rolldown": "^1.2.0", "rollup-plugin-visualizer": "^7.0.1", "sass": "^1.101.0", "typescript-strict-plugin": "^2.4.4", "usehooks-ts": "^3.1.1", "uuid": "^14.0.1", "vite": "^8.1.5", "vite-plugin-pwa": "^1.3.0", "vitest": "^4.1.10" } }