diff --git a/apps/backend/docker-compose-db.yaml b/apps/backend/docker-compose-db.yaml index 6081358..cd1fea0 100644 --- a/apps/backend/docker-compose-db.yaml +++ b/apps/backend/docker-compose-db.yaml @@ -9,7 +9,7 @@ services: POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} ports: - - '5432:5432' + - '${POSTGRES_PORT}:5432' volumes: - postgres_data:/var/lib/postgresql/data diff --git a/apps/backend/package.json b/apps/backend/package.json index 392b155..eff6d1f 100644 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -27,7 +27,7 @@ "@nestjs/passport": "^10.0.3", "@nestjs/platform-express": "^10.4.15", "@nestjs/swagger": "^8.1.1", - "@prisma/client": "^6.2.1", + "@prisma/client": "^6.5.0", "@radix-ui/react-dialog": "^1.1.4", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", @@ -49,7 +49,7 @@ "eslint": "^9.18.0", "eslint-config-nestjs": "^0.8.0", "eslint-plugin-simple-import-sort": "^12.1.1", - "prisma": "^6.2.1", + "prisma": "^6.5.0", "source-map-support": "^0.5.21", "ts-loader": "^9.5.2", "ts-node": "^10.9.2", diff --git a/apps/frontend/package.json b/apps/frontend/package.json index 545f057..bafd56c 100644 --- a/apps/frontend/package.json +++ b/apps/frontend/package.json @@ -6,7 +6,7 @@ "license": "MIT", "private": true, "scripts": { - "dev": "NODE_OPTIONS='--inspect' next dev --turbo", + "dev": "NODE_OPTIONS='--inspect' next dev --turbopack", "build": "next build", "start": "next start", "lint": "next lint" @@ -49,15 +49,16 @@ "clsx": "^2.1.1", "cmdk": "1.0.4", "date-fns": "^4.1.0", + "file-saver": "^2.0.5", "hamburger-react": "^2.5.2", "input-otp": "^1.4.2", "js-cookie": "^3.0.5", "jsonwebtoken": "^9.0.2", "lucide-react": "^0.471.1", - "next": "^15.1.4", - "react": "^19.0.0", + "next": "15.2.2", + "react": "19.0.0", "react-day-picker": "8.10.1", - "react-dom": "^19.0.0", + "react-dom": "19.0.0", "react-easy-crop": "^5.2.0", "react-hook-form": "^7.54.2", "react-icons": "^5.4.0", @@ -66,20 +67,26 @@ "table": "^6.9.0", "tailwind-merge": "^2.6.0", "tailwindcss-animate": "^1.0.7", + "xlsx": "^0.18.5", "zod": "^3.24.1" }, "devDependencies": { - "@next/eslint-plugin-next": "^15.1.4", + "@next/eslint-plugin-next": "15.2.2", + "@types/file-saver": "^2", "@types/js-cookie": "^3.0.6", "@types/node": "^20.17.12", - "@types/react": "^19.0.6", - "@types/react-dom": "^19.0.3", - "eslint-config-next": "^15.1.4", + "@types/react": "19.0.10", + "@types/react-dom": "19.0.4", + "eslint-config-next": "15.2.2", "eslint-config-prettier": "^10.0.1", "eslint-plugin-prettier": "5.2.1", "eslint-plugin-simple-import-sort": "^12.1.1", "postcss": "^8.5.0", "tailwindcss": "^3.4.17", "typescript": "^5.7.3" + }, + "resolutions": { + "@types/react": "19.0.10", + "@types/react-dom": "19.0.4" } } diff --git a/apps/frontend/src/app/periods/[id]/data-table.tsx b/apps/frontend/src/app/periods/[id]/data-table.tsx index 2dfb38c..2aec974 100644 --- a/apps/frontend/src/app/periods/[id]/data-table.tsx +++ b/apps/frontend/src/app/periods/[id]/data-table.tsx @@ -51,6 +51,7 @@ interface DataTableProps { onExportPassesClicked: (data: TData[]) => void; onExportApplicationsClicked: (data: TData[]) => void; onSetToManufactured: (data: TData[]) => void; + onExportToExcelClicked: (data: TData[]) => void; } export function DataTable({ @@ -60,6 +61,7 @@ export function DataTable({ onExportApplicationsClicked, onExportPassesClicked, onSetToManufactured, + onExportToExcelClicked, }: DataTableProps) { const [sorting, setSorting] = React.useState([ { @@ -205,6 +207,15 @@ export function DataTable({ > Nem kollégisták exportálása (csak kiosztott) + { + onExportToExcelClicked( + data.filter((a) => (a as ApplicationEntity).status === ('DISTRIBUTED' as ApplicationStatus)) + ); + }} + > + Minden kiosztott jelentkezés exportálása Excel file-ba + diff --git a/apps/frontend/src/app/periods/[id]/page.tsx b/apps/frontend/src/app/periods/[id]/page.tsx index d8c60e9..ded9904 100644 --- a/apps/frontend/src/app/periods/[id]/page.tsx +++ b/apps/frontend/src/app/periods/[id]/page.tsx @@ -19,6 +19,8 @@ import { getStatusKey } from '@/lib/status'; import { toast } from '@/lib/use-toast'; import { ApplicationEntity, ApplicationStatus } from '@/types/application-entity'; +import { generateXlsx } from '@/lib/xlsx'; +import { saveAs } from 'file-saver'; import { ApplicationExport } from './application-export'; import { PassExport } from './pass-export'; @@ -187,6 +189,30 @@ export default function Page(props: { params: Promise<{ id: number }> }) { } }; + /** + * Handles the export of applications to an Excel file. + * This function exports the selected applications which have the status {@link ApplicationStatus.DISTRIBUTED} + * to an Excel file. + */ + const onExportToExcel = async (data: ApplicationEntity[]) => { + const distributedApplications = data.filter((a) => a.status === getStatusKey(ApplicationStatus.DISTRIBUTED)); + + type ExcelData = { + 'Teljes név': string; + 'NEPTUN kód': string; + 'SZIG szám': string; + }; + + const dataToExport: ExcelData[] = distributedApplications.map((a) => ({ + 'Teljes név': a.user.fullName, + 'NEPTUN kód': a.user.neptun ?? '-', + 'SZIG szám': a.user.idNumber ?? '-', + })); + + const excelFile = generateXlsx(dataToExport, 'schbody_applications_export'); + saveAs(excelFile, 'schbody_applications_export.xlsx'); + }; + if (period?.error) return
Hiba történt: {period?.error.message}
; return ( @@ -251,6 +277,7 @@ export default function Page(props: { params: Promise<{ id: number }> }) { onExportPassesClicked={onPassExport} onExportApplicationsClicked={onApplicationsExport} onSetToManufactured={onSetToManufactured} + onExportToExcelClicked={onExportToExcel} /> )} diff --git a/apps/frontend/src/lib/xlsx.ts b/apps/frontend/src/lib/xlsx.ts new file mode 100644 index 0000000..762ddd6 --- /dev/null +++ b/apps/frontend/src/lib/xlsx.ts @@ -0,0 +1,21 @@ +'use client'; + +import { utils, write } from 'xlsx'; + +/** + * Generates an XLSX file from the provided data and returns it as a Blob. + * + * @param data - An array of objects representing the data to be included in the XLSX file. + * @param fileName - The name of the file (without extension) to be used for the worksheet. + * @returns A Blob representing the generated XLSX file. + */ +export function generateXlsx(data: any[], fileName: string): Blob { + console.log('Data being exported to and excel file: '); + console.table(data); + const worksheet = utils.json_to_sheet(data); + const workbook = utils.book_new(); + utils.book_append_sheet(workbook, worksheet, fileName); + + const excelBuffer = write(workbook, { bookType: 'xlsx', type: 'array' }); + return new Blob([excelBuffer], { type: 'application/octet-stream' }); +} diff --git a/yarn.lock b/yarn.lock index 40d8c57..1365a0e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -474,6 +474,181 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/aix-ppc64@npm:0.25.1" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/android-arm64@npm:0.25.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/android-arm@npm:0.25.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/android-x64@npm:0.25.1" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/darwin-arm64@npm:0.25.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/darwin-x64@npm:0.25.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/freebsd-arm64@npm:0.25.1" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/freebsd-x64@npm:0.25.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-arm64@npm:0.25.1" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-arm@npm:0.25.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-ia32@npm:0.25.1" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-loong64@npm:0.25.1" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-mips64el@npm:0.25.1" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-ppc64@npm:0.25.1" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-riscv64@npm:0.25.1" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-s390x@npm:0.25.1" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-x64@npm:0.25.1" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-arm64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/netbsd-arm64@npm:0.25.1" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/netbsd-x64@npm:0.25.1" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-arm64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/openbsd-arm64@npm:0.25.1" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/openbsd-x64@npm:0.25.1" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/sunos-x64@npm:0.25.1" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/win32-arm64@npm:0.25.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/win32-ia32@npm:0.25.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/win32-x64@npm:0.25.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.2.0": version: 4.4.1 resolution: "@eslint-community/eslint-utils@npm:4.4.1" @@ -1175,7 +1350,7 @@ __metadata: "@nestjs/platform-express": "npm:^10.4.15" "@nestjs/schematics": "npm:^10.2.3" "@nestjs/swagger": "npm:^8.1.1" - "@prisma/client": "npm:^6.2.1" + "@prisma/client": "npm:^6.5.0" "@radix-ui/react-dialog": "npm:^1.1.4" "@types/express": "npm:^5.0.0" "@types/multer": "npm:^1.4.12" @@ -1188,7 +1363,7 @@ __metadata: nestjs-prisma: "npm:^0.24.0" passport: "npm:^0.7.0" passport-jwt: "npm:^4.0.1" - prisma: "npm:^6.2.1" + prisma: "npm:^6.5.0" reflect-metadata: "npm:^0.2.2" rimraf: "npm:^6.0.1" rxjs: "npm:^7.8.1" @@ -1206,7 +1381,7 @@ __metadata: resolution: "@next-nest-template/frontend@workspace:apps/frontend" dependencies: "@hookform/resolvers": "npm:^3.10.0" - "@next/eslint-plugin-next": "npm:^15.1.4" + "@next/eslint-plugin-next": "npm:15.2.2" "@radix-ui/react-accordion": "npm:^1.2.2" "@radix-ui/react-alert-dialog": "npm:^1.1.4" "@radix-ui/react-aspect-ratio": "npm:^1.1.1" @@ -1237,30 +1412,32 @@ __metadata: "@tiptap/pm": "npm:^2.11.2" "@tiptap/react": "npm:^2.11.2" "@tiptap/starter-kit": "npm:^2.11.2" + "@types/file-saver": "npm:^2" "@types/js-cookie": "npm:^3.0.6" "@types/node": "npm:^20.17.12" - "@types/react": "npm:^19.0.6" - "@types/react-dom": "npm:^19.0.3" + "@types/react": "npm:19.0.10" + "@types/react-dom": "npm:19.0.4" add: "npm:^2.0.6" axios: "npm:^1.7.9" class-variance-authority: "npm:^0.7.1" clsx: "npm:^2.1.1" cmdk: "npm:1.0.4" date-fns: "npm:^4.1.0" - eslint-config-next: "npm:^15.1.4" + eslint-config-next: "npm:15.2.2" eslint-config-prettier: "npm:^10.0.1" eslint-plugin-prettier: "npm:5.2.1" eslint-plugin-simple-import-sort: "npm:^12.1.1" + file-saver: "npm:^2.0.5" hamburger-react: "npm:^2.5.2" input-otp: "npm:^1.4.2" js-cookie: "npm:^3.0.5" jsonwebtoken: "npm:^9.0.2" lucide-react: "npm:^0.471.1" - next: "npm:^15.1.4" + next: "npm:15.2.2" postcss: "npm:^8.5.0" - react: "npm:^19.0.0" + react: "npm:19.0.0" react-day-picker: "npm:8.10.1" - react-dom: "npm:^19.0.0" + react-dom: "npm:19.0.0" react-easy-crop: "npm:^5.2.0" react-hook-form: "npm:^7.54.2" react-icons: "npm:^5.4.0" @@ -1271,78 +1448,79 @@ __metadata: tailwindcss: "npm:^3.4.17" tailwindcss-animate: "npm:^1.0.7" typescript: "npm:^5.7.3" + xlsx: "npm:^0.18.5" zod: "npm:^3.24.1" languageName: unknown linkType: soft -"@next/env@npm:15.1.4": - version: 15.1.4 - resolution: "@next/env@npm:15.1.4" - checksum: 10c0/88b8e81f97b49abdad40c7ebe5be93b0387d6c138a5c66cc1dce3a9db9d4eac8e258a1b617544ee23085111b5cdc6d5206389596e18c3370ff74cb54e60966f5 +"@next/env@npm:15.2.2": + version: 15.2.2 + resolution: "@next/env@npm:15.2.2" + checksum: 10c0/a5188353cbbb955f4c87b1d04f8d9419af3f05086b5bf640f456d3e0cd810f17811ca0a29a0b5e492d96ce636eeedc6e306f7dd191c82ff8076c00123481709c languageName: node linkType: hard -"@next/eslint-plugin-next@npm:15.1.4, @next/eslint-plugin-next@npm:^15.1.4": - version: 15.1.4 - resolution: "@next/eslint-plugin-next@npm:15.1.4" +"@next/eslint-plugin-next@npm:15.2.2": + version: 15.2.2 + resolution: "@next/eslint-plugin-next@npm:15.2.2" dependencies: fast-glob: "npm:3.3.1" - checksum: 10c0/6b5356275027e7b597914aa410805dab6b988c81c7ec0855e829e967d0064b9512828efc5d3b8826b798b30f1494618c82c5067c36d6d7837071ed670d690eab + checksum: 10c0/fce7a9f4be9541b1a67ca6a94903559bfdcec293e658a94ca8dac987de5dc7039d317b8d0c90eb119bf701eba12dab425875d3478aceca7b29fe6bd1cfd886ef languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:15.1.4": - version: 15.1.4 - resolution: "@next/swc-darwin-arm64@npm:15.1.4" +"@next/swc-darwin-arm64@npm:15.2.2": + version: 15.2.2 + resolution: "@next/swc-darwin-arm64@npm:15.2.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:15.1.4": - version: 15.1.4 - resolution: "@next/swc-darwin-x64@npm:15.1.4" +"@next/swc-darwin-x64@npm:15.2.2": + version: 15.2.2 + resolution: "@next/swc-darwin-x64@npm:15.2.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:15.1.4": - version: 15.1.4 - resolution: "@next/swc-linux-arm64-gnu@npm:15.1.4" +"@next/swc-linux-arm64-gnu@npm:15.2.2": + version: 15.2.2 + resolution: "@next/swc-linux-arm64-gnu@npm:15.2.2" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:15.1.4": - version: 15.1.4 - resolution: "@next/swc-linux-arm64-musl@npm:15.1.4" +"@next/swc-linux-arm64-musl@npm:15.2.2": + version: 15.2.2 + resolution: "@next/swc-linux-arm64-musl@npm:15.2.2" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:15.1.4": - version: 15.1.4 - resolution: "@next/swc-linux-x64-gnu@npm:15.1.4" +"@next/swc-linux-x64-gnu@npm:15.2.2": + version: 15.2.2 + resolution: "@next/swc-linux-x64-gnu@npm:15.2.2" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:15.1.4": - version: 15.1.4 - resolution: "@next/swc-linux-x64-musl@npm:15.1.4" +"@next/swc-linux-x64-musl@npm:15.2.2": + version: 15.2.2 + resolution: "@next/swc-linux-x64-musl@npm:15.2.2" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:15.1.4": - version: 15.1.4 - resolution: "@next/swc-win32-arm64-msvc@npm:15.1.4" +"@next/swc-win32-arm64-msvc@npm:15.2.2": + version: 15.2.2 + resolution: "@next/swc-win32-arm64-msvc@npm:15.2.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:15.1.4": - version: 15.1.4 - resolution: "@next/swc-win32-x64-msvc@npm:15.1.4" +"@next/swc-win32-x64-msvc@npm:15.2.2": + version: 15.2.2 + resolution: "@next/swc-win32-x64-msvc@npm:15.2.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1437,61 +1615,74 @@ __metadata: languageName: node linkType: hard -"@prisma/client@npm:^6.2.1": - version: 6.2.1 - resolution: "@prisma/client@npm:6.2.1" +"@prisma/client@npm:^6.5.0": + version: 6.5.0 + resolution: "@prisma/client@npm:6.5.0" peerDependencies: prisma: "*" + typescript: ">=5.1.0" peerDependenciesMeta: prisma: optional: true - checksum: 10c0/d6313da2408f2034bfcda1fa3500e6e9fdf13b8ca68d0f31804d6e540e9fedfd4c556bd2258488e5928fa383e5e3a43aa6469c819f8f8bed6250ef983feee5f6 + typescript: + optional: true + checksum: 10c0/2bf6a213bd65de20092b2773b9bb105f023558da2214e92542fe745255778dee8386068ec6648d0d651e0af7443ca69ed9278aa505c0342d39a30098fd0090d2 languageName: node linkType: hard -"@prisma/debug@npm:6.2.1": - version: 6.2.1 - resolution: "@prisma/debug@npm:6.2.1" - checksum: 10c0/08b3ad0b29c87cc3d8d7778c019dbc168d7779587dd3b686388ca261edd07778e20b72e68936e6884d1746587c91ab63c28311866a98351cb2add0edcb1a6664 +"@prisma/config@npm:6.5.0": + version: 6.5.0 + resolution: "@prisma/config@npm:6.5.0" + dependencies: + esbuild: "npm:>=0.12 <1" + esbuild-register: "npm:3.6.0" + checksum: 10c0/6096e946aa8787cd216a9661ab12641776cfc21c2142f25b2fa3a199042a761de3fbfeca0bf0e8acd77f4913e8ecb1cea37a04ecf51a4a110f06c17963665b7c languageName: node linkType: hard -"@prisma/engines-version@npm:6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69": - version: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 - resolution: "@prisma/engines-version@npm:6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69" - checksum: 10c0/37c05d2a4b35b7ed8589e17f5b8820962453e55720c7b01753b4e248ebd53a1df71271e8e16ffbcddacf332bf01c53f691c3d7ec3fd1790c45ac7378c82eef75 +"@prisma/debug@npm:6.5.0": + version: 6.5.0 + resolution: "@prisma/debug@npm:6.5.0" + checksum: 10c0/e33ba5750642c3ecf73844df7b8d7a1b35bd45601e6449bd6fdd56df7bf5a1c09f3b034594b2cd150aae86e822b6de5f29fae5681a0c94c38b1e393ce439e923 languageName: node linkType: hard -"@prisma/engines@npm:6.2.1": - version: 6.2.1 - resolution: "@prisma/engines@npm:6.2.1" +"@prisma/engines-version@npm:6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60": + version: 6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60 + resolution: "@prisma/engines-version@npm:6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60" + checksum: 10c0/92792c7f4ece28bfb3f6be14c8d3c625bc201a802ab9c71cf5b04e7e1fef827c75e73f63258c3ae5e63658eec97306d172b8104e5ee4e73583e7cb586479d724 + languageName: node + linkType: hard + +"@prisma/engines@npm:6.5.0": + version: 6.5.0 + resolution: "@prisma/engines@npm:6.5.0" dependencies: - "@prisma/debug": "npm:6.2.1" - "@prisma/engines-version": "npm:6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69" - "@prisma/fetch-engine": "npm:6.2.1" - "@prisma/get-platform": "npm:6.2.1" - checksum: 10c0/8ab84560374ee66f56f08f0e8b63e16715933617cda7e3aa95238555dba2b7af0445c114a634b70716e76bbac776911ee6dd7d2dfdc439435f2261d03649550d + "@prisma/debug": "npm:6.5.0" + "@prisma/engines-version": "npm:6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60" + "@prisma/fetch-engine": "npm:6.5.0" + "@prisma/get-platform": "npm:6.5.0" + checksum: 10c0/61cc51e28f403a9540183d7276e3f4e191daa854005642f80747f122f4d99e322d036b112da5ab0be77938198b5298138243c72d9d56e6841066b808a6c73f93 languageName: node linkType: hard -"@prisma/fetch-engine@npm:6.2.1": - version: 6.2.1 - resolution: "@prisma/fetch-engine@npm:6.2.1" +"@prisma/fetch-engine@npm:6.5.0": + version: 6.5.0 + resolution: "@prisma/fetch-engine@npm:6.5.0" dependencies: - "@prisma/debug": "npm:6.2.1" - "@prisma/engines-version": "npm:6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69" - "@prisma/get-platform": "npm:6.2.1" - checksum: 10c0/0a50655f17be92cac2b0e8f235ae6a2700669ccc13ae2b43a62ccbc6525050b90c00183620a4ae22ac793d2a9894654f4545ef0db52a21fd575e89ad076a34ab + "@prisma/debug": "npm:6.5.0" + "@prisma/engines-version": "npm:6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60" + "@prisma/get-platform": "npm:6.5.0" + checksum: 10c0/4f26fb07fd183f9a975674b29f976d94fe0301a4fd0571b85b3f6995127ce70d0a65e84a821daef95f4053ae3a02b0cc9535e1e113d363f70d3f606eca587df5 languageName: node linkType: hard -"@prisma/get-platform@npm:6.2.1": - version: 6.2.1 - resolution: "@prisma/get-platform@npm:6.2.1" +"@prisma/get-platform@npm:6.5.0": + version: 6.5.0 + resolution: "@prisma/get-platform@npm:6.5.0" dependencies: - "@prisma/debug": "npm:6.2.1" - checksum: 10c0/d7be2d973cfef8ca62cf2283b190d6bf07b1afe03358f5f42744f41e4493ed96b33ae46fa5802e6570b1bd6c63d8e3d677439abb091ac3029265a07343ef122d + "@prisma/debug": "npm:6.5.0" + checksum: 10c0/45033d8c20a19d6e0329ff15901606a53be9f43c843ddfd99848c8ac388b12e1b65c202e95a1d5cdc7da4bfee77ed3795ba3c7e0b1d1fa6380c9a253e1bedfd2 languageName: node linkType: hard @@ -3282,6 +3473,13 @@ __metadata: languageName: node linkType: hard +"@types/file-saver@npm:^2": + version: 2.0.7 + resolution: "@types/file-saver@npm:2.0.7" + checksum: 10c0/c6b88a1aea8eec58469da2a90828fef6e9d5d590c7094fb959783d7c32878af80d39439734f3d41b78355dadb507f606e3d04a29a160c85411c65251e58df847 + languageName: node + linkType: hard + "@types/http-errors@npm:*": version: 2.0.4 resolution: "@types/http-errors@npm:2.0.4" @@ -3391,21 +3589,21 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:^19.0.3": - version: 19.0.3 - resolution: "@types/react-dom@npm:19.0.3" +"@types/react-dom@npm:19.0.4": + version: 19.0.4 + resolution: "@types/react-dom@npm:19.0.4" peerDependencies: "@types/react": ^19.0.0 - checksum: 10c0/3867427b333cbe8cbba496d7cc20ec9676d32c25ae44f4d1263a4129d42e57cf4adf0039ad263432f1215b88075c27d326e7eb4ed646128235d01a76e661d48f + checksum: 10c0/4e71853919b94df9e746a4bd73f8180e9ae13016333ce9c543dcba9f4f4c8fe6e28b038ca6ee61c24e291af8e03ca3bc5ded17c46dee938fcb32d71186fda7a3 languageName: node linkType: hard -"@types/react@npm:^19.0.6": - version: 19.0.6 - resolution: "@types/react@npm:19.0.6" +"@types/react@npm:19.0.10": + version: 19.0.10 + resolution: "@types/react@npm:19.0.10" dependencies: csstype: "npm:^3.0.2" - checksum: 10c0/4ddb0ad2a92940c0323996c2efbae9712e562e1d60d1015ba5088ca8e8db32f1804516a2971e6fa7a95bda9aa9c1896c86c32739213ef12527924c021b0145bf + checksum: 10c0/41884cca21850c8b2d6578b172ca0ca4fff6021251a68532b19f2031ac23dc5a9222470208065f8d9985d367376047df2f49ece8d927f7d04cdc94922b1eb34b languageName: node linkType: hard @@ -4034,6 +4232,13 @@ __metadata: languageName: node linkType: hard +"adler-32@npm:~1.3.0": + version: 1.3.1 + resolution: "adler-32@npm:1.3.1" + checksum: 10c0/c1b7185526ee1bbe0eac8ed414d5226af4cd02a0540449a72ec1a75f198c5e93352ba4d7b9327231eea31fd83c2d080d13baf16d8ed5710fb183677beb85f612 + languageName: node + linkType: hard + "agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": version: 7.1.1 resolution: "agent-base@npm:7.1.1" @@ -4774,6 +4979,16 @@ __metadata: languageName: node linkType: hard +"cfb@npm:~1.2.1": + version: 1.2.2 + resolution: "cfb@npm:1.2.2" + dependencies: + adler-32: "npm:~1.3.0" + crc-32: "npm:~1.2.0" + checksum: 10c0/87f6d9c3878268896ed6ca29dfe32a2aa078b12d0f21d8405c95911b74ab6296823d7312bbf5e18326d00b16cc697f587e07a17018c5edf7a1ba31dd5bc6da36 + languageName: node + linkType: hard + "chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" @@ -4996,6 +5211,13 @@ __metadata: languageName: node linkType: hard +"codepage@npm:~1.15.0": + version: 1.15.0 + resolution: "codepage@npm:1.15.0" + checksum: 10c0/2455b482302cb784b46dea60a8ee83f0c23e794bdd979556bdb107abe681bba722af62a37f5c955ff4efd68fdb9688c3986e719b4fd536c0e06bb25bc82abea3 + languageName: node + linkType: hard + "color-convert@npm:^1.9.0": version: 1.9.3 resolution: "color-convert@npm:1.9.3" @@ -5219,6 +5441,15 @@ __metadata: languageName: node linkType: hard +"crc-32@npm:~1.2.0, crc-32@npm:~1.2.1": + version: 1.2.2 + resolution: "crc-32@npm:1.2.2" + bin: + crc32: bin/crc32.njs + checksum: 10c0/11dcf4a2e77ee793835d49f2c028838eae58b44f50d1ff08394a610bfd817523f105d6ae4d9b5bef0aad45510f633eb23c903e9902e4409bed1ce70cb82b9bf0 + languageName: node + linkType: hard + "create-require@npm:^1.1.0": version: 1.1.1 resolution: "create-require@npm:1.1.1" @@ -5911,6 +6142,103 @@ __metadata: languageName: node linkType: hard +"esbuild-register@npm:3.6.0": + version: 3.6.0 + resolution: "esbuild-register@npm:3.6.0" + dependencies: + debug: "npm:^4.3.4" + peerDependencies: + esbuild: ">=0.12 <1" + checksum: 10c0/77193b7ca32ba9f81b35ddf3d3d0138efb0b1429d71b39480cfee932e1189dd2e492bd32bf04a4d0bc3adfbc7ec7381ceb5ffd06efe35f3e70904f1f686566d5 + languageName: node + linkType: hard + +"esbuild@npm:>=0.12 <1": + version: 0.25.1 + resolution: "esbuild@npm:0.25.1" + dependencies: + "@esbuild/aix-ppc64": "npm:0.25.1" + "@esbuild/android-arm": "npm:0.25.1" + "@esbuild/android-arm64": "npm:0.25.1" + "@esbuild/android-x64": "npm:0.25.1" + "@esbuild/darwin-arm64": "npm:0.25.1" + "@esbuild/darwin-x64": "npm:0.25.1" + "@esbuild/freebsd-arm64": "npm:0.25.1" + "@esbuild/freebsd-x64": "npm:0.25.1" + "@esbuild/linux-arm": "npm:0.25.1" + "@esbuild/linux-arm64": "npm:0.25.1" + "@esbuild/linux-ia32": "npm:0.25.1" + "@esbuild/linux-loong64": "npm:0.25.1" + "@esbuild/linux-mips64el": "npm:0.25.1" + "@esbuild/linux-ppc64": "npm:0.25.1" + "@esbuild/linux-riscv64": "npm:0.25.1" + "@esbuild/linux-s390x": "npm:0.25.1" + "@esbuild/linux-x64": "npm:0.25.1" + "@esbuild/netbsd-arm64": "npm:0.25.1" + "@esbuild/netbsd-x64": "npm:0.25.1" + "@esbuild/openbsd-arm64": "npm:0.25.1" + "@esbuild/openbsd-x64": "npm:0.25.1" + "@esbuild/sunos-x64": "npm:0.25.1" + "@esbuild/win32-arm64": "npm:0.25.1" + "@esbuild/win32-ia32": "npm:0.25.1" + "@esbuild/win32-x64": "npm:0.25.1" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/80fca30dd0f21aec23fdfab34f0a8d5f55df5097dd7f475f2ab561d45662c32ee306f5649071cd1a0ba0614b164c48ca3dc3ee1551a4daf204b8af90e4d893f5 + languageName: node + linkType: hard + "escalade@npm:^3.1.1, escalade@npm:^3.1.2, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" @@ -5952,11 +6280,11 @@ __metadata: languageName: node linkType: hard -"eslint-config-next@npm:^15.1.4": - version: 15.1.4 - resolution: "eslint-config-next@npm:15.1.4" +"eslint-config-next@npm:15.2.2": + version: 15.2.2 + resolution: "eslint-config-next@npm:15.2.2" dependencies: - "@next/eslint-plugin-next": "npm:15.1.4" + "@next/eslint-plugin-next": "npm:15.2.2" "@rushstack/eslint-patch": "npm:^1.10.3" "@typescript-eslint/eslint-plugin": "npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" "@typescript-eslint/parser": "npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" @@ -5972,7 +6300,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/9c52e8e2c6f71e94eec0a2d2a2ee0a32d6ac3cb6b354e8364ddb8b9942b2b1ea2207c3be1532dfb296a697df27f89f6f3eb86190ecf9ffaf5528d7a3749fb012 + checksum: 10c0/b59c19a1c269ba7715fa3fc4b41bf0480ae2065999139ac5a14cb275fb3a8999c615f977769f0d7a7c18578f3cd33afcbb8756d6df4b65b5a727466c4aff70ea languageName: node linkType: hard @@ -6514,6 +6842,13 @@ __metadata: languageName: node linkType: hard +"file-saver@npm:^2.0.5": + version: 2.0.5 + resolution: "file-saver@npm:2.0.5" + checksum: 10c0/0a361f683786c34b2574aea53744cb70d0a6feb0fa5e3af00f2fcb6c9d40d3049cc1470e38c6c75df24219f247f6fb3076f86943958f580e62ee2ffe897af8b1 + languageName: node + linkType: hard + "fill-range@npm:^7.1.1": version: 7.1.1 resolution: "fill-range@npm:7.1.1" @@ -6661,6 +6996,13 @@ __metadata: languageName: node linkType: hard +"frac@npm:~1.1.2": + version: 1.1.2 + resolution: "frac@npm:1.1.2" + checksum: 10c0/640740eb58b590eb38c78c676955bee91cd22d854f5876241a15c49d4495fa53a84898779dcf7eca30aabfe1c1a4a705752b5f224934257c5dda55c545413ba7 + languageName: node + linkType: hard + "framer-motion@npm:^12.0.6": version: 12.0.6 resolution: "framer-motion@npm:12.0.6" @@ -8795,19 +9137,19 @@ __metadata: languageName: unknown linkType: soft -"next@npm:^15.1.4": - version: 15.1.4 - resolution: "next@npm:15.1.4" - dependencies: - "@next/env": "npm:15.1.4" - "@next/swc-darwin-arm64": "npm:15.1.4" - "@next/swc-darwin-x64": "npm:15.1.4" - "@next/swc-linux-arm64-gnu": "npm:15.1.4" - "@next/swc-linux-arm64-musl": "npm:15.1.4" - "@next/swc-linux-x64-gnu": "npm:15.1.4" - "@next/swc-linux-x64-musl": "npm:15.1.4" - "@next/swc-win32-arm64-msvc": "npm:15.1.4" - "@next/swc-win32-x64-msvc": "npm:15.1.4" +"next@npm:15.2.2": + version: 15.2.2 + resolution: "next@npm:15.2.2" + dependencies: + "@next/env": "npm:15.2.2" + "@next/swc-darwin-arm64": "npm:15.2.2" + "@next/swc-darwin-x64": "npm:15.2.2" + "@next/swc-linux-arm64-gnu": "npm:15.2.2" + "@next/swc-linux-arm64-musl": "npm:15.2.2" + "@next/swc-linux-x64-gnu": "npm:15.2.2" + "@next/swc-linux-x64-musl": "npm:15.2.2" + "@next/swc-win32-arm64-msvc": "npm:15.2.2" + "@next/swc-win32-x64-msvc": "npm:15.2.2" "@swc/counter": "npm:0.1.3" "@swc/helpers": "npm:0.5.15" busboy: "npm:1.6.0" @@ -8852,7 +9194,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: 10c0/55325f95e1a8eb13de4ff0f7d7945c130226139bc308950e4fb9002bacae1b3a012bf1488e259027e606cdc460826fa91408e07c79d53c6f69b516b23a4741c5 + checksum: 10c0/ed303ae014fa8236afa556d178fe426a81aa2baebff912dfbfbb9178a955cbc7d528d27608b66d6d9fb5b33a415ad550cdd984d9b6dbc2a6ff7f2d991b760029 languageName: node linkType: hard @@ -9579,18 +9921,24 @@ __metadata: languageName: node linkType: hard -"prisma@npm:^6.2.1": - version: 6.2.1 - resolution: "prisma@npm:6.2.1" +"prisma@npm:^6.5.0": + version: 6.5.0 + resolution: "prisma@npm:6.5.0" dependencies: - "@prisma/engines": "npm:6.2.1" + "@prisma/config": "npm:6.5.0" + "@prisma/engines": "npm:6.5.0" fsevents: "npm:2.3.3" + peerDependencies: + typescript: ">=5.1.0" dependenciesMeta: fsevents: optional: true + peerDependenciesMeta: + typescript: + optional: true bin: prisma: build/index.js - checksum: 10c0/814734faeac3b36ef571732b65d90a915c9375e3f2cb230da50ac33f2d1b88ccbd3497c5878a7326b74161fd94c70c56cb63d9f88df28a662579da7980ded8f2 + checksum: 10c0/d859336d9b121987723e775d48a69e78b7eed7d6c56ccc040d2d53f3e6d999dc04b23021320bc4ee2c6db968929c2a863ae747c870f359b1faf831ced6f8132c languageName: node linkType: hard @@ -9967,7 +10315,7 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:^19.0.0": +"react-dom@npm:19.0.0": version: 19.0.0 resolution: "react-dom@npm:19.0.0" dependencies: @@ -10119,7 +10467,7 @@ __metadata: languageName: node linkType: hard -"react@npm:^19.0.0": +"react@npm:19.0.0": version: 19.0.0 resolution: "react@npm:19.0.0" checksum: 10c0/9cad8f103e8e3a16d15cb18a0d8115d8bd9f9e1ce3420310aea381eb42aa0a4f812cf047bb5441349257a05fba8a291515691e3cb51267279b2d2c3253f38471 @@ -10951,6 +11299,15 @@ __metadata: languageName: node linkType: hard +"ssf@npm:~0.11.2": + version: 0.11.2 + resolution: "ssf@npm:0.11.2" + dependencies: + frac: "npm:~1.1.2" + checksum: 10c0/c3fd24a90dc37a9dc5c4154cb4121e27507c33ebfeee3532aaf03625756b2c006cf79c0a23db0ba16c4a6e88e1349455327867e03453fc9d54b32c546bc18ca6 + languageName: node + linkType: hard + "ssri@npm:^10.0.0": version: 10.0.6 resolution: "ssri@npm:10.0.6" @@ -12299,6 +12656,13 @@ __metadata: languageName: node linkType: hard +"wmf@npm:~1.0.1": + version: 1.0.2 + resolution: "wmf@npm:1.0.2" + checksum: 10c0/3fa5806f382632cadfe65d4ef24f7a583b0c0720171edb00e645af5248ad0bb6784e8fcee1ccd9f475a1a12a7523e2512e9c063731fbbdae14dc469e1c033d93 + languageName: node + linkType: hard + "word-wrap@npm:^1.2.5": version: 1.2.5 resolution: "word-wrap@npm:1.2.5" @@ -12306,6 +12670,13 @@ __metadata: languageName: node linkType: hard +"word@npm:~0.3.0": + version: 0.3.0 + resolution: "word@npm:0.3.0" + checksum: 10c0/c6da2a9f7a0d81a32fa6768a638d21b153da2be04f94f3964889c7cc1365d74b6ecb43b42256c3f926cd59512d8258206991c78c21000c3da96d42ff1238b840 + languageName: node + linkType: hard + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -12339,6 +12710,23 @@ __metadata: languageName: node linkType: hard +"xlsx@npm:^0.18.5": + version: 0.18.5 + resolution: "xlsx@npm:0.18.5" + dependencies: + adler-32: "npm:~1.3.0" + cfb: "npm:~1.2.1" + codepage: "npm:~1.15.0" + crc-32: "npm:~1.2.1" + ssf: "npm:~0.11.2" + wmf: "npm:~1.0.1" + word: "npm:~0.3.0" + bin: + xlsx: bin/xlsx.njs + checksum: 10c0/787cfa77034a3e86fdcde21572f1011c8976f87823a5e0ee5057f13b2f6e48f17a1710732a91b8ae15d7794945c7cba8a3ca904ea7150e028260b0ab8e1158c8 + languageName: node + linkType: hard + "xtend@npm:^4.0.0": version: 4.0.2 resolution: "xtend@npm:4.0.2"