mirror of
https://github.com/actualbudget/actual.git
synced 2026-10-12 02:10:19 +00:00
⬆️ mid-month dependency bump (#7506)
* typescript (^5.9.3 -> ^6.0.2) * eslint-plugin-perfectionist (^5.6.0 → ^5.8.0) * @types/node (^22.19.15 → ^22.19.17) * @typescript/native-preview (^7.0.0-dev.20260309.1 → ^7.0.0-dev.20260404.1) * eslint (^9.39.3 → ^9.39.4) * lage (^2.14.19 → ^2.15.5) * lint-staged (^16.3.2 → ^16.4.0) * minimatch (^10.2.4 → ^10.2.5) * vitest (^4.1.0 → ^4.1.2) * better-sqlite3 (^12.6.2 → ^12.8.0) * commander (^13.0.0 → ^13.1.0) * cosmiconfig (^9.0.0 → ^9.0.1) * @chromatic-com/storybook (^5.0.1 → ^5.1.1) * @storybook/addon-a11y (^10.2.16 → ^10.3.4) * @storybook/addon-docs (^10.2.16 → ^10.3.4) * @storybook/react-vite (^10.2.16 → ^10.3.4) * eslint-plugin-storybook (^10.2.16 → ^10.3.4) * storybook (^10.2.16 → ^10.3.4) * @codemirror/language (^6.12.2 → ^6.12.3) * @react-aria/interactions (^3.27.0 → ^3.27.1) * @swc/core (^1.15.18 → ^1.15.24) * @swc/helpers (^0.5.19 → ^0.5.21) * @tanstack/react-query (^5.90.21 → ^5.96.2) * @uiw/react-codemirror (^4.25.7 → ^4.25.9) * @vitejs/plugin-basic-ssl (^2.2.0 → ^2.3.0) * i18next (^25.8.14 → ^25.10.10) * lru-cache (^11.2.6 → ^11.2.7) * react-grid-layout (^2.2.2 → ^2.2.3) * react-i18next (^16.5.6 → ^16.6.6) * rolldown (^1.0.0-rc.12 → ^1.0.0-rc.13) * sass (^1.97.3 → ^1.99.0) * adm-zip (^0.5.16 → ^0.5.17) * csv-parse (^6.1.0 → ^6.2.1) * csv-stringify (^6.6.0 → ^6.7.0) * jest-diff (^30.2.0 → ^30.3.0) * express-rate-limit (^8.3.0 → ^8.3.2) * upgrade yarn to 4.13.0 * react-aria-components (^1.15.1 → ^1.16.0) * @vitejs/plugin-react (^6.0.0 → ^6.0.1) * @codemirror/state (^6.5.4 → ^6.6.0), @codemirror/view (^6.38.7 → ^6.41.0) * react-aria (^3.46.0 → ^3.47.0) * react-error-boundary (^6.0.3 → ^6.1.1) * recharts (^3.7.0 → ^3.8.1) * fast-check (4.5.3 → ^4.6.0) * rollup-plugin-visualizer (^6.0.11 → ^7.0.1) * commander (^13.1.0 → ^14.0.3) * note * coderabbit feedback, and a test for good measure * typescript (^5.9.3 -> ^6.0.2) * @playwright/test (1.58.2 -> 1.59.1) * yarn dedupe
This commit is contained in:
@@ -30,7 +30,7 @@ jobs:
|
||||
matrix:
|
||||
shard: [1, 2, 3, 4, 5]
|
||||
container:
|
||||
image: mcr.microsoft.com/playwright:v1.58.2-jammy
|
||||
image: mcr.microsoft.com/playwright:v1.59.1-jammy
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- name: Set up environment
|
||||
@@ -53,7 +53,7 @@ jobs:
|
||||
name: Functional Desktop App
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: mcr.microsoft.com/playwright:v1.58.2-jammy
|
||||
image: mcr.microsoft.com/playwright:v1.59.1-jammy
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- name: Set up environment
|
||||
@@ -87,7 +87,7 @@ jobs:
|
||||
matrix:
|
||||
shard: [1, 2, 3, 4, 5]
|
||||
container:
|
||||
image: mcr.microsoft.com/playwright:v1.58.2-jammy
|
||||
image: mcr.microsoft.com/playwright:v1.59.1-jammy
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- name: Set up environment
|
||||
@@ -110,7 +110,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ !cancelled() }}
|
||||
container:
|
||||
image: mcr.microsoft.com/playwright:v1.58.2-jammy
|
||||
image: mcr.microsoft.com/playwright:v1.59.1-jammy
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- name: Set up environment
|
||||
|
||||
@@ -44,7 +44,7 @@ jobs:
|
||||
github.event.issue.pull_request &&
|
||||
startsWith(github.event.comment.body, '/update-vrt')
|
||||
container:
|
||||
image: mcr.microsoft.com/playwright:v1.58.2-jammy
|
||||
image: mcr.microsoft.com/playwright:v1.59.1-jammy
|
||||
steps:
|
||||
- name: Get PR details
|
||||
id: pr
|
||||
|
||||
Vendored
-942
File diff suppressed because one or more lines are too long
+940
File diff suppressed because one or more lines are too long
+1
-1
@@ -6,4 +6,4 @@ enableTransparentWorkspaces: false
|
||||
|
||||
nodeLinker: node-modules
|
||||
|
||||
yarnPath: .yarn/releases/yarn-4.10.3.cjs
|
||||
yarnPath: .yarn/releases/yarn-4.13.0.cjs
|
||||
|
||||
+1
-1
@@ -28,5 +28,5 @@ echo "Running VRT tests with the following parameters:"
|
||||
echo "E2E_START_URL: $E2E_START_URL"
|
||||
echo "VRT_ARGS: $VRT_ARGS"
|
||||
|
||||
MSYS_NO_PATHCONV=1 docker run --rm --network host -v "$(pwd)":/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.58.2-jammy /bin/bash \
|
||||
MSYS_NO_PATHCONV=1 docker run --rm --network host -v "$(pwd)":/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.59.1-jammy /bin/bash \
|
||||
-c "E2E_START_URL=$E2E_START_URL yarn vrt $VRT_ARGS"
|
||||
|
||||
+10
-10
@@ -65,19 +65,19 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@octokit/rest": "^22.0.1",
|
||||
"@types/node": "^22.19.15",
|
||||
"@types/node": "^22.19.17",
|
||||
"@types/prompts": "^2.4.9",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260309.1",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260404.1",
|
||||
"@yarnpkg/types": "^4.0.1",
|
||||
"cross-env": "^10.1.0",
|
||||
"eslint": "^9.39.3",
|
||||
"eslint-plugin-perfectionist": "^5.6.0",
|
||||
"eslint": "^9.39.4",
|
||||
"eslint-plugin-perfectionist": "^5.8.0",
|
||||
"eslint-plugin-typescript-paths": "^0.0.33",
|
||||
"html-to-image": "^1.11.13",
|
||||
"husky": "^9.1.7",
|
||||
"lage": "^2.14.19",
|
||||
"lint-staged": "^16.3.2",
|
||||
"minimatch": "^10.2.4",
|
||||
"lage": "^2.15.5",
|
||||
"lint-staged": "^16.4.0",
|
||||
"minimatch": "^10.2.5",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"oxfmt": "^0.44.0",
|
||||
"oxlint": "^1.59.0",
|
||||
@@ -85,8 +85,8 @@
|
||||
"p-limit": "^7.3.0",
|
||||
"prompts": "^2.4.2",
|
||||
"ts-node": "^10.9.2",
|
||||
"typescript": "^5.9.3",
|
||||
"vitest": "^4.1.0"
|
||||
"typescript": "^6.0.2",
|
||||
"vitest": "^4.1.2"
|
||||
},
|
||||
"resolutions": {
|
||||
"adm-zip": "patch:adm-zip@npm%3A0.5.16#~/.yarn/patches/adm-zip-npm-0.5.16-4556fea098.patch",
|
||||
@@ -118,5 +118,5 @@
|
||||
"node": ">=22",
|
||||
"yarn": "^4.9.1"
|
||||
},
|
||||
"packageManager": "[email protected]0.3"
|
||||
"packageManager": "[email protected]3.0"
|
||||
}
|
||||
|
||||
@@ -32,17 +32,17 @@
|
||||
"dependencies": {
|
||||
"@actual-app/core": "workspace:*",
|
||||
"@actual-app/crdt": "workspace:*",
|
||||
"better-sqlite3": "^12.6.2",
|
||||
"better-sqlite3": "^12.8.0",
|
||||
"compare-versions": "^6.1.1",
|
||||
"uuid": "^13.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260309.1",
|
||||
"rollup-plugin-visualizer": "^6.0.11",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260404.1",
|
||||
"rollup-plugin-visualizer": "^7.0.1",
|
||||
"typescript-strict-plugin": "^2.4.4",
|
||||
"vite": "^8.0.5",
|
||||
"vite-plugin-peggy-loader": "^2.0.1",
|
||||
"vitest": "^4.1.0"
|
||||
"vitest": "^4.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
|
||||
@@ -19,5 +19,12 @@
|
||||
},
|
||||
"references": [{ "path": "../crdt" }, { "path": "../loot-core" }],
|
||||
"include": ["."],
|
||||
"exclude": ["**/node_modules/*", "dist", "@types", "*.test.ts", "*.config.ts"]
|
||||
"exclude": [
|
||||
"**/node_modules/*",
|
||||
"dist",
|
||||
"@types",
|
||||
"*.test.ts",
|
||||
"*.config.ts",
|
||||
"*.config.mts"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@octokit/rest": "^22.0.1",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260309.1",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260404.1",
|
||||
"extensionless": "^2.0.6",
|
||||
"gray-matter": "^4.0.3",
|
||||
"listify": "^1.0.3",
|
||||
"vitest": "^4.1.0"
|
||||
"vitest": "^4.1.2"
|
||||
},
|
||||
"extensionless": {
|
||||
"lookFor": [
|
||||
|
||||
@@ -27,15 +27,15 @@
|
||||
"dependencies": {
|
||||
"@actual-app/api": "workspace:*",
|
||||
"cli-table3": "^0.6.5",
|
||||
"commander": "^13.0.0",
|
||||
"cosmiconfig": "^9.0.0"
|
||||
"commander": "^14.0.3",
|
||||
"cosmiconfig": "^9.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.19.15",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260309.1",
|
||||
"rollup-plugin-visualizer": "^6.0.11",
|
||||
"@types/node": "^22.19.17",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260404.1",
|
||||
"rollup-plugin-visualizer": "^7.0.1",
|
||||
"vite": "^8.0.5",
|
||||
"vitest": "^4.1.0"
|
||||
"vitest": "^4.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=22"
|
||||
|
||||
@@ -47,25 +47,25 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@emotion/css": "^11.13.5",
|
||||
"react-aria-components": "^1.15.1",
|
||||
"react-aria-components": "^1.16.0",
|
||||
"usehooks-ts": "^3.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@chromatic-com/storybook": "^5.0.1",
|
||||
"@storybook/addon-a11y": "^10.2.16",
|
||||
"@storybook/addon-docs": "^10.2.16",
|
||||
"@storybook/react-vite": "^10.2.16",
|
||||
"@chromatic-com/storybook": "^5.1.1",
|
||||
"@storybook/addon-a11y": "^10.3.4",
|
||||
"@storybook/addon-docs": "^10.3.4",
|
||||
"@storybook/react-vite": "^10.3.4",
|
||||
"@svgr/babel-plugin-add-jsx-attribute": "^8.0.0",
|
||||
"@svgr/cli": "^8.1.0",
|
||||
"@types/react": "^19.2.14",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260309.1",
|
||||
"@vitejs/plugin-react": "^6.0.0",
|
||||
"eslint-plugin-storybook": "^10.2.16",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260404.1",
|
||||
"@vitejs/plugin-react": "^6.0.1",
|
||||
"eslint-plugin-storybook": "^10.3.4",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
"storybook": "^10.2.16",
|
||||
"storybook": "^10.3.4",
|
||||
"vite": "^8.0.5",
|
||||
"vitest": "^4.1.0"
|
||||
"vitest": "^4.1.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=19.2",
|
||||
|
||||
@@ -33,9 +33,9 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/google-protobuf": "3.15.12",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260309.1",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260404.1",
|
||||
"protoc-gen-js": "3.21.4-4",
|
||||
"ts-protoc-gen": "0.15.0",
|
||||
"vitest": "^4.1.0"
|
||||
"vitest": "^4.1.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,10 +65,10 @@ Run manually:
|
||||
|
||||
```sh
|
||||
# Run docker container
|
||||
docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.58.2-jammy /bin/bash
|
||||
docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.59.1-jammy /bin/bash
|
||||
|
||||
# If you receive an error such as "docker: invalid reference format", please instead use the following command:
|
||||
docker run --rm --network host -v ${pwd}:/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.58.2-jammy /bin/bash
|
||||
docker run --rm --network host -v ${pwd}:/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.59.1-jammy /bin/bash
|
||||
|
||||
# Once inside the docker container, run the VRT tests: important - they MUST be ran against a HTTPS server.
|
||||
# Use the ip and port noted earlier
|
||||
|
||||
@@ -112,22 +112,22 @@
|
||||
"@babel/core": "^7.29.0",
|
||||
"@codemirror/autocomplete": "^6.20.1",
|
||||
"@codemirror/lang-javascript": "^6.2.5",
|
||||
"@codemirror/language": "^6.12.2",
|
||||
"@codemirror/state": "^6.5.4",
|
||||
"@codemirror/view": "^6.38.7",
|
||||
"@codemirror/language": "^6.12.3",
|
||||
"@codemirror/state": "^6.6.0",
|
||||
"@codemirror/view": "^6.41.0",
|
||||
"@emotion/css": "^11.13.5",
|
||||
"@fontsource-variable/inter": "^5.2.8",
|
||||
"@fontsource/redacted-script": "^5.2.8",
|
||||
"@juggle/resize-observer": "^3.4.0",
|
||||
"@lezer/highlight": "^1.2.3",
|
||||
"@playwright/test": "1.58.2",
|
||||
"@react-aria/interactions": "^3.27.0",
|
||||
"@playwright/test": "1.59.1",
|
||||
"@react-aria/interactions": "^3.27.1",
|
||||
"@reduxjs/toolkit": "^2.11.2",
|
||||
"@rolldown/plugin-babel": "~0.1.8",
|
||||
"@rollup/plugin-inject": "^5.0.5",
|
||||
"@swc/core": "^1.15.18",
|
||||
"@swc/helpers": "^0.5.19",
|
||||
"@tanstack/react-query": "^5.90.21",
|
||||
"@swc/core": "^1.15.24",
|
||||
"@swc/helpers": "^0.5.21",
|
||||
"@tanstack/react-query": "^5.96.2",
|
||||
"@testing-library/dom": "10.4.1",
|
||||
"@testing-library/jest-dom": "^6.9.1",
|
||||
"@testing-library/react": "16.3.2",
|
||||
@@ -138,11 +138,11 @@
|
||||
"@types/react": "^19.2.14",
|
||||
"@types/react-dom": "^19.2.3",
|
||||
"@types/react-modal": "^3.16.3",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260309.1",
|
||||
"@uiw/react-codemirror": "^4.25.7",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260404.1",
|
||||
"@uiw/react-codemirror": "^4.25.9",
|
||||
"@use-gesture/react": "^10.3.1",
|
||||
"@vitejs/plugin-basic-ssl": "^2.2.0",
|
||||
"@vitejs/plugin-react": "^6.0.0",
|
||||
"@vitejs/plugin-basic-ssl": "^2.3.0",
|
||||
"@vitejs/plugin-react": "^6.0.1",
|
||||
"absurd-sql": "0.0.54",
|
||||
"auto-text-size": "^0.2.3",
|
||||
"babel-plugin-react-compiler": "^1.0.0",
|
||||
@@ -152,27 +152,27 @@
|
||||
"downshift": "9.3.2",
|
||||
"html-to-image": "^1.11.13",
|
||||
"hyperformula": "^3.2.0",
|
||||
"i18next": "^25.8.14",
|
||||
"i18next": "^25.10.10",
|
||||
"i18next-parser": "^9.4.0",
|
||||
"i18next-resources-to-backend": "^1.2.1",
|
||||
"jsdom": "^27.4.0",
|
||||
"lodash": "^4.18.1",
|
||||
"lru-cache": "^11.2.6",
|
||||
"lru-cache": "^11.2.7",
|
||||
"mdast-util-newline-to-break": "^2.0.0",
|
||||
"memoize-one": "^6.0.0",
|
||||
"pikaday": "1.8.2",
|
||||
"promise-retry": "^2.0.1",
|
||||
"re-resizable": "^6.11.2",
|
||||
"react": "19.2.4",
|
||||
"react-aria": "^3.46.0",
|
||||
"react-aria-components": "^1.15.1",
|
||||
"react-aria": "^3.47.0",
|
||||
"react-aria-components": "^1.16.0",
|
||||
"react-dnd": "^16.0.1",
|
||||
"react-dnd-html5-backend": "^16.0.1",
|
||||
"react-dom": "19.2.4",
|
||||
"react-error-boundary": "^6.0.3",
|
||||
"react-grid-layout": "^2.2.2",
|
||||
"react-error-boundary": "^6.1.1",
|
||||
"react-grid-layout": "^2.2.3",
|
||||
"react-hotkeys-hook": "^5.2.4",
|
||||
"react-i18next": "^16.5.6",
|
||||
"react-i18next": "^16.6.6",
|
||||
"react-markdown": "^10.1.0",
|
||||
"react-modal": "3.16.3",
|
||||
"react-redux": "^9.2.0",
|
||||
@@ -181,18 +181,18 @@
|
||||
"react-spring": "^10.0.3",
|
||||
"react-swipeable": "^7.0.2",
|
||||
"react-virtualized-auto-sizer": "^2.0.3",
|
||||
"recharts": "^3.7.0",
|
||||
"recharts": "^3.8.1",
|
||||
"rehype-external-links": "^3.0.0",
|
||||
"remark-gfm": "^4.0.1",
|
||||
"rolldown": "^1.0.0-rc.12",
|
||||
"rollup-plugin-visualizer": "^6.0.11",
|
||||
"sass": "^1.97.3",
|
||||
"rolldown": "^1.0.0-rc.13",
|
||||
"rollup-plugin-visualizer": "^7.0.1",
|
||||
"sass": "^1.99.0",
|
||||
"typescript-strict-plugin": "^2.4.4",
|
||||
"usehooks-ts": "^3.1.1",
|
||||
"uuid": "^13.0.0",
|
||||
"vite": "^8.0.5",
|
||||
"vite-plugin-pwa": "^1.2.0",
|
||||
"vitest": "^4.1.0",
|
||||
"vitest": "^4.1.2",
|
||||
"xml2js": "^0.6.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
import { LazyLoadFailedError } from '@actual-app/core/shared/errors';
|
||||
import { render, screen } from '@testing-library/react';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { TestProviders } from '#mocks';
|
||||
|
||||
import { FatalError } from './FatalError';
|
||||
|
||||
describe('FatalError', () => {
|
||||
it('renders the SharedArrayBuffer message for a non-Error AppError payload', () => {
|
||||
// matches what browser-server.js posts and what initAll().catch passes
|
||||
const error = {
|
||||
type: 'app-init-failure',
|
||||
SharedArrayBufferMissing: true,
|
||||
};
|
||||
|
||||
render(<FatalError error={error} />, { wrapper: TestProviders });
|
||||
|
||||
expect(screen.getAllByText(/SharedArrayBuffer/).length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
it('renders the IndexedDB message for a non-Error AppError payload', () => {
|
||||
const error = {
|
||||
type: 'app-init-failure',
|
||||
IDBFailure: true,
|
||||
};
|
||||
|
||||
render(<FatalError error={error} />, { wrapper: TestProviders });
|
||||
|
||||
expect(screen.getByText(/IndexedDB/)).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('renders the generic simple message for an app-init-failure without a specific cause', () => {
|
||||
const error = {
|
||||
type: 'app-init-failure',
|
||||
BackendInitFailure: true,
|
||||
};
|
||||
|
||||
render(<FatalError error={error} />, { wrapper: TestProviders });
|
||||
|
||||
expect(
|
||||
screen.getByText(/problem loading the app in this browser version/i),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('renders the UI error message for a generic Error', () => {
|
||||
render(<FatalError error={new Error('boom')} />, {
|
||||
wrapper: TestProviders,
|
||||
});
|
||||
|
||||
expect(
|
||||
screen.getByText(/unrecoverable error in the UI/i),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('renders the lazy load message for a LazyLoadFailedError', () => {
|
||||
render(<FatalError error={new LazyLoadFailedError('SomeModule', null)} />, {
|
||||
wrapper: TestProviders,
|
||||
});
|
||||
|
||||
expect(
|
||||
screen.getByText(/problem loading one of the chunks/i),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
@@ -24,10 +24,12 @@ type AppError = Error & {
|
||||
};
|
||||
|
||||
type FatalErrorProps = {
|
||||
error: Error | AppError;
|
||||
error: unknown;
|
||||
};
|
||||
|
||||
type RenderSimpleProps = FatalErrorProps;
|
||||
type RenderSimpleProps = {
|
||||
error: Error | AppError;
|
||||
};
|
||||
|
||||
function RenderSimple({ error }: RenderSimpleProps) {
|
||||
let msg: ReactNode;
|
||||
@@ -195,7 +197,7 @@ function SharedArrayBufferOverride() {
|
||||
);
|
||||
}
|
||||
|
||||
export function FatalError({ error }: FatalErrorProps) {
|
||||
export function FatalError({ error: rawError }: FatalErrorProps) {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const { modalStack } = useModalState();
|
||||
@@ -203,6 +205,12 @@ export function FatalError({ error }: FatalErrorProps) {
|
||||
|
||||
const [showError, setShowError] = useState(false);
|
||||
|
||||
const error: Error | AppError =
|
||||
rawError instanceof Error
|
||||
? rawError
|
||||
: rawError && typeof rawError === 'object'
|
||||
? Object.assign(new Error(String(rawError)), rawError)
|
||||
: new Error(String(rawError));
|
||||
const showSimpleRender = 'type' in error && error.type === 'app-init-failure';
|
||||
const isLazyLoadError = error instanceof LazyLoadFailedError;
|
||||
|
||||
|
||||
@@ -16,6 +16,8 @@ export function FeatureErrorFallback({
|
||||
console.error(error);
|
||||
}, [error]);
|
||||
|
||||
const message = error instanceof Error ? error.message : undefined;
|
||||
|
||||
return (
|
||||
<View
|
||||
style={{
|
||||
@@ -28,7 +30,7 @@ export function FeatureErrorFallback({
|
||||
<Text style={{ ...styles.mediumText, color: theme.errorText }}>
|
||||
<Trans>Something went wrong loading this section.</Trans>
|
||||
</Text>
|
||||
{error?.message && (
|
||||
{message && (
|
||||
<Text
|
||||
style={{
|
||||
...styles.smallText,
|
||||
@@ -40,7 +42,7 @@ export function FeatureErrorFallback({
|
||||
userSelect: 'text',
|
||||
}}
|
||||
>
|
||||
{error.message}
|
||||
{message}
|
||||
</Text>
|
||||
)}
|
||||
<Button onPress={resetErrorBoundary} style={{ marginTop: 15 }}>
|
||||
|
||||
@@ -8,6 +8,8 @@ import { theme } from '@actual-app/components/theme';
|
||||
import type {
|
||||
balanceTypeOpType,
|
||||
DataEntity,
|
||||
GroupedEntity,
|
||||
IntervalEntity,
|
||||
RuleConditionEntity,
|
||||
} from '@actual-app/core/types/models';
|
||||
import { css } from '@emotion/css';
|
||||
@@ -250,7 +252,7 @@ export function BarGraph({
|
||||
data[splitData] && (
|
||||
<div>
|
||||
{!compact && <div style={{ marginTop: '15px' }} />}
|
||||
<BarChart
|
||||
<BarChart<GroupedEntity | IntervalEntity>
|
||||
responsive
|
||||
width={width}
|
||||
height={height}
|
||||
|
||||
@@ -12,7 +12,7 @@ import type {
|
||||
RuleConditionEntity,
|
||||
} from '@actual-app/core/types/models';
|
||||
import { Pie, PieChart, Sector } from 'recharts';
|
||||
import type { PieSectorShapeProps } from 'recharts';
|
||||
import type { PieSectorDataItem, PieSectorShapeProps } from 'recharts';
|
||||
|
||||
import { FinancialText } from '#components/FinancialText';
|
||||
import { PrivacyFilter } from '#components/PrivacyFilter';
|
||||
@@ -31,6 +31,8 @@ const RADIAN = Math.PI / 180;
|
||||
|
||||
const canDeviceHover = () => window.matchMedia('(hover: hover)').matches;
|
||||
|
||||
type ClickablePieItem = PieSectorDataItem & { id?: string };
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Dimension helpers
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -487,7 +489,7 @@ export function DonutGraph({
|
||||
setActiveRing('group');
|
||||
}
|
||||
}}
|
||||
onClick={(item, index) => {
|
||||
onClick={(item: ClickablePieItem, index) => {
|
||||
if (!canDeviceHover()) {
|
||||
setActiveGroupIndex(index);
|
||||
setActiveRing('group');
|
||||
@@ -574,7 +576,7 @@ export function DonutGraph({
|
||||
setPointer('pointer');
|
||||
}
|
||||
}}
|
||||
onClick={(item, index) => {
|
||||
onClick={(item: ClickablePieItem, index) => {
|
||||
if (!canDeviceHover()) {
|
||||
setActiveCategoryIndex(index);
|
||||
setActiveRing('category');
|
||||
@@ -667,7 +669,7 @@ export function DonutGraph({
|
||||
}
|
||||
}
|
||||
}}
|
||||
onClick={(item, index) => {
|
||||
onClick={(item: ClickablePieItem, index) => {
|
||||
if (!canDeviceHover()) {
|
||||
setActiveIndex(index);
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ type NetWorthDataPoint = {
|
||||
date: string;
|
||||
} & Record<string, string | number>;
|
||||
|
||||
type TrendTooltipProps = TooltipContentProps<number, string> & {
|
||||
type TrendTooltipProps = TooltipContentProps & {
|
||||
style?: CSSProperties;
|
||||
};
|
||||
|
||||
@@ -97,7 +97,7 @@ function TrendTooltip({ active, payload, style }: TrendTooltipProps) {
|
||||
return null;
|
||||
}
|
||||
|
||||
type StackedTooltipProps = TooltipContentProps<number, string> & {
|
||||
type StackedTooltipProps = TooltipContentProps & {
|
||||
sortedAccounts: Array<{ id: string; name: string }>;
|
||||
accounts: Array<{ id: string; name: string }>;
|
||||
hoveredAccountId: string | null;
|
||||
@@ -394,14 +394,14 @@ export function NetWorthGraph({
|
||||
tickLine={{ stroke: theme.pageText }}
|
||||
/>
|
||||
{effectiveShowTooltip && mode === 'trend' && (
|
||||
<Tooltip<number, string>
|
||||
<Tooltip
|
||||
content={props => <TrendTooltip {...props} style={style} />}
|
||||
formatter={numberFormatterTooltip}
|
||||
isAnimationActive={false}
|
||||
/>
|
||||
)}
|
||||
{effectiveShowTooltip && mode === 'stacked' && (
|
||||
<Tooltip<number, string>
|
||||
<Tooltip
|
||||
content={props => (
|
||||
<StackedTooltip
|
||||
{...props}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
type PotentialNumber = number | string | undefined | null;
|
||||
type PotentialNumber =
|
||||
| number
|
||||
| string
|
||||
| undefined
|
||||
| null
|
||||
| readonly (number | string)[];
|
||||
|
||||
export const numberFormatterTooltip = (
|
||||
value: PotentialNumber,
|
||||
|
||||
@@ -14,6 +14,7 @@ import {
|
||||
import type {
|
||||
DragPreviewRenderer,
|
||||
DropPosition,
|
||||
DropResult,
|
||||
TextDropItem,
|
||||
} from 'react-aria';
|
||||
|
||||
@@ -290,7 +291,12 @@ export function useDrop<T extends { id: string }>({
|
||||
id,
|
||||
onDrop,
|
||||
onLongHover,
|
||||
}: UseDropArgs) {
|
||||
}: UseDropArgs): {
|
||||
dropRef: RefObject<HTMLDivElement | null>;
|
||||
dropProps: DropResult['dropProps'];
|
||||
dropPos: DropPosition | null;
|
||||
isDropTarget: boolean;
|
||||
} {
|
||||
const dropRef = useRef<HTMLDivElement>(null);
|
||||
const [dropPos, setDropPos] = useState<DropPosition | null>(null);
|
||||
// Track if cursor is actually within this element's bounds (not just drag preview overlap)
|
||||
@@ -309,7 +315,7 @@ export function useDrop<T extends { id: string }>({
|
||||
|
||||
const acceptedTypes = Array.isArray(types) ? types : [types];
|
||||
|
||||
const { dropProps, isDropTarget } = useReactAriaDrop({
|
||||
const { dropProps, isDropTarget }: DropResult = useReactAriaDrop({
|
||||
ref: dropRef as RefObject<HTMLDivElement | null>,
|
||||
getDropOperation(dragTypes) {
|
||||
// Check if any of our accepted types are in the drag types
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@actual-app/sync-server": "workspace:*",
|
||||
"better-sqlite3": "^12.6.2",
|
||||
"better-sqlite3": "^12.8.0",
|
||||
"fs-extra": "^11.3.4",
|
||||
"promise-retry": "^2.0.1"
|
||||
},
|
||||
@@ -25,10 +25,10 @@
|
||||
"@actual-app/web": "workspace:*",
|
||||
"@electron/notarize": "3.1.1",
|
||||
"@electron/rebuild": "^4.0.3",
|
||||
"@playwright/test": "1.58.2",
|
||||
"@playwright/test": "1.59.1",
|
||||
"@types/copyfiles": "^2",
|
||||
"@types/fs-extra": "^11",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260309.1",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260404.1",
|
||||
"copyfiles": "^2.4.1",
|
||||
"cross-env": "^10.1.0",
|
||||
"electron": "39.8.5",
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-vitest-rule-tester": "^3.1.0",
|
||||
"vitest": "^4.1.0"
|
||||
"vitest": "^4.1.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ fi
|
||||
|
||||
cp ../../../node_modules/@jlongster/sql.js/dist/sql-wasm.wasm "$PUBLIC_DIR"/sql-wasm.wasm
|
||||
|
||||
yarn vite build --config ../vite.config.ts --mode $NODE_ENV $VITE_ARGS
|
||||
yarn vite build --config ../vite.config.mts --mode $NODE_ENV $VITE_ARGS
|
||||
|
||||
if [ $NODE_ENV == 'production' ]; then
|
||||
# In production, just copy the built files
|
||||
|
||||
@@ -150,8 +150,8 @@
|
||||
"./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.ts",
|
||||
"watch:node": "cross-env NODE_ENV=development vite build --config ./vite.desktop.config.ts --watch",
|
||||
"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",
|
||||
@@ -168,16 +168,16 @@
|
||||
"@rschedule/core": "^1.5.0",
|
||||
"@rschedule/standard-date-adapter": "^1.5.0",
|
||||
"absurd-sql": "0.0.54",
|
||||
"adm-zip": "^0.5.16",
|
||||
"better-sqlite3": "^12.6.2",
|
||||
"csv-parse": "^6.1.0",
|
||||
"csv-stringify": "^6.6.0",
|
||||
"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.6",
|
||||
"lru-cache": "^11.2.7",
|
||||
"memoize-one": "^6.0.0",
|
||||
"mitt": "^3.0.1",
|
||||
"promise-retry": "^2.0.1",
|
||||
@@ -188,28 +188,28 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@actual-app/crdt": "workspace:*",
|
||||
"@swc/core": "^1.15.18",
|
||||
"@types/adm-zip": "^0.5.7",
|
||||
"@swc/core": "^1.15.24",
|
||||
"@types/adm-zip": "^0.5.8",
|
||||
"@types/better-sqlite3": "^7.6.13",
|
||||
"@types/emscripten": "^1.41.5",
|
||||
"@types/jlongster__sql.js": "npm:@types/sql.js@latest",
|
||||
"@types/node": "^22.19.15",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260309.1",
|
||||
"@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.5.3",
|
||||
"i18next": "^25.8.14",
|
||||
"jest-diff": "^30.2.0",
|
||||
"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": "^6.0.11",
|
||||
"rollup-plugin-visualizer": "^7.0.1",
|
||||
"stream-browserify": "^3.0.0",
|
||||
"timers-browserify": "^2.0.12",
|
||||
"ts-node": "^10.9.2",
|
||||
@@ -217,7 +217,7 @@
|
||||
"vite": "^8.0.5",
|
||||
"vite-plugin-node-polyfills": "^0.26.0",
|
||||
"vite-plugin-peggy-loader": "^2.0.1",
|
||||
"vitest": "^4.1.0",
|
||||
"vitest": "^4.1.2",
|
||||
"yargs": "^18.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
"workbox-precaching": "^7.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.19.15",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260309.1",
|
||||
"@types/node": "^22.19.17",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260404.1",
|
||||
"cross-env": "^10.1.0",
|
||||
"typescript-strict-plugin": "^2.4.4",
|
||||
"vite": "^8.0.5"
|
||||
|
||||
@@ -80,13 +80,13 @@
|
||||
"@actual-app/crdt": "2.1.0",
|
||||
"@actual-app/web": "workspace:*",
|
||||
"bcrypt": "^6.0.0",
|
||||
"better-sqlite3": "^12.6.2",
|
||||
"better-sqlite3": "^12.8.0",
|
||||
"convict": "^6.2.5",
|
||||
"cors": "^2.8.6",
|
||||
"date-fns": "^4.1.0",
|
||||
"debug": "^4.4.3",
|
||||
"express": "^5.2.1",
|
||||
"express-rate-limit": "^8.3.0",
|
||||
"express-rate-limit": "^8.3.2",
|
||||
"express-winston": "^4.2.0",
|
||||
"ipaddr.js": "^2.3.0",
|
||||
"migrate": "^2.1.0",
|
||||
@@ -105,13 +105,13 @@
|
||||
"@types/cors": "^2.8.19",
|
||||
"@types/express": "^5.0.6",
|
||||
"@types/express-actuator": "^1.8.3",
|
||||
"@types/node": "^22.19.15",
|
||||
"@types/node": "^22.19.17",
|
||||
"@types/supertest": "^7.2.0",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260309.1",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20260404.1",
|
||||
"http-proxy-middleware": "^3.0.5",
|
||||
"nodemon": "^3.1.14",
|
||||
"supertest": "^7.2.2",
|
||||
"typescript-strict-plugin": "^2.4.4",
|
||||
"vitest": "^4.1.0"
|
||||
"vitest": "^4.1.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
category: Maintenance
|
||||
authors: [matt-fidd]
|
||||
---
|
||||
|
||||
Bump various dependencies
|
||||
Reference in New Issue
Block a user