From 8df7a5ace8e0bb4dc6fb07fdaa4c0084e66e53b5 Mon Sep 17 00:00:00 2001 From: jeremy bayse Date: Mon, 27 Apr 2026 11:25:51 +0200 Subject: [PATCH] feat: implement monthly glycemic report PDF generation and configure production build settings --- .gitignore | 1 + next.config.ts | 5 +++- package-lock.json | 28 +++++++++++++++-------- src/app/api/reports/generate-pdf/route.ts | 3 ++- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index f390d12..e8ff928 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ yarn-error.log* next-env.d.ts /src/generated/prisma +*tar.gz diff --git a/next.config.ts b/next.config.ts index e9ffa30..2d75cff 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,7 +1,10 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { - /* config options here */ + output: "standalone", + poweredByHeader: false, + productionBrowserSourceMaps: false, + reactStrictMode: true, }; export default nextConfig; diff --git a/package-lock.json b/package-lock.json index a5d75ab..97473b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3582,9 +3582,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.22", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.22.tgz", - "integrity": "sha512-6qruVrb5rse6WylFkU0FhBKKGuecWseqdpQfhkawn6ztyk2QlfwSRjsDxMCLJrkfmfN21qvhl9ABgaMeRkuwww==", + "version": "2.10.23", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.23.tgz", + "integrity": "sha512-xwVXGqevyKPsiuQdLj+dZMVjidjJV508TBqexND5HrF89cGdCYCJFB3qhcxRHSeMctdCfbR1jrxBajhDy7o29g==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -7481,9 +7481,9 @@ "license": "MIT-0" }, "node_modules/postcss": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz", - "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz", + "integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==", "dev": true, "funding": [ { @@ -7623,6 +7623,13 @@ "react-is": "^16.13.1" } }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, "node_modules/proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", @@ -7753,10 +7760,11 @@ } }, "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" + "version": "19.2.5", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.5.tgz", + "integrity": "sha512-Dn0t8IQhCmeIT3wu+Apm1/YVsJXsGWi6k4sPdnBIdqMVtHtv0IGi6dcpNpNkNac0zB2uUAqNX3MHzN8c+z2rwQ==", + "license": "MIT", + "peer": true }, "node_modules/react-redux": { "version": "9.2.0", diff --git a/src/app/api/reports/generate-pdf/route.ts b/src/app/api/reports/generate-pdf/route.ts index 1e8b7fd..8529b39 100644 --- a/src/app/api/reports/generate-pdf/route.ts +++ b/src/app/api/reports/generate-pdf/route.ts @@ -258,7 +258,8 @@ export async function GET(request: NextRequest) { y -= 16; }); - const pdfBuffer = await doc.save(); + const pdfBytes = await doc.save(); + const pdfBuffer = Buffer.from(pdfBytes); return new NextResponse(pdfBuffer, { headers: {