mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 12:32:43 +00:00
The Dockerfile asserts that the standalone image can resolve pg, because
pg-boss loads it through native Node resolution. That assertion has been
passing on a coincidence: pg sat in devDependencies, and the version our own
entry pinned happened to match the one @prisma/adapter-pg pulled in, so both
names resolved to a single copy in the store and Next's file tracer packed it
whole.
Bumping the adapter to 7.10.0 moves its transitive pg to 8.23.0 while ours
stayed at 8.22.0. The tracer packs only the copy the adapter reaches, the
top-level link points at the other one, and the image fails to build on both
architectures:
Error: Cannot find module '/app/node_modules/pg/lib/index.js'
Move pg into dependencies at ^8.23.0. The lockfile now carries one pg version
instead of two, so the two resolutions cannot drift apart again on the next
adapter release. Carries the adapter bump from #865, which cannot build alone.
141 lines
4.3 KiB
JSON
141 lines
4.3 KiB
JSON
{
|
|
"name": "healthlog",
|
|
"version": "1.38.0",
|
|
"description": "Self-hosted personal-health-tracking PWA with Withings integration, AI insights, and doctor-report PDF export.",
|
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
"homepage": "https://healthlog.dev",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/MBombeck/HealthLog.git"
|
|
},
|
|
"bugs": {
|
|
"url": "https://github.com/MBombeck/HealthLog/issues"
|
|
},
|
|
"keywords": [
|
|
"health-tracking",
|
|
"self-hosted",
|
|
"pwa",
|
|
"blood-pressure",
|
|
"withings",
|
|
"next.js",
|
|
"prisma",
|
|
"passkey"
|
|
],
|
|
"private": true,
|
|
"packageManager": "pnpm@11.15.1",
|
|
"scripts": {
|
|
"prepare": "node scripts/prepare.mjs",
|
|
"dev": "next dev",
|
|
"predev": "node scripts/generate-i18n-boot.mjs",
|
|
"prebuild": "node scripts/generate-sw-version.mjs && node scripts/generate-i18n-boot.mjs",
|
|
"build": "NODE_OPTIONS=--max-old-space-size=8192 next build",
|
|
"analyze": "ANALYZE=1 next build",
|
|
"bundle-report": "node scripts/check-bundle-budget.mjs",
|
|
"bundle-check": "node scripts/check-bundle-budget.mjs --check",
|
|
"start": "next start",
|
|
"lint": "eslint",
|
|
"db:generate": "prisma generate",
|
|
"db:push": "prisma db push",
|
|
"db:migrate": "prisma migrate dev",
|
|
"db:migrate:deploy": "prisma migrate deploy",
|
|
"db:studio": "prisma studio",
|
|
"format": "prettier --write .",
|
|
"format:check": "prettier --check .",
|
|
"typecheck": "NODE_OPTIONS=--max-old-space-size=8192 tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:integration": "vitest run --config vitest.integration.config.mts",
|
|
"e2e": "playwright test",
|
|
"e2e:ui": "playwright test --ui",
|
|
"openapi:generate": "npx tsx scripts/generate-openapi.ts",
|
|
"openapi:check": "npx tsx scripts/check-openapi.ts",
|
|
"check-env": "npx tsx scripts/check-env.ts",
|
|
"mcp:stdio": "npx tsx src/cli/mcp-stdio.ts"
|
|
},
|
|
"dependencies": {
|
|
"@aws-sdk/client-s3": "^3.1075.0",
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@hookform/resolvers": "^5.4.0",
|
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
"@napi-rs/canvas": "1.0.7",
|
|
"@node-rs/argon2": "^2.1.0",
|
|
"@parse/node-apn": "^8.1.0",
|
|
"@prisma/adapter-pg": "^7.10.0",
|
|
"@prisma/client": "^7.8.0",
|
|
"@simplewebauthn/browser": "^13.3.0",
|
|
"@simplewebauthn/server": "^13.3.3",
|
|
"@tanstack/react-query": "5.101.4",
|
|
"@tanstack/react-virtual": "^3.14.5",
|
|
"@types/sax": "^1.2.7",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"date-fns": "^4.4.0",
|
|
"dotenv": "^17.4.2",
|
|
"fflate": "^0.8.3",
|
|
"jose": "^6.2.3",
|
|
"jspdf": "^4.2.1",
|
|
"jspdf-autotable": "^5.0.8",
|
|
"lucide-react": "^1.27.0",
|
|
"mmdb-lib": "^3.0.2",
|
|
"next": "16.2.11",
|
|
"next-themes": "^0.4.6",
|
|
"nodemailer": "9.0.3",
|
|
"otpauth": "^9.5.1",
|
|
"p-limit": "^7.3.1",
|
|
"pg": "^8.23.0",
|
|
"pg-boss": "^12.27.0",
|
|
"prisma": "^7.8.0",
|
|
"qrcode": "^1.5.4",
|
|
"radix-ui": "^1.6.2",
|
|
"react": "19.2.7",
|
|
"react-day-picker": "^10.0.1",
|
|
"react-dom": "19.2.7",
|
|
"react-hook-form": "7.83.0",
|
|
"recharts": "^3.10.1",
|
|
"rrule": "^2.8.1",
|
|
"sax": "^1.6.0",
|
|
"sonner": "^2.0.7",
|
|
"tailwind-merge": "^3.6.0",
|
|
"tesseract.js": "^7.0.0",
|
|
"undici": "^8.10.0",
|
|
"web-push": "^3.6.7",
|
|
"yaml": "^2.8.4",
|
|
"zod": "^4.4.3",
|
|
"zod-openapi": "^6.0.1",
|
|
"zxcvbn-typescript": "^5.0.1"
|
|
},
|
|
"devDependencies": {
|
|
"@axe-core/playwright": "^4.12.1",
|
|
"@next/bundle-analyzer": "^16.3.1",
|
|
"@openai/codex-security": "^0.1.1",
|
|
"@playwright/test": "^1.62.1",
|
|
"@tailwindcss/postcss": "^4",
|
|
"@testcontainers/postgresql": "^12.1.0",
|
|
"@types/node": "26.1.1",
|
|
"@types/nodemailer": "^8.0.1",
|
|
"@types/pg": "^8.20.0",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@types/react": "^19",
|
|
"@types/react-dom": "^19",
|
|
"@types/web-push": "^3.6.4",
|
|
"@vitejs/plugin-react": "^6.0.4",
|
|
"@vitest/coverage-v8": "^4.1.5",
|
|
"eslint": "^9",
|
|
"eslint-config-next": "16.2.12",
|
|
"knip": "^6.32.3",
|
|
"lefthook": "^2.1.10",
|
|
"pdf-parse": "^2.4.5",
|
|
"pdfjs-dist": "6.2.108",
|
|
"prettier": "^3.9.6",
|
|
"prettier-plugin-tailwindcss": "^0.8.1",
|
|
"shadcn": "^4.16.1",
|
|
"tailwindcss": "^4",
|
|
"testcontainers": "^12.1.0",
|
|
"tw-animate-css": "^1.4.0",
|
|
"typescript": "^6",
|
|
"vitest": "^4.1.5"
|
|
}
|
|
}
|