{ "name": "ottehr", "version": "1.46.5", "private": true, "packageManager": "npm@10.9.3", "engines": { "node": ">=22.13.0", "npm": ">=10.0.0" }, "scripts": { "build": "NODE_OPTIONS='--max-old-space-size=8192' turbo build lint", "version": "npm version $npm_package_version --workspaces && git add package.json '**/package.json'", "load-secrets": "NODE_OPTIONS='--preserve-symlinks' tsx ./scripts/load-secrets.ts", "lint": "npm run lint:barrels && npm run lint:eslint", "lint:barrels": "tsx scripts/debarrel.ts --check", "easy-chart:eval": "NODE_OPTIONS='--preserve-symlinks' tsx tools/easy-chart-eval/run.ts", "lint:eslint": "turbo lint", "lint:eslint:fix": "turbo lint:fix", "lint:fix": "npm run lint:eslint:fix", "intake:start": "turbo start --filter=intake-ui", "intake:start:iac": "turbo start:iac --filter=intake-ui", "intake:e2e:local": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:local:ui": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --ui", "intake:e2e:local:smoke": "SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:local:smoke:ui": "SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --ui", "intake:e2e:local:login": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --login-only", "intake:e2e:local:specs": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --specs-only", "intake:e2e:demo": "ENV=demo NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:demo:ui": "ENV=demo NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --ui", "intake:e2e:demo:smoke": "ENV=demo SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:demo:login": "ENV=demo NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --login-only", "intake:e2e:demo:specs": "ENV=demo NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --specs-only", "intake:e2e:e2e": "ENV=e2e NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:e2e:ui": "ENV=e2e NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --ui", "intake:e2e:e2e:smoke": "ENV=e2e SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:e2e:login": "ENV=e2e NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --login-only", "intake:e2e:e2e:specs": "ENV=e2e NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --specs-only", "intake:e2e:e2e2": "ENV=e2e2 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:e2e2:ui": "ENV=e2e2 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --ui", "intake:e2e:e2e2:smoke": "ENV=e2e2 SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:e2e2:login": "ENV=e2e2 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --login-only", "intake:e2e:e2e2:specs": "ENV=e2e2 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --specs-only", "intake:e2e:e2e3": "ENV=e2e3 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:e2e5": "ENV=e2e5 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:e2e4": "ENV=e2e4 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:e2e3:ui": "ENV=e2e3 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --ui", "intake:e2e:e2e5:ui": "ENV=e2e5 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --ui", "intake:e2e:e2e4:ui": "ENV=e2e4 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --ui", "intake:e2e:e2e3:smoke": "ENV=e2e3 SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:e2e5:smoke": "ENV=e2e5 SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:e2e4:smoke": "ENV=e2e4 SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:e2e3:login": "ENV=e2e3 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --login-only", "intake:e2e:e2e5:login": "ENV=e2e5 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --login-only", "intake:e2e:e2e4:login": "ENV=e2e4 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --login-only", "intake:e2e:e2e3:specs": "ENV=e2e3 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --specs-only", "intake:e2e:e2e5:specs": "ENV=e2e5 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --specs-only", "intake:e2e:e2e4:specs": "ENV=e2e4 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --specs-only", "intake:e2e:development": "ENV=development NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:development:ui": "ENV=development NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --ui", "intake:e2e:development:login": "ENV=development NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --login-only", "intake:e2e:development:specs": "ENV=development NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --specs-only", "intake:e2e:testing": "ENV=testing NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:testing:ui": "ENV=testing NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --ui", "intake:e2e:testing:smoke": "ENV=testing SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:testing:login": "ENV=testing NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --login-only", "intake:e2e:testing:specs": "ENV=testing NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --specs-only", "intake:e2e:staging": "ENV=staging NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:staging:ui": "ENV=staging NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --ui", "intake:e2e:staging:smoke": "ENV=staging SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake", "intake:e2e:staging:login": "ENV=staging NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --login-only", "intake:e2e:staging:specs": "ENV=staging NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=intake --specs-only", "intake:build": "turbo build --filter=intake-ui", "intake:lint": "turbo lint --filter=intake-ui...", "intake:start:ui": "turbo start --filter=intake-ui", "ehr:start": "turbo start --filter=ehr-ui", "ehr:start:iac": "turbo start:iac --filter=ehr-ui", "ehr:e2e:e2e": "ENV=e2e NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:e2e:integration": "ENV=e2e INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:e2e:ui": "ENV=e2e NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:e2e:integration:ui": "ENV=e2e INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:e2e2": "ENV=e2e2 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:e2e2:integration": "ENV=e2e2 INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:e2e2:ui": "ENV=e2e2 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:e2e2:integration:ui": "ENV=e2e2 INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:e2e3": "ENV=e2e3 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:e2e5": "ENV=e2e5 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:e2e4": "ENV=e2e4 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:e2e3:integration": "ENV=e2e3 INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:e2e5:integration": "ENV=e2e5 INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:e2e4:integration": "ENV=e2e4 INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:e2e3:ui": "ENV=e2e3 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:e2e5:ui": "ENV=e2e5 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:e2e4:ui": "ENV=e2e4 NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:e2e3:integration:ui": "ENV=e2e3 INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:e2e5:integration:ui": "ENV=e2e5 INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:e2e4:integration:ui": "ENV=e2e4 INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:local": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:local:integration": "INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:local:ui": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:local:smoke": "SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:local:smoke:ui": "SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:local:integration:ui": "INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:demo": "ENV=demo NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:demo:ui": "ENV=demo NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:demo:smoke": "ENV=demo SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:development": "ENV=development NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:development:ui": "ENV=development NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:testing": "ENV=testing NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:testing:ui": "ENV=testing NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:testing:smoke": "ENV=testing SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:staging": "ENV=staging NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:staging:ui": "ENV=staging NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --ui", "ehr:e2e:staging:smoke": "ENV=staging SMOKE_TEST=true INTEGRATION_TEST=true NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr", "ehr:e2e:local:flaky": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --specs-only --repeat-each=10", "ehr:generate-seed-data": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/run-e2e.ts --app=ehr --generate-seed-data", "ehr:build": "turbo build --filter=ehr-ui", "ehr:lint": "turbo lint --filter=ehr-ui...", "ehr:start:ui": "turbo start --filter=ehr-ui", "zambdas:start": "turbo start --filter=zambdas", "zambdas:start:iac": "turbo start:iac --filter=zambdas", "apps:start": "npm run apps:start:iac", "apps:start:with-billing": "npm run apply-local --workspace deploy && turbo start --filter=intake-ui --filter=ehr-ui --filter=billing-ui --filter=zambdas", "apps:start:with-billing:no-apply": "turbo start --filter=intake-ui --filter=ehr-ui --filter=billing-ui --filter=zambdas", "apps:start:iac": "npm run apply-local --workspace deploy && turbo start:iac --filter=intake-ui --filter=ehr-ui --filter=zambdas", "apps:start:e2e:iac": "npm run apply-e2e --workspace deploy && ENV=e2e turbo start:iac --filter=intake-ui --filter=ehr-ui --filter=zambdas", "apps:start:no-apply": "turbo start:iac --filter=intake-ui --filter=ehr-ui --filter=zambdas", "apps:start:labcorp": "ENV=labcorp-local turbo start --filter=intake-ui --filter=ehr-ui --filter=zambdas", "test": "turbo test", "prepare": "husky", "spellcheck": "cspell .", "merge-payer-addresses": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/merge-payer-addresses.ts config/payers.json scripts/data/payers-addresses.csv config/payers-with-addresses.json scripts/data/payers-addresses-unmatched.csv", "bump-canonical-version": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/config/bump-canonical-version.ts", "docs:billing-rules": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/generate-billing-rules-docs.ts", "codes:remit": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/generate-remit-code-lists.ts", "create:project": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/setup/project/create-project.ts", "setup:all-envs": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/setup/project/setup-all-envs.ts", "setup:cloudfront-urls": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/setup/project/update-cloudfront-urls.ts", "invite:demo": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/setup/project/invite-demo-user.ts", "invite:e2e": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/setup/project/invite-e2e-user.ts", "invite:devs": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/setup/project/invite-devs.ts", "invite:users": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/setup/project/invite-users-batch.ts", "find-deleted-referenced-payors": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/find-deleted-referenced-payors.ts", "replace-payor-organization": "NODE_OPTIONS='--preserve-symlinks' tsx scripts/replace-payor-organization.ts" }, "workspaces": [ "packages/**/*", "apps/*", "deploy" ], "dependencies": { "@auth0/auth0-react": "^2.2.4", "@aws-sdk/client-cloudfront": "^3.716.0", "@aws-sdk/client-s3": "^3.272.0", "@aws-sdk/credential-providers": "^3.716.0", "@emotion/react": "^11.10.5", "@emotion/styled": "^11.10.5", "@hookform/resolvers": "^3.10.0", "@inquirer/prompts": "^7.2.4", "@langchain/anthropic": "^1.5.12", "@langchain/core": "^1.2.17", "@mui/lab": "^5.0.0-alpha.115", "@mui/material": "^5.14.18", "@mui/system": "^5.10.16", "@mui/x-date-pickers": "^6.18.6", "@oystehr/sdk": "^4.3.17", "@pdf-lib/fontkit": "^1.1.1", "@sendgrid/mail": "^8.1.6", "@sentry/react": "^7.80.1", "@tanstack/react-query": "^5.83.0", "@tiptap/extension-mention": "^3.22.2", "@tiptap/extension-placeholder": "^3.14.0", "@tiptap/extension-task-item": "^3.14.0", "@tiptap/extension-task-list": "^3.14.0", "@tiptap/markdown": "^3.14.0", "@tiptap/react": "^3.22.2", "@tiptap/starter-kit": "^3.22.2", "@tiptap/suggestion": "^3.22.1", "@twilio/conversations": "^2.4.1", "@types/inquirer": "^9.0.7", "browser-image-compression": "^2.0.2", "browserslist-to-esbuild": "^1.2.0", "candidhealth": "^1.20.3", "csv-parse": "^6.2.1", "dompurify": "^3.2.4", "dymojs": "^1.2.0", "fast-json-patch": "^3.1.1", "fhirpath": "^4.8.2", "html-to-text": "^10.0.0", "i18next": "^23.10.1", "i18next-browser-languagedetector": "^7.0.1", "jose": "^5.2.2", "jsonpath-plus": "^10.2.0", "luxon": "^3.1.1", "object.hasown": "^1.1.4", "p-limit": "^7.3.0", "pdf-lib": "^1.17.1", "phone": "^3.1.59", "query-string": "^7.1.3", "react": "^18.2.0", "react-dom": "^18.2.0", "react-helmet-async": "^2.0.5", "react-hook-form": "7.64.0", "react-i18next": "^12.2.0", "react-imask": "^7.6.1", "react-markdown": "^9.0.0", "react-router-dom": "^6.3.0", "react-window": "^1.8.10", "retry": "^0.13.1", "sanitize-html": "^2.13.1", "short-uuid": "^4.2.2", "twilio": "^5.10.0", "uuid": "^11.0.3", "wait-on": "^9.0.3", "yup": "^1.0.0", "zod": "^3.25.67", "zod-validation-error": "^3.5.2", "zustand": "^4.4.6" }, "devDependencies": { "@hookform/devtools": "^4.3.1", "@json2csv/plainjs": "^7.0.6", "@playwright/test": "^1.57.0", "@sentry/cli": "^2.27.0", "@sentry/vite-plugin": "^5.4.0", "@tanstack/eslint-plugin-query": "^5.81.2", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", "@types/aws-lambda": "^8.10.109", "@types/fhir": "^0.0.41", "@types/html-to-text": "^9.0.4", "@types/jest": "^27.5.2", "@types/luxon": "^3.1.0", "@types/node": "^22.20.1", "@types/parquetjs": "^0.10.6", "@types/react": "^18.0.17", "@types/react-dom": "^18.0.6", "@types/react-window": "^1.8.8", "@types/sanitize-html": "^2.13.0", "@typescript-eslint/eslint-plugin": "^8.34.0", "@typescript-eslint/parser": "^8.34.0", "@vitejs/plugin-react": "^5.2.0", "@vitest/coverage-v8": "^4.1.11", "aws-cdk": "2.1006.0", "aws-cdk-lib": "2.198.0", "aws-lambda": "^1.0.7", "c8": "^10.1.3", "concurrently": "^9.1.2", "constructs": "^10.0.0", "cross-env": "^7.0.3", "cspell": "^9.0.2", "env-cmd": "^10.1.0", "eslint": "^8.57.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-simple-import-sort": "^12.1.1", "execa": "^9.6.0", "happy-dom": "^20.0.11", "husky": "^9.0.11", "jest": "^29.6.2", "jsdom": "^25.0.1", "lint-staged": "^15.0.2", "msw": "^2.10.2", "parquetjs": "^0.11.2", "prettier": "^3.0.0", "simple-zustand-devtools": "^1.1.0", "start-server-and-test": "^2.0.12", "tsx": "^4.19.2", "turbo": "^2.8.16", "typescript": "5.8.3", "vite": "8.2.2", "vite-plugin-svgr": "^4.2.0", "vitest": "^4.1.11", "web-vitals": "^2.1.4" }, "optionalDependencies": { "@esbuild/linux-x64": "^0.25.10", "@rollup/rollup-linux-x64-gnu": "4.24.0" } }