From ef676a95f43cc40558b153a18c5e70e5b9dbb035 Mon Sep 17 00:00:00 2001 From: schakal00783 Date: Thu, 17 Sep 2026 22:52:20 +0200 Subject: [PATCH] feat: perinco Pulse - Zeiterfassung fuer perinco Erste Fassung, live unter https://pulse.perinco.de. Frontend React 19 + TypeScript + Tailwind 4 (Vite), Backend Express mit mysql2 auf MariaDB, Exporte als PDF (pdfkit), Excel (exceljs) und CSV. Aufbau, Designsystem und die sieben Themes kommen aus dem perinco CRM. Fachlich: - Buchung mit Wochen-, Monats- und Jahresansicht, Zeiten als 1:23 oder 1,5 - Projekte mit n Budgettoepfen: Laufzeit, Volumen, Sperre bei Ablauf oder aufgebrauchtem Budget, Buchung nur auf den passenden Topf - Kunden, Team mit Hierarchie, Reports im Harvest-Stil, Monatsexporte - Rollen user/lead/management/admin, doppelt geprueft (Menue und Backend) - SSO gegen Microsoft Entra ID, Uebernahme der AD-Benutzer per Drag & Drop Co-Authored-By: Claude Opus 5 (1M context) --- .gitignore | 9 + README.md | 129 + Report-Kunde.png | Bin 0 -> 252199 bytes Report.png | Bin 0 -> 280183 bytes deploy/deploy.ps1 | 57 + deploy/perinco-pulse-backend.service | 26 + deploy/pulse.perinco.de.conf | 44 + index.html | 57 + package-lock.json | 2370 +++++++++++++++++ package.json | 26 + public/favicon.png | Bin 0 -> 3042 bytes public/logo.png | Bin 0 -> 162277 bytes public/themes/aura-clouds-far.svg | 19 + public/themes/aura-clouds-near.svg | 18 + public/themes/aura-moon.svg | 25 + public/themes/aura-sidebar.svg | 20 + public/themes/aura-stars.svg | 15 + public/themes/aura-sun.svg | 22 + public/themes/cyberpunk-header.svg | 93 + public/themes/cyberpunk-sidebar.svg | 106 + public/themes/outdoor-header.svg | 57 + public/themes/outdoor-sidebar.svg | 70 + public/themes/pixel-header.svg | 68 + public/themes/pixel-sidebar.svg | 66 + public/themes/rainy-header.svg | 46 + public/themes/rainy-sidebar.svg | 54 + public/themes/snow-header.svg | 79 + public/themes/snow-sidebar.svg | 65 + server/.env.example | 30 + server/assets/logo.png | Bin 0 -> 162277 bytes server/package-lock.json | 2902 +++++++++++++++++++++ server/package.json | 23 + server/src/db.js | 94 + server/src/export/render.js | 450 ++++ server/src/lib/access.js | 45 + server/src/lib/dates.js | 116 + server/src/lib/entries.js | 95 + server/src/lib/projects.js | 375 +++ server/src/lib/settings.js | 101 + server/src/lib/sso.js | 274 ++ server/src/middleware/auth.js | 93 + server/src/routes/auth.js | 170 ++ server/src/routes/customers.js | 161 ++ server/src/routes/dashboard.js | 158 ++ server/src/routes/directory.js | 88 + server/src/routes/entries.js | 174 ++ server/src/routes/exports.js | 259 ++ server/src/routes/projects.js | 385 +++ server/src/routes/reports.js | 234 ++ server/src/routes/settings.js | 182 ++ server/src/routes/users.js | 229 ++ server/src/schema.sql | 147 ++ server/src/server.js | 72 + server/test/sso-filter.test.mjs | 49 + src/App.tsx | 84 + src/components/Toast.tsx | 78 + src/components/booking/Booking.tsx | 305 +++ src/components/booking/EntryModal.tsx | 319 +++ src/components/booking/ExportDialog.tsx | 170 ++ src/components/booking/MonthView.tsx | 66 + src/components/booking/WeekView.tsx | 164 ++ src/components/booking/YearView.tsx | 95 + src/components/booking/budget.ts | 78 + src/components/customers/CustomerForm.tsx | 120 + src/components/customers/Customers.tsx | 319 +++ src/components/dashboard/Dashboard.tsx | 265 ++ src/components/layout/AuraSky.tsx | 102 + src/components/layout/Header.tsx | 68 + src/components/layout/LoginScreen.tsx | 250 ++ src/components/layout/MobileNav.tsx | 92 + src/components/layout/PulseMark.tsx | 31 + src/components/layout/RainyWeather.tsx | 290 ++ src/components/layout/Sidebar.tsx | 107 + src/components/layout/SnowWeather.tsx | 424 +++ src/components/projects/ProjectDetail.tsx | 441 ++++ src/components/projects/ProjectForm.tsx | 405 +++ src/components/projects/Projects.tsx | 260 ++ src/components/reports/CustomerReport.tsx | 185 ++ src/components/reports/ExportMenu.tsx | 116 + src/components/reports/ProjectReport.tsx | 248 ++ src/components/reports/ReportTable.tsx | 124 + src/components/reports/Reports.tsx | 260 ++ src/components/settings/AccountDialog.tsx | 102 + src/components/settings/Settings.tsx | 437 ++++ src/components/settings/SsoDirectory.tsx | 332 +++ src/components/team/Team.tsx | 266 ++ src/components/team/UserForm.tsx | 211 ++ src/components/team/hierarchy.ts | 54 + src/components/ui/Icon.tsx | 68 + src/components/ui/Modal.tsx | 135 + src/components/ui/charts.tsx | 420 +++ src/components/ui/controls.tsx | 324 +++ src/index.css | 1392 ++++++++++ src/lib/api.ts | 378 +++ src/lib/auth.tsx | 116 + src/lib/format.ts | 169 ++ src/lib/hooks.ts | 124 + src/lib/router.tsx | 46 + src/lib/theme.tsx | 242 ++ src/main.tsx | 23 + src/types.ts | 234 ++ src/vite-env.d.ts | 1 + tsconfig.json | 25 + vite.config.ts | 18 + 104 files changed, 21030 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 Report-Kunde.png create mode 100644 Report.png create mode 100644 deploy/deploy.ps1 create mode 100644 deploy/perinco-pulse-backend.service create mode 100644 deploy/pulse.perinco.de.conf create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.png create mode 100644 public/logo.png create mode 100644 public/themes/aura-clouds-far.svg create mode 100644 public/themes/aura-clouds-near.svg create mode 100644 public/themes/aura-moon.svg create mode 100644 public/themes/aura-sidebar.svg create mode 100644 public/themes/aura-stars.svg create mode 100644 public/themes/aura-sun.svg create mode 100644 public/themes/cyberpunk-header.svg create mode 100644 public/themes/cyberpunk-sidebar.svg create mode 100644 public/themes/outdoor-header.svg create mode 100644 public/themes/outdoor-sidebar.svg create mode 100644 public/themes/pixel-header.svg create mode 100644 public/themes/pixel-sidebar.svg create mode 100644 public/themes/rainy-header.svg create mode 100644 public/themes/rainy-sidebar.svg create mode 100644 public/themes/snow-header.svg create mode 100644 public/themes/snow-sidebar.svg create mode 100644 server/.env.example create mode 100644 server/assets/logo.png create mode 100644 server/package-lock.json create mode 100644 server/package.json create mode 100644 server/src/db.js create mode 100644 server/src/export/render.js create mode 100644 server/src/lib/access.js create mode 100644 server/src/lib/dates.js create mode 100644 server/src/lib/entries.js create mode 100644 server/src/lib/projects.js create mode 100644 server/src/lib/settings.js create mode 100644 server/src/lib/sso.js create mode 100644 server/src/middleware/auth.js create mode 100644 server/src/routes/auth.js create mode 100644 server/src/routes/customers.js create mode 100644 server/src/routes/dashboard.js create mode 100644 server/src/routes/directory.js create mode 100644 server/src/routes/entries.js create mode 100644 server/src/routes/exports.js create mode 100644 server/src/routes/projects.js create mode 100644 server/src/routes/reports.js create mode 100644 server/src/routes/settings.js create mode 100644 server/src/routes/users.js create mode 100644 server/src/schema.sql create mode 100644 server/src/server.js create mode 100644 server/test/sso-filter.test.mjs create mode 100644 src/App.tsx create mode 100644 src/components/Toast.tsx create mode 100644 src/components/booking/Booking.tsx create mode 100644 src/components/booking/EntryModal.tsx create mode 100644 src/components/booking/ExportDialog.tsx create mode 100644 src/components/booking/MonthView.tsx create mode 100644 src/components/booking/WeekView.tsx create mode 100644 src/components/booking/YearView.tsx create mode 100644 src/components/booking/budget.ts create mode 100644 src/components/customers/CustomerForm.tsx create mode 100644 src/components/customers/Customers.tsx create mode 100644 src/components/dashboard/Dashboard.tsx create mode 100644 src/components/layout/AuraSky.tsx create mode 100644 src/components/layout/Header.tsx create mode 100644 src/components/layout/LoginScreen.tsx create mode 100644 src/components/layout/MobileNav.tsx create mode 100644 src/components/layout/PulseMark.tsx create mode 100644 src/components/layout/RainyWeather.tsx create mode 100644 src/components/layout/Sidebar.tsx create mode 100644 src/components/layout/SnowWeather.tsx create mode 100644 src/components/projects/ProjectDetail.tsx create mode 100644 src/components/projects/ProjectForm.tsx create mode 100644 src/components/projects/Projects.tsx create mode 100644 src/components/reports/CustomerReport.tsx create mode 100644 src/components/reports/ExportMenu.tsx create mode 100644 src/components/reports/ProjectReport.tsx create mode 100644 src/components/reports/ReportTable.tsx create mode 100644 src/components/reports/Reports.tsx create mode 100644 src/components/settings/AccountDialog.tsx create mode 100644 src/components/settings/Settings.tsx create mode 100644 src/components/settings/SsoDirectory.tsx create mode 100644 src/components/team/Team.tsx create mode 100644 src/components/team/UserForm.tsx create mode 100644 src/components/team/hierarchy.ts create mode 100644 src/components/ui/Icon.tsx create mode 100644 src/components/ui/Modal.tsx create mode 100644 src/components/ui/charts.tsx create mode 100644 src/components/ui/controls.tsx create mode 100644 src/index.css create mode 100644 src/lib/api.ts create mode 100644 src/lib/auth.tsx create mode 100644 src/lib/format.ts create mode 100644 src/lib/hooks.ts create mode 100644 src/lib/router.tsx create mode 100644 src/lib/theme.tsx create mode 100644 src/main.tsx create mode 100644 src/types.ts create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4a38385 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +node_modules/ +dist/ +.env +server/.env +server/node_modules/ +*.log +.DS_Store +# Aufgabenstellung enthaelt Server-Passwoerter im Klartext +Anforderungen.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000..5e32390 --- /dev/null +++ b/README.md @@ -0,0 +1,129 @@ +# perinco Pulse + +Zeiterfassung für perinco – live unter **https://pulse.perinco.de**. +Stil, Themes und Aufbau folgen dem perinco CRM. + +| Teil | Technik | Wo | +| --- | --- | --- | +| Frontend | React 19, TypeScript, Tailwind 4, Vite | `/var/www/pulse/dist` | +| Backend | Express 4, mysql2, exceljs, pdfkit | `/var/www/pulse/server`, `127.0.0.1:5010`, Dienst `perinco-pulse-backend` (User `pulse`) | +| Datenbank | MariaDB 11.8 | `perinco_pulse` (User `pulse`) | +| Webserver | Apache Vhost `pulse.perinco.de`, Let's Encrypt | `/etc/apache2/sites-available/pulse.perinco.de*.conf` | + +Erster Login: Benutzer `admin`, Passwort aus `ADMIN_PASSWORD` in `server/.env` (wird beim ersten Start einmalig angelegt) – danach unter *Mein Konto* (unten links auf den Namen klicken) ändern. + +## Rollen und Menü + +| Rolle | Startseite | Menü | +| --- | --- | --- | +| Mitarbeiter (`user`) | Buchung | Buchung, Projekte (nur zugewiesene, ohne Beträge) | +| Vorgesetzter (`lead`) | Buchung | Dashboard (nur eigenes Team, rekursiv), Buchung, Projekte, Team, Kunden, Reports | +| Management | Dashboard | wie Vorgesetzter, sieht alles; Einstellungen nur „SSO-Verwaltung“ | +| Administrator | Einstellungen | Dashboard, Projekte, Team, Kunden, Reports, Einstellungen – keine Buchung, taucht in Auswertungen nicht auf | + +Die Startseite gilt nach jeder Anmeldung (Passwort und SSO), auch wenn noch eine alte Seite in der Adresse steht; Neuladen bleibt auf der aktuellen Seite. Das Logo oben links führt ebenfalls zur Startseite. + +Rechte werden im Menü **und** im Backend (403) geprüft. Jeder bucht nur auf Projekte, denen er zugewiesen ist. + +## Fachregeln + +- **Zeiteingabe**: `1:23` = 1 h 23 min, `1,5` / `1.5` = 1 h 30 min, außerdem `2`, `:45`, `1h 30m`. +- **Projektcode** automatisch nach Muster (Standard `{KUERZEL}-{JAHR}-{NR}` → `KUKA-2026-001`), **Anzeigename** nach Muster (Standard `{KUNDE} - {PROJEKT}` → `KUKA - PMO`). Beides in *Einstellungen → Allgemein*. +- **Projekttypen**: Billable (Preis pro Stunde oder Tag), Non-billable (intern), Festpreis (virtueller Stundensatz = Festpreis ÷ gebuchte Stunden, nur intern). +- **Budgettöpfe** (mind. einer je Projekt, beliebig viele): Bezeichnung, Laufzeit von/bis, Budget € + Satz (→ Volumen in Stunden/Tagen) oder direktes Kontingent. + - Gebucht wird nur auf einen Topf, dessen **Laufzeit das Leistungsdatum enthält**; überlappen Töpfe, zuerst der früher endende. + - Volumen erreicht **oder** Ablaufdatum überschritten → Warnung **und nicht mehr buchbar**. + - Bei Billable-Projekten verbrauchen nur abrechenbare Stunden das Volumen (Reisezeit o. ä. nicht); ist ein Topf leer, ist er für alles gesperrt. + - Warnung ab 80 % Verbrauch bzw. 14 Tage vor Ablauf (einstellbar) – im Buchungsdialog, in der Buchungsansicht und an der Projektkarte. + - Wird ein Topf geändert, ordnet Pulse vorhandene Buchungen neu zu. +- **Umsatz erbracht/offen** je Topf: Billable = abrechenbare Stunden × Satz; Festpreis = anteilig nach Kontingent (sonst nach Laufzeit), abgelaufen = voll; offen = Rest in nicht abgelaufenen Töpfen. +- **Soll/Auslastung**: Wochenstunden (Standard 40, je Benutzer überschreibbar) ÷ 5 × Arbeitstage bis heute. +- **Löschen**: Benutzer, Projekte, Kunden mit Buchungen werden nicht gelöscht, sondern deaktiviert/archiviert – Reports bleiben stimmig. SSO-Benutzer werden nur deaktiviert. + +## Exporte + +Serverseitig erzeugt, alle mit Kopf/Fuß aus *Einstellungen → Export* (Logo, Akzentfarbe, Titel, 3 Fußspalten, Unterschriftenfelder): + +- **Stundennachweis je Monat** (PDF, Excel mit Summenformeln, CSV mit UTF-8-BOM/Semikolon): eigener Nachweis, eines Teammitglieds oder aller; filterbar nach Kunde/Projekt; optional mit Sätzen und Beträgen für die Rechnung. +- **Zeitreport** nach Kunden/Projekten/Tasks/Mitarbeitern oder als Detailliste. + +## SSO / Active Directory + +**Einrichtung** (nur Administrator, *Einstellungen → SSO / Entra ID*): Microsoft Entra ID per OpenID Connect (Authorization Code, Client Secret AES-verschlüsselt in der DB). App-Registrierung mit Redirect-URI `https://pulse.perinco.de/api/auth/sso/callback`, delegiert `openid profile email`, Anwendung `User.Read.All` mit Administratorzustimmung. + +**SSO-Verwaltung** (Management und Administrator, *Einstellungen → SSO-Verwaltung*): + +- Links alle zulässigen AD-Konten, rechts die Rollen Mitarbeiter / Vorgesetzter / Management. Konto auf eine Rolle **ziehen** = nach Pulse übernehmen bzw. Rolle ändern. Alternativ Mehrfachauswahl + Knopf (Handy, Tastatur). Optional gleich einen Vorgesetzten setzen. +- Zulässig sind nur Konten mit Mail **`vorname.nachname@perinco.de`** oder **`vorname.nachname@icon-experts.de`** (Bindestriche im Namen erlaubt). Ignoriert werden Adressen mit weiteren Teilen (`adm.sascha.wolf@…`), Funktionsadressen (`info@…`), deaktivierte Konten und Konten ohne Lizenz (freigegebene Postfächer) sowie Gäste. Regel: `server/src/lib/sso.js` → `isEligible`, Tests: `cd server && npm test`. +- Existiert schon ein lokales Konto mit derselben Mail, wird es verknüpft statt doppelt angelegt. +- **Anmelden per Microsoft kann sich nur, wer übernommen wurde.** Rollen kommen ausschließlich aus Pulse, AD-Gruppen spielen keine Rolle. Administratoren können hier nicht geändert und nicht vergeben werden. +- **Abgleich**: aktualisiert Name, Mail und Jobtitel der übernommenen Konten; wer im AD gelöscht, deaktiviert oder nicht mehr zulässig ist, wird in Pulse deaktiviert. Legt nie selbst Konten an. Die AD-Liste wird 5 Minuten zwischengespeichert („Neu laden“ holt sofort). +- Externe Benutzer bleiben lokale Konten. + +## Entwicklung + +```bash +npm install && (cd server && npm install) +cp server/.env.example server/.env # Werte setzen +# DB z. B. per Tunnel: plink -L 3307:127.0.0.1:3306 root@31.70.144.60 (DB_PORT=3307, DB_NAME=perinco_pulse_dev) +(cd server && npm run dev) # Backend :5010 +npm run dev # Frontend :3110, proxyt /api +``` + +`perinco_pulse_dev` enthält Demodaten (Kunden, Projekte, ~1000 Buchungen, Testbenutzer mit Passwort `Test12345!`) und wird von der Produktion nicht benutzt. + +## Deployment + +```powershell +$env:PULSE_SSH_PASSWORD = '…' +powershell -File deploy/deploy.ps1 # baut, lädt hoch, tauscht dist atomar, startet Dienst neu +powershell -File deploy/deploy.ps1 -Deps # zusätzlich npm ci im Backend +``` + +Die Produktions-`.env` liegt nur auf dem Server (`/var/www/pulse/server/.env`, 600). `SETTINGS_KEY` nicht ändern, sonst ist das gespeicherte SSO-Secret unlesbar. + +## Anforderungs-Checkliste + +Aus Auftrag und Call-Mitschrift. + +| Anforderung | Status | Wo | +| --- | --- | --- | +| Dashboard Mgmt/Admin: Billable/Non-billable-Grafik, umschaltbar Tag/Woche/Monat/Quartal/Jahr, animiert | ✅ | Dashboard | +| Letzte Buchungen | ✅ | Dashboard | +| Mitarbeiter-Übersicht auf-/absteigend, letzte Tage/Woche/Monat/Quartal/Jahr, Filter billable/non-billable | ✅ animierte Umsortierung | Dashboard | +| Vorgesetzte sehen nur ihr Team | ✅ rekursiv, auch im Backend | Dashboard, Reports, Buchung (Teamansicht, nur lesen) | +| Buchung: Wochenansicht Standard, umschaltbar Monat/Jahr | ✅ | Buchung | +| Grünes Plus → Projekt, Task, optionaler Freitext, Zeit rechts daneben, `0:00`, `1:23` und `1,5` | ✅ | Buchungsdialog | +| Nur zugewiesene Projekte, Task optional | ✅ | Buchungsdialog | +| Zeiten bearbeiten und löschen | ✅ | Klick auf Buchung | +| Monatsexport Excel/PDF/CSV als Kundenvorlage mit Logo und Footer | ✅ (Footer-Inhalt siehe Hinweis) | Buchung → Export | +| Menü je Rolle (Dashboard/Buchung, Projekte, Team, Kunden, Reports, Einstellungen) | ✅ | Seitenleiste / mobile Leiste | +| Projekte: User nur zugewiesene; andere alle inkl. Töpfe, bearbeiten/anlegen/entfernen | ✅ | Projekte | +| Projekt wählen → Tasks darunter | ✅ | Projekte | +| Projektanlage: Name, Code automatisch, Start/Ende, Budget, Tags, Notizen, Typ billable/non-billable/Festpreis, Stunde/Tag | ✅ | Neues Projekt | +| Budgettopf: Laufzeit, Budget €, Stundensatz, Bezeichnung; n Töpfe; Balken Stunden/Tage/Budget | ✅ | Projekte | +| Hinweis beim Buchen, wann Budget endet und wieviel offen ist | ✅ | Buchungsdialog, Buchung | +| Topf voll oder abgelaufen → nicht buchbar | ✅ serverseitig erzwungen | | +| Nur auf Topf buchen, dessen Laufzeit die Leistung enthält | ✅ | | +| Töpfe bearbeiten ab Vorgesetzter | ✅ | Projekte | +| Festpreis: virtueller Stundensatz intern | ✅ | Projekt, Projektreport | +| Report: Gesamt aller Töpfe und einzelne Töpfe | ✅ | Projektreport → Budgettöpfe | +| Projekte Usern zuweisen | ✅ | Projekt → Zuweisen / Formular | +| Kunden über Projekten | ✅ | Kunden, Projektformular (+ Kunde) | +| Team: Hierarchie Vorgesetzte/Mitarbeiter, lokale User anlegen/bearbeiten/löschen, Externe | ✅ Organigramm + Liste | Team | +| Kunden anlegen/bearbeiten, wer hat welche Projekte mit welchen Mitarbeitern, Umsatz erbracht/offen, animiert | ✅ | Kunden | +| Reports wie Harvest (Report.png), interaktiv, Export Excel/PDF/CSV | ✅ | Reports → Zeitreport | +| Report für einzelne Kunden / Projekt wie Report-Kunde.png | ✅ | Reports → Kunden-/Projektreport | +| Einstellungen (nur Admin): SSO-Credentials, Userverwaltung, Kopf/Fuß der Exporte | ✅ inkl. PDF-/Excel-Vorschau | Einstellungen | +| Arbeitsstunden pro Woche (40) | ✅ | Einstellungen → Allgemein | +| Projektbezeichnungen nach Muster | ✅ | Einstellungen → Allgemein | +| Themes wie CRM (perinco, Pixel Art, Outdoor, Cyberpunk, Rainy, Snow, Aura – jeweils hell/dunkel, am Benutzer gespeichert) | ✅ | Kopfleiste | +| Lokaler Admin mit vorgegebenem Passwort, später änderbar | ✅ | Mein Konto | +| Mobil: eigene Ansicht bei Handy | ✅ untere Navigation, Tagesstreifen, Bottom-Sheets, schwebender Plus-Knopf | | +| SSO, anfangs normaler Login; AD-User auslesen, Rollen intern | ✅ vorbereitet, noch nicht gegen echten Tenant getestet | Einstellungen → SSO | + +### Offene Punkte + +- **Wordvorlage** lag nicht im Ordner. Kopf nutzt das perinco-Logo; die Fußzeilen (Adresse, Registergericht, Bank) bitte in *Einstellungen → Export* eintragen. +- **SSO** ist implementiert, braucht aber eine App-Registrierung in Entra ID zum Test. +- Nicht umgesetzt, weil nicht gefordert: Rechnungsmodul („Uninvoiced amount“ aus Harvest), gespeicherte Reports. diff --git a/Report-Kunde.png b/Report-Kunde.png new file mode 100644 index 0000000000000000000000000000000000000000..7cdeb59a1da57f28496e28ac059360ae87ba4847 GIT binary patch literal 252199 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

Pc}pWM~eOW@Lb(~ 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

f3%cJJ2GG`^WM%PfH^6nQbMTuOZt91d#9*%I+ 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 z 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

    )p%O)%&_mPfbH_X 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 literal 0 HcmV?d00001 diff --git a/Report.png b/Report.png new file mode 100644 index 0000000000000000000000000000000000000000..f42acb3ea48ebf36d826c0c84e647388c30a14be GIT binary patch literal 280183 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%0DTXpPGACsjD&=Q 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

    %b2BCnVCNTovb#x{?kLmIWz;yqlZyRa9H-4$p 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 literal 0 HcmV?d00001 diff --git a/deploy/deploy.ps1 b/deploy/deploy.ps1 new file mode 100644 index 0000000..12af9da --- /dev/null +++ b/deploy/deploy.ps1 @@ -0,0 +1,57 @@ +# perinco Pulse - Deployment auf 31.70.144.60 +# +# Baut lokal und laedt dist/ plus Backend-Quellen hoch. +# +# Aufruf aus dem Projektverzeichnis: +# $env:PULSE_SSH_PASSWORD = '...' +# powershell -File deploy/deploy.ps1 +# powershell -File deploy/deploy.ps1 -SkipBuild +# powershell -File deploy/deploy.ps1 -Deps # bei neuen Backend-Paketen + +param( + [string]$ServerHost = '31.70.144.60', + [int]$Port = 22, + [string]$User = 'root', + [string]$Password = $env:PULSE_SSH_PASSWORD, + [string]$RemotePath = '/var/www/pulse', + [switch]$SkipBuild, + [switch]$Deps +) + +$ErrorActionPreference = 'Stop' +if (-not $Password) { throw 'Kein Passwort. Setze $env:PULSE_SSH_PASSWORD oder uebergib -Password.' } + +$plink = 'C:\Program Files\PuTTY\plink.exe' +$pscp = 'C:\Program Files\PuTTY\pscp.exe' +foreach ($tool in @($plink, $pscp)) { if (-not (Test-Path $tool)) { throw "Nicht gefunden: $tool" } } + +$projectRoot = Split-Path -Parent $PSScriptRoot +Set-Location $projectRoot + +if (-not $SkipBuild) { + Write-Host '==> Frontend bauen' -ForegroundColor Green + npm run build + if ($LASTEXITCODE -ne 0) { throw 'Build fehlgeschlagen - es wird nichts hochgeladen.' } +} + +$target = "$User@$ServerHost" + +Write-Host '==> dist/ hochladen' -ForegroundColor Green +& $plink -ssh -batch -P $Port -pw $Password $target "rm -rf $RemotePath/dist.new && mkdir -p $RemotePath/dist.new" +& $pscp -r -batch -P $Port -pw $Password 'dist\*' "${target}:$RemotePath/dist.new/" + +Write-Host '==> Backend hochladen' -ForegroundColor Green +& $pscp -r -batch -P $Port -pw $Password 'server\src' "${target}:$RemotePath/server/" +& $pscp -r -batch -P $Port -pw $Password 'server\assets' "${target}:$RemotePath/server/" +& $pscp -batch -P $Port -pw $Password 'server\package.json' 'server\package-lock.json' "${target}:$RemotePath/server/" + +# dist atomar tauschen, damit niemand eine halb hochgeladene Version sieht. +$remote = "cd $RemotePath && rm -rf dist.old && (mv dist dist.old 2>/dev/null; true) && mv dist.new dist && rm -rf dist.old" +if ($Deps) { $remote = "$remote && cd $RemotePath/server && npm ci --omit=dev --no-audit --no-fund" } +$remote = "$remote && chown -R pulse:pulse $RemotePath/server && systemctl restart perinco-pulse-backend && sleep 3 && systemctl is-active perinco-pulse-backend && curl -s http://127.0.0.1:5010/api/health" + +Write-Host '==> Tauschen, neu starten, pruefen' -ForegroundColor Green +& $plink -ssh -batch -P $Port -pw $Password $target $remote + +Write-Host '' +Write-Host 'Fertig: https://pulse.perinco.de' -ForegroundColor Green diff --git a/deploy/perinco-pulse-backend.service b/deploy/perinco-pulse-backend.service new file mode 100644 index 0000000..bacc897 --- /dev/null +++ b/deploy/perinco-pulse-backend.service @@ -0,0 +1,26 @@ +[Unit] +Description=perinco Pulse Backend (Express + MariaDB) +After=network.target mariadb.service +Wants=mariadb.service + +[Service] +Type=simple +# Eigener Systembenutzer ohne Login - das Backend braucht keine Root-Rechte. +User=pulse +Group=pulse +WorkingDirectory=/var/www/pulse/server +EnvironmentFile=/var/www/pulse/server/.env +# Server laeuft auf UTC; "heute", Monatsgrenzen und Ablaufdaten gelten in Berlin. +Environment=TZ=Europe/Berlin +Environment=NODE_ENV=production +ExecStart=/usr/bin/node src/server.js +Restart=on-failure +RestartSec=5 +# Sicherheitsnetz: ein Leck soll Apache, MariaDB und das ICON CRM nicht mitreissen. +MemoryMax=768M +NoNewPrivileges=true +ProtectSystem=full +PrivateTmp=true + +[Install] +WantedBy=multi-user.target diff --git a/deploy/pulse.perinco.de.conf b/deploy/pulse.perinco.de.conf new file mode 100644 index 0000000..fd3447a --- /dev/null +++ b/deploy/pulse.perinco.de.conf @@ -0,0 +1,44 @@ +# perinco Pulse - Apache Vhost +# Ablage: /etc/apache2/sites-available/pulse.perinco.de.conf +# Aktivieren: a2ensite pulse.perinco.de && systemctl reload apache2 +# +# Reihenfolge beim Aufsetzen: +# 1. DNS A-Record pulse.perinco.de -> 31.70.144.60 +# 2. Diese Datei aktivieren (HTTP-Teil), Apache neu laden +# 3. certbot --apache -d pulse.perinco.de (legt den :443-Block selbst an) + + + ServerName pulse.perinco.de + DocumentRoot /var/www/pulse/dist + + + Options -Indexes +FollowSymLinks + AllowOverride None + Require all granted + FallbackResource /index.html + + + # Gehashte Build-Dateien duerfen dauerhaft im Cache liegen, index.html nie. + + ExpiresActive On + + ExpiresDefault "access plus 1 year" + + + + Header set Cache-Control "no-cache, must-revalidate" + + + Header always set X-Content-Type-Options "nosniff" + Header always set Referrer-Policy "strict-origin-when-cross-origin" + Header always set X-Frame-Options "SAMEORIGIN" + + # API lokal auf 127.0.0.1:5010, von aussen nur hierueber erreichbar. + ProxyPreserveHost On + ProxyPass /api http://127.0.0.1:5010/api + ProxyPassReverse /api http://127.0.0.1:5010/api + RequestHeader set X-Forwarded-Proto "https" + + ErrorLog ${APACHE_LOG_DIR}/pulse_error.log + CustomLog ${APACHE_LOG_DIR}/pulse_access.log combined + diff --git a/index.html b/index.html new file mode 100644 index 0000000..2241fbd --- /dev/null +++ b/index.html @@ -0,0 +1,57 @@ + + + + + + + + + + + Pulse · perinco + + + + + + + +

    + + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..90a995e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2370 @@ +{ + "name": "perinco-pulse", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "perinco-pulse", + "version": "1.0.0", + "dependencies": { + "@tailwindcss/vite": "^4.2.0", + "react": "^19.2.4", + "react-dom": "^19.2.4", + "tailwindcss": "^4.2.0" + }, + "devDependencies": { + "@types/node": "^22.14.0", + "@types/react": "^19.2.0", + "@types/react-dom": "^19.2.0", + "@vitejs/plugin-react": "^5.0.0", + "typescript": "~5.8.2", + "vite": "^6.2.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", + "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", + "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", + "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^22.20 || ^24.12 || >=25" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", + "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.63.3.tgz", + "integrity": "sha512-w3Jnvi1ocaVm/c7yVPpfB98XeSRBMyzp6njL5MVVbGyXjpmUkN+s6Hp4t0PqhGCCaI1ZHMKXt/w0lA1RCaLVcw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.63.3.tgz", + "integrity": "sha512-uI/ESiaIbbRYAEhzy8PCUWDp1hB0bjAqM06mW9flOoNO4Q8DQpeoREhBR5Hegfl+wpXiguyJv6XSPzEN7OxyHQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.63.3.tgz", + "integrity": "sha512-oxhrd1jmXLwWZ83eQYDXxuqRdkqkzrjR3JobKeuUyfdNZo11FuQIvqEOZhyIT7OBHxXoGslDDjN0cQcM6T0TqQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.63.3.tgz", + "integrity": "sha512-7/YiIMghVE8DrxKvNdorAaJVdriOFgOIpdStnPx8ppx5zfTwC3jBCSEAIzB7JD5404m65THl6H93UTTVUvypmg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.63.3.tgz", + "integrity": "sha512-GXFZRRoMAytaI5z6N3Zhfw0WL18Q0M8r95D5hlC4GqE/lGk8pbSJNUBoOWDfbm6dTciqHj2nU87tI5f6XhQiOg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.63.3.tgz", + "integrity": "sha512-77W+8X3ddYgPxUpB8nZFQs2Mq+wc4HVlcSRtApXLjYBcnPMkttrSnU8VwKQjeWYhMsITHFs5cWBQ8vz1Q+5RHQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.63.3.tgz", + "integrity": "sha512-FVkwK+iUC+mq+GipVK46rRVticfAPtvPUNlqlGXUDxdVk/UGjQiiiUVPUrEXdSpU2ufU0XxLGyTqDtBidDOVmg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.63.3.tgz", + "integrity": "sha512-+aGU1t3398yQOVj1Bz8o3e+KtswxAPvO+mtxtNdfXYMkXIHu7XhhkCD7/DEH9q8tF8uhDnMWvfpUKI8y1sZJsg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.63.3.tgz", + "integrity": "sha512-cR0kjpRXR2KJ2oQK8E2KTPtphs+b9hZ8IhTZubNryt/RsqgdOZBQ2Zq0q5UedtiIi0rs3jVhJh55RE1ZHUVGUA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.63.3.tgz", + "integrity": "sha512-y1RYi4Q3/9ByVWSSt9kX2ustE0B7kFYbJ6zZdVZVyqopZs3yhCTwRfrjIX4vezUJInma/Gs6BOFDJg7yZmJ0IQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.63.3.tgz", + "integrity": "sha512-DNhEA5viIj3Z5bZLE4z4oV8N5ozWqDwyt7T6KG7VdLDJ0nW+rNOYlphBl4/3HQkK75qipPLsVOfStHHOwN9WSg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.63.3.tgz", + "integrity": "sha512-17gQCqrIpXBX2Cmi9/TygnVOqGbzsba/iaqcYSL8FY7lNugg+7AiYNs5c5nKWD+NRQha36Sa0CqkJqH4XVHwnQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.63.3.tgz", + "integrity": "sha512-6LwVnZRIyINpdku/yOcI8Tm9YqLmhHK5emmlOOnW9tO0SYEm1FmKPcsSAGp0NBlqR2P04xaND4jvN6sTHqhq8A==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.63.3.tgz", + "integrity": "sha512-xMUqkTXlEUtI/p5AAukMwBRr1enU3efsTeF+bskeFfk8t1C9rcC8sLREcZXmTfAXEbvRdJVSonVJez3TMlbR3w==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.63.3.tgz", + "integrity": "sha512-S3E94co9F9WRRqEaUoQZ38K1gCz6KiM+nL7/3ijq7fDGF3OznjS5TasgYITlvl27GQKtu4lOAOsr5MFwkijvOA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.63.3.tgz", + "integrity": "sha512-1QtRDwG42x5BJI3s9mxu5rEjDnfbSnk20HQ9/ylTAYnSwYwxMVb+Vgu34wzzTQ7ogqBybebgQNUDAvZVQ38DbA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.63.3.tgz", + "integrity": "sha512-BQhejF6ZXOpxbngiNTP12GCGQeaDVL2QXGeBVViKIYzFHM5RKxTxwUMB1fr1BeNFphFMpnRqC5QSXFSa4z6UQw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.63.3.tgz", + "integrity": "sha512-SXagRwnI2Wlwlitllu59UK/nGVbD1CKPcNqDplHwIC4BqJcpXFjD32d1R/RbuISa95HdQrZM3/7v4bKiowFaLA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.63.3.tgz", + "integrity": "sha512-2IPozoEALRCziGqE8O9KMK60PMu5TS1huv4fwoeCexj+WjmcwFtX9CTOVbfXCUqcELAubEwRFPYlzb/WvwY2HQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.63.3.tgz", + "integrity": "sha512-AoxqosUHT9IX54hFn2TiN6A7d6ZKTtE6pd2bqWtqkkNJ6HJGaU6FRouGX8L1O7R/ZwsnCnpQrHzb4pDEx+UHRQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.63.3.tgz", + "integrity": "sha512-d+CaftKgmkFBzCwezMqqy1d0QNNYugqLCMcYVQWBy5SS2YfeMP8Q8ripkgx9O8IyBXXLHrJ+aaCV4U96usv6Yg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.63.3.tgz", + "integrity": "sha512-xXlDF6nR1eOuXbdDy5Hl5fmtY7teUDevF/k0O7IPoZe4Tpmdv+lgdE5JRsnhQtt37ql9P0VF2kAN9a0OCZdo+Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.63.3.tgz", + "integrity": "sha512-YtXAgLN+JP7Ay6qG3eWhc7IHMQPzLc8r3uvhAvlJIoCz/4Q32+Bl9Fmnywidh8v1GOIMmymjovfqY9ETAtysvA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.63.3.tgz", + "integrity": "sha512-WuWtSJRNo549vzcfZyEgfqb6zeSgn1F+UE5kQ+BCjzz0W4MGCjntUHkZVc1VRuAM7+ULaSyhiPxD1spyewFvkQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.63.3.tgz", + "integrity": "sha512-+lIKX7O0+IGe7WuhATaAMMeT7B76vfhXH/l9wLQL+nvyhbw2ohYCKIdWL56JfDu75CWt5oKRP4QFH/jkMtBquA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tailwindcss/node": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.3.tgz", + "integrity": "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.24.1", + "jiti": "^2.7.0", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.3.3" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.3.tgz", + "integrity": "sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.3.3", + "@tailwindcss/oxide-darwin-arm64": "4.3.3", + "@tailwindcss/oxide-darwin-x64": "4.3.3", + "@tailwindcss/oxide-freebsd-x64": "4.3.3", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.3", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.3", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.3", + "@tailwindcss/oxide-linux-x64-musl": "4.3.3", + "@tailwindcss/oxide-wasm32-wasi": "4.3.3", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.3", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.3" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.3.tgz", + "integrity": "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.3.tgz", + "integrity": "sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.3.tgz", + "integrity": "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.3.tgz", + "integrity": "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.3.tgz", + "integrity": "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.3.tgz", + "integrity": "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.3.tgz", + "integrity": "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.3.tgz", + "integrity": "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.3.tgz", + "integrity": "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.3.tgz", + "integrity": "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.11.1", + "@emnapi/runtime": "^1.11.1", + "@emnapi/wasi-threads": "^1.2.2", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.2", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.3.tgz", + "integrity": "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.3.tgz", + "integrity": "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.3.tgz", + "integrity": "sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.3.3", + "@tailwindcss/oxide": "4.3.3", + "tailwindcss": "4.3.3" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.20.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.3.tgz", + "integrity": "sha512-DZmzkmwHzXrLPAXPyKNDzlIwMMUZCVacoD25ywdy5YTKGbOx/2ld+Q38Im2zJ0vBuZP5Prd3VZutKZyXwkOS8A==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/react": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.3.0.tgz", + "integrity": "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.3.0.tgz", + "integrity": "sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.3.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.2.0.tgz", + "integrity": "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.29.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-rc.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.24", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.24.tgz", + "integrity": "sha512-hYrgxie335U08WqICoGqKRzV1HFXv6zdxwJE4ekCb80CM9a0SVVsN4QPwT67RraRo+9h8IATk6uxHJw7QSkdOg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.29.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.0.tgz", + "integrity": "sha512-3GSvyjvDI4Dur1Meg2BekJquu5uF+9R9a1+5M1Mde192eZoXbeXjzgOsgqPS2V8D5wrrip0gR5Hf/GhWQ9ZzaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.11.23", + "caniuse-lite": "^1.0.30001810", + "electron-to-chromium": "^1.5.427", + "node-releases": "^2.0.55", + "update-browserslist-db": "^1.3.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001810", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz", + "integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.430", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.430.tgz", + "integrity": "sha512-e1QEj72Y4zd8RlNZVmoTg+iCOSVwpk05IOiiQwdrkwCSVlZfPthevErhE+nckGd2YbsXfp1SkisznhGVIXP2NQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.25.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.25.1.tgz", + "integrity": "sha512-nGXts5znJzmWPu+mIE9izCOzdg63oJca2mDzGWWTth7sr4aCToKcoyFVBQwN75Ij5Pf6p510EwkTqViTRzDV+w==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.19", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz", + "integrity": "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.56", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.56.tgz", + "integrity": "sha512-x0InOIyzgdk+eyaWaRJFH5snEtiImgBgblZ2CyPrLmqqcuMQkEvcDPHbzqbD8eDsSeJbVOjn+crzyzHaM4D+/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", + "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.18", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz", + "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.0.tgz", + "integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.28.0" + }, + "peerDependencies": { + "react": "^19.3.0" + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.63.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.63.3.tgz", + "integrity": "sha512-1i2XreiAoMMXuPGD6Msj2xWrMMkHojNRKivInxGQcg7/1KuPuYlfUutLyh4drnOxUTHX9cHI4wFoat8D/NKaBw==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@napi-rs/lzma-linux-x64-gnu": "1.5.1", + "@rollup/rollup-android-arm-eabi": "4.63.3", + "@rollup/rollup-android-arm64": "4.63.3", + "@rollup/rollup-darwin-arm64": "4.63.3", + "@rollup/rollup-darwin-x64": "4.63.3", + "@rollup/rollup-freebsd-arm64": "4.63.3", + "@rollup/rollup-freebsd-x64": "4.63.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.63.3", + "@rollup/rollup-linux-arm-musleabihf": "4.63.3", + "@rollup/rollup-linux-arm64-gnu": "4.63.3", + "@rollup/rollup-linux-arm64-musl": "4.63.3", + "@rollup/rollup-linux-loong64-gnu": "4.63.3", + "@rollup/rollup-linux-loong64-musl": "4.63.3", + "@rollup/rollup-linux-ppc64-gnu": "4.63.3", + "@rollup/rollup-linux-ppc64-musl": "4.63.3", + "@rollup/rollup-linux-riscv64-gnu": "4.63.3", + "@rollup/rollup-linux-riscv64-musl": "4.63.3", + "@rollup/rollup-linux-s390x-gnu": "4.63.3", + "@rollup/rollup-linux-x64-gnu": "4.63.3", + "@rollup/rollup-linux-x64-musl": "4.63.3", + "@rollup/rollup-openbsd-x64": "4.63.3", + "@rollup/rollup-openharmony-arm64": "4.63.3", + "@rollup/rollup-win32-arm64-msvc": "4.63.3", + "@rollup/rollup-win32-ia32-msvc": "4.63.3", + "@rollup/rollup-win32-x64-gnu": "4.63.3", + "@rollup/rollup-win32-x64-msvc": "4.63.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.28.0.tgz", + "integrity": "sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tailwindcss": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.3.tgz", + "integrity": "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.3.tgz", + "integrity": "sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", + "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a05d07a --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "perinco-pulse", + "private": true, + "version": "1.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc --noEmit && vite build", + "preview": "vite preview", + "lint": "tsc --noEmit" + }, + "dependencies": { + "@tailwindcss/vite": "^4.2.0", + "react": "^19.2.4", + "react-dom": "^19.2.4", + "tailwindcss": "^4.2.0" + }, + "devDependencies": { + "@types/node": "^22.14.0", + "@types/react": "^19.2.0", + "@types/react-dom": "^19.2.0", + "@vitejs/plugin-react": "^5.0.0", + "typescript": "~5.8.2", + "vite": "^6.2.0" + } +} diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..a36208ce5f6b56e7913b722eab2b4c9e5a60aea8 GIT binary patch literal 3042 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 literal 0 HcmV?d00001 diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a94749718daccd31cd5186e53c562009926d27fc GIT binary patch literal 162277 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

    AOKR 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%0A{7sNOtmmK;ZKR(7sd53 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 literal 0 HcmV?d00001 diff --git a/public/themes/aura-clouds-far.svg b/public/themes/aura-clouds-far.svg new file mode 100644 index 0000000..6cfd4fe --- /dev/null +++ b/public/themes/aura-clouds-far.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/public/themes/aura-clouds-near.svg b/public/themes/aura-clouds-near.svg new file mode 100644 index 0000000..8ca9cb3 --- /dev/null +++ b/public/themes/aura-clouds-near.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/public/themes/aura-moon.svg b/public/themes/aura-moon.svg new file mode 100644 index 0000000..30c1c21 --- /dev/null +++ b/public/themes/aura-moon.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/themes/aura-sidebar.svg b/public/themes/aura-sidebar.svg new file mode 100644 index 0000000..163766f --- /dev/null +++ b/public/themes/aura-sidebar.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + diff --git a/public/themes/aura-stars.svg b/public/themes/aura-stars.svg new file mode 100644 index 0000000..f7868e0 --- /dev/null +++ b/public/themes/aura-stars.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/themes/aura-sun.svg b/public/themes/aura-sun.svg new file mode 100644 index 0000000..ad2b2d7 --- /dev/null +++ b/public/themes/aura-sun.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + diff --git a/public/themes/cyberpunk-header.svg b/public/themes/cyberpunk-header.svg new file mode 100644 index 0000000..9824ab0 --- /dev/null +++ b/public/themes/cyberpunk-header.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/themes/cyberpunk-sidebar.svg b/public/themes/cyberpunk-sidebar.svg new file mode 100644 index 0000000..da91abd --- /dev/null +++ b/public/themes/cyberpunk-sidebar.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/themes/outdoor-header.svg b/public/themes/outdoor-header.svg new file mode 100644 index 0000000..ec2001a --- /dev/null +++ b/public/themes/outdoor-header.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/themes/outdoor-sidebar.svg b/public/themes/outdoor-sidebar.svg new file mode 100644 index 0000000..b4cb976 --- /dev/null +++ b/public/themes/outdoor-sidebar.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/themes/pixel-header.svg b/public/themes/pixel-header.svg new file mode 100644 index 0000000..7432585 --- /dev/null +++ b/public/themes/pixel-header.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/themes/pixel-sidebar.svg b/public/themes/pixel-sidebar.svg new file mode 100644 index 0000000..b569b2b --- /dev/null +++ b/public/themes/pixel-sidebar.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/themes/rainy-header.svg b/public/themes/rainy-header.svg new file mode 100644 index 0000000..3d03595 --- /dev/null +++ b/public/themes/rainy-header.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/themes/rainy-sidebar.svg b/public/themes/rainy-sidebar.svg new file mode 100644 index 0000000..41ebdd3 --- /dev/null +++ b/public/themes/rainy-sidebar.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/themes/snow-header.svg b/public/themes/snow-header.svg new file mode 100644 index 0000000..da0f43b --- /dev/null +++ b/public/themes/snow-header.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/themes/snow-sidebar.svg b/public/themes/snow-sidebar.svg new file mode 100644 index 0000000..7f6eea9 --- /dev/null +++ b/public/themes/snow-sidebar.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/server/.env.example b/server/.env.example new file mode 100644 index 0000000..991fd97 --- /dev/null +++ b/server/.env.example @@ -0,0 +1,30 @@ +# perinco Pulse Backend +# Als .env kopieren und Werte setzen. .env niemals einchecken. + +PORT=5010 +# Nur lokal binden - von aussen ausschliesslich ueber den Apache-Reverse-Proxy. +HOST=127.0.0.1 + +DB_HOST=localhost +DB_PORT=3306 +DB_USER=pulse +DB_PASSWORD=changeme +DB_NAME=perinco_pulse + +# Signiert die Sitzungen. Langer Zufallswert: +# node -e "console.log(require('crypto').randomBytes(48).toString('hex'))" +JWT_SECRET=changeme-langer-zufallswert +JWT_EXPIRES_IN=12h + +# Verschluesselt das SSO Client Secret in der Datenbank. Nie aendern, sonst ist +# das gespeicherte Secret nicht mehr lesbar (dann in den Einstellungen neu setzen). +SETTINGS_KEY=changeme-zweiter-zufallswert + +# Wird beim ersten Start angelegt, falls noch kein Benutzer existiert. +ADMIN_USERNAME=admin +ADMIN_NAME=Administrator +ADMIN_EMAIL=admin@perinco.de +ADMIN_PASSWORD=changeme + +# Nur fuer den lokalen Vite-Dev-Server noetig. +# CORS_ORIGINS=http://localhost:3110 diff --git a/server/assets/logo.png b/server/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a94749718daccd31cd5186e53c562009926d27fc GIT binary patch literal 162277 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

    AOKR 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%0A{7sNOtmmK;ZKR(7sd53 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 literal 0 HcmV?d00001 diff --git a/server/package-lock.json b/server/package-lock.json new file mode 100644 index 0000000..520b9f1 --- /dev/null +++ b/server/package-lock.json @@ -0,0 +1,2902 @@ +{ + "name": "perinco-pulse-backend", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "perinco-pulse-backend", + "version": "1.0.0", + "dependencies": { + "bcryptjs": "^2.4.3", + "cors": "^2.8.5", + "dotenv": "^16.4.5", + "exceljs": "^4.4.0", + "express": "^4.19.2", + "jsonwebtoken": "^9.0.2", + "mysql2": "^3.11.5", + "pdfkit": "^0.15.0" + } + }, + "node_modules/@fast-csv/format": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", + "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", + "license": "MIT", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isequal": "^4.5.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" + } + }, + "node_modules/@fast-csv/format/node_modules/@types/node": { + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "license": "MIT" + }, + "node_modules/@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "license": "MIT", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/@fast-csv/parse/node_modules/@types/node": { + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.3.17.tgz", + "integrity": "sha512-tb7Iu+oZ+zWJZ3HJqwx8oNwSDIU440hmVMDPhpACWQWnrZHK99Bxs70gT1L2dnr5Hg50ZRWEFkQCAnOVVV0z1Q==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/node": { + "version": "22.20.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.3.tgz", + "integrity": "sha512-DZmzkmwHzXrLPAXPyKNDzlIwMMUZCVacoD25ywdy5YTKGbOx/2ld+Q38Im2zJ0vBuZP5Prd3VZutKZyXwkOS8A==", + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "license": "MIT", + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-ssl-profiles": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "license": "MIT" + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "license": "MIT", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.20.8", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.8.tgz", + "integrity": "sha512-JNcyFQ64OiijEkPzUBTCe+hyPXUD/3LEldGQ6iF5LR1w00mx9o7xtDWHXBY2iItjdCFGoilOLNQbH943ut7pHA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.16.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "license": "MIT", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "license": "MIT/X11", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "deprecated": "Active development of CryptoJS has been discontinued. This library is no longer maintained.", + "license": "MIT" + }, + "node_modules/dayjs": { + "version": "1.11.23", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.23.tgz", + "integrity": "sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/exceljs": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/exceljs/-/exceljs-4.4.0.tgz", + "integrity": "sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg==", + "license": "MIT", + "dependencies": { + "archiver": "^5.0.0", + "dayjs": "^1.8.34", + "fast-csv": "^4.3.1", + "jszip": "^3.10.1", + "readable-stream": "^3.6.0", + "saxes": "^5.0.1", + "tmp": "^0.2.0", + "unzipper": "^0.10.11", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/express": { + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.3.tgz", + "integrity": "sha512-Bdcs4+3qlpVlx2NRn6fgX2Ue2/gGRaPeawebgclM0ERSCqDpA+owF1fdPwjJUTAJWMTuAaxjDf+hzb0/4eKvvw==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.5", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.13", + "proxy-addr": "~2.0.7", + "qs": "~6.16.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/fast-csv": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz", + "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", + "license": "MIT", + "dependencies": { + "@fast-csv/format": "4.3.5", + "@fast-csv/parse": "4.3.6" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fontkit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-1.9.0.tgz", + "integrity": "sha512-HkW/8Lrk8jl18kzQHvAw9aTHe1cqsyx5sDnxncx652+CIfhawokEPkeM3BoIC+z/Xv7a0yMr0f3pRRwhGH455g==", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.3.13", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "deep-equal": "^2.0.5", + "dfa": "^1.2.0", + "restructure": "^2.0.1", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.3.1", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "license": "MIT", + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/jpeg-exif": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/jpeg-exif/-/jpeg-exif-1.1.4.tgz", + "integrity": "sha512-a+bKEcCjtuW5WTdgeXFzswSrdqi0jk4XlEtZlx5A94wCoBpFjfFTbo/Tra5SpNCl/YFZPvcV1dJc+TAYeg6ROQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT" + }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/jszip": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.2.tgz", + "integrity": "sha512-3l+rb15IOWtUhU0H5MFqES/T6Kh7abYwjosBey/vD6hDt8zoEffkSC5Ws5SGtgVw3gBx2NEbhTeSW1+kWkpyTQ==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/linebreak": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz", + "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==", + "license": "MIT", + "dependencies": { + "base64-js": "0.0.8", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/linebreak/node_modules/base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", + "license": "ISC" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "license": "MIT" + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "license": "MIT" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "license": "MIT" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "license": "MIT" + }, + "node_modules/lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==", + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, + "node_modules/lru.min": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.5.tgz", + "integrity": "sha512-5J9ysMYUpYIg9RF2vJpy9SinEmSviFSe0GyPpCQ4L5QSkLAgeLXlTAOu2ZwWUU5m+0SBl6gUU1R1ZQB3aKypfA==", + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/mysql2": { + "version": "3.24.4", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.24.4.tgz", + "integrity": "sha512-A2olluVlj0mvgyIRRISMEzXc51m+21mRtcMVjJyIpt2GG98+XrC9m9HzsqcMsX2LcnfccJvY5NB22g8fENBnOA==", + "license": "MIT", + "dependencies": { + "aws-ssl-profiles": "^1.1.2", + "generate-function": "^2.3.1", + "iconv-lite": "^0.7.3", + "long": "^5.3.2", + "lru.min": "^1.1.4", + "named-placeholders": "^1.1.6", + "sql-escaper": "^1.5.1" + }, + "engines": { + "node": ">= 8.0" + }, + "peerDependencies": { + "@types/node": ">= 8" + } + }, + "node_modules/mysql2/node_modules/iconv-lite": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz", + "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.6.tgz", + "integrity": "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==", + "license": "MIT", + "dependencies": { + "lru.min": "^1.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", + "license": "MIT" + }, + "node_modules/pdfkit": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/pdfkit/-/pdfkit-0.15.2.tgz", + "integrity": "sha512-s3GjpdBFSCaeDSX/v73MI5UsPqH1kjKut2AXCgxQ5OH10lPVOu5q5vLAG0OCpz/EYqKsTSw1WHpENqMvp43RKg==", + "license": "MIT", + "dependencies": { + "crypto-js": "^4.2.0", + "fontkit": "^1.8.1", + "jpeg-exif": "^1.1.4", + "linebreak": "^1.0.2", + "png-js": "^1.0.0" + } + }, + "node_modules/png-js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.1.0.tgz", + "integrity": "sha512-PM/uYGzGdNSzqeOgly68+6wKQDL1SY0a/N+OEa/+br6LnHWOAJB0Npiamnodfq3jd2LS/i2fMeOKSAILjA+m5Q==", + "dependencies": { + "browserify-zlib": "^0.2.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.8.tgz", + "integrity": "sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/qs": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.0.tgz", + "integrity": "sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==", + "license": "BSD-3-Clause", + "dependencies": { + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", + "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/restructure": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-2.0.1.tgz", + "integrity": "sha512-e0dOpjm5DseomnXx2M5lpdZ5zoHqF1+bqdMJUohoYVVQa7cBdnk7fdmeI6byNWP/kiME72EeTiSypTCVnpLiDg==", + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sql-escaper": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/sql-escaper/-/sql-escaper-1.5.2.tgz", + "integrity": "sha512-6CKD38c31SENivxOADeMNLdukOnUxUcflKtzVWzace7Riv1v7cAEym5Cx9Q7gYZ3ezIJI7ZpqecQq8cqNeSSFg==", + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=2.0.0", + "node": ">=12.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/mysqljs/sql-escaper?sponsor=1" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", + "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "license": "MIT/X11", + "engines": { + "node": "*" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicode-trie/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "license": "MIT", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/unzipper/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/unzipper/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.23", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.23.tgz", + "integrity": "sha512-JMh8aK+1B/0bk/YNupICmH5MgCq6yNLKYQUfsZtSDLLCCmxUkHjUY+oOlIa90lO7lHN1woAfpenLdlKpXy9o+A==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + }, + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "license": "MIT", + "dependencies": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + } + } +} diff --git a/server/package.json b/server/package.json new file mode 100644 index 0000000..22f5dbc --- /dev/null +++ b/server/package.json @@ -0,0 +1,23 @@ +{ + "name": "perinco-pulse-backend", + "version": "1.0.0", + "private": true, + "description": "REST-Backend fuer perinco Pulse (Zeiterfassung, MariaDB perinco_pulse)", + "main": "src/server.js", + "type": "module", + "scripts": { + "start": "node src/server.js", + "dev": "node --watch src/server.js", + "test": "node --test test/sso-filter.test.mjs" + }, + "dependencies": { + "bcryptjs": "^2.4.3", + "cors": "^2.8.5", + "dotenv": "^16.4.5", + "exceljs": "^4.4.0", + "express": "^4.19.2", + "jsonwebtoken": "^9.0.2", + "mysql2": "^3.11.5", + "pdfkit": "^0.15.0" + } +} diff --git a/server/src/db.js b/server/src/db.js new file mode 100644 index 0000000..c312b16 --- /dev/null +++ b/server/src/db.js @@ -0,0 +1,94 @@ +import fs from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import mysql from 'mysql2/promise'; +import bcrypt from 'bcryptjs'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +export const pool = mysql.createPool({ + host: process.env.DB_HOST || 'localhost', + port: Number(process.env.DB_PORT || 3306), + user: process.env.DB_USER || 'pulse', + password: process.env.DB_PASSWORD || '', + database: process.env.DB_NAME || 'perinco_pulse', + waitForConnections: true, + // Klein gehalten: dieselbe MariaDB bedient weitere Anwendungen. + connectionLimit: 8, + charset: 'utf8mb4', + dateStrings: true, + decimalNumbers: true, +}); + +/** Fuehrt schema.sql aus und legt bei leerer Benutzertabelle den Admin an. */ +export async function initDatabase() { + const sql = await fs.readFile(path.join(__dirname, 'schema.sql'), 'utf8'); + // Split an Semikolon am Zeilenende - so braucht es kein multipleStatements. + const statements = sql + .split('\n') + .filter((line) => !line.trim().startsWith('--')) + .join('\n') + .split(/;\s*$/m) + .map((s) => s.trim()) + .filter(Boolean); + + const conn = await pool.getConnection(); + try { + for (const statement of statements) await conn.query(statement); + } finally { + conn.release(); + } + + await ensureAdminUser(); + await ensureInternalCustomer(); +} + +async function ensureAdminUser() { + const [rows] = await pool.query('SELECT COUNT(*) AS n FROM pulse_users'); + if (rows[0].n > 0) return; + + const password = process.env.ADMIN_PASSWORD; + if (!password) throw new Error('ADMIN_PASSWORD fehlt - erster Administrator kann nicht angelegt werden.'); + const hash = await bcrypt.hash(password, 12); + await pool.query( + `INSERT INTO pulse_users (username, email, name, password_hash, role) + VALUES (?, ?, ?, ?, 'admin')`, + [ + process.env.ADMIN_USERNAME || 'admin', + (process.env.ADMIN_EMAIL || 'admin@perinco.de').toLowerCase(), + process.env.ADMIN_NAME || 'Administrator', + hash, + ] + ); + console.log('[Pulse] Erster Administrator angelegt.'); +} + +/* + * perinco selbst ist der Kunde fuer alle internen Taetigkeiten ("perinco + * intern"). Wird einmalig angelegt, damit direkt nach der Installation ein + * Projekt fuer nicht abrechenbare Zeiten angelegt werden kann. + */ +async function ensureInternalCustomer() { + const [rows] = await pool.query('SELECT COUNT(*) AS n FROM pulse_customers'); + if (rows[0].n > 0) return; + await pool.query( + `INSERT INTO pulse_customers (name, short_name, notes, color) VALUES (?, ?, ?, ?)`, + ['perinco GmbH', 'PERINCO', 'Interne Tätigkeiten (nicht abrechenbar)', '#6ba04a'] + ); +} + +/** Kleiner Helfer fuer Transaktionen. */ +export async function withTransaction(fn) { + const conn = await pool.getConnection(); + try { + await conn.beginTransaction(); + const result = await fn(conn); + await conn.commit(); + return result; + } catch (err) { + await conn.rollback(); + throw err; + } finally { + conn.release(); + } +} diff --git a/server/src/export/render.js b/server/src/export/render.js new file mode 100644 index 0000000..b5c3f4e --- /dev/null +++ b/server/src/export/render.js @@ -0,0 +1,450 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import PDFDocument from 'pdfkit'; +import ExcelJS from 'exceljs'; + +/* + * Gemeinsamer Unterbau fuer alle Exporte. Ein Export wird als neutrales + * Dokument beschrieben (Titel, Infoblock, Kennzahlen, Tabellen) und von hier + * aus als PDF, Excel oder CSV geschrieben - so sehen Stundenzettel und Reports + * in allen drei Formaten gleich aufgebaut aus und tragen denselben Kopf und Fuss + * aus den Einstellungen. + * + * doc = { + * title, subtitle, filename, + * info: [[Label, Wert], ...], + * kpis: [[Label, Wert], ...], + * tables: [{ title?, columns: [{ key, label, width?, align?, type? }], rows: [...], totals?: {...} }], + * signature: boolean, + * landscape: boolean, + * } + * type: 'hours' (Minuten -> 1,50), 'duration' (Minuten -> 1:30), 'money', 'date', 'text', 'percent' + */ + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const DEFAULT_LOGO = path.join(__dirname, '..', '..', 'assets', 'logo.png'); + +export function hoursDe(minutes) { + return (minutes / 60).toLocaleString('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); +} +export function durationDe(minutes) { + const m = Math.round(minutes); + return `${Math.floor(m / 60)}:${String(m % 60).padStart(2, '0')}`; +} +export function moneyDe(value) { + return `${Number(value || 0).toLocaleString('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2 })} €`; +} +export function dateDe(value) { + const [y, m, d] = String(value).slice(0, 10).split('-'); + return `${d}.${m}.${y}`; +} + +function formatCell(value, type) { + if (value == null || value === '') return ''; + switch (type) { + case 'hours': + return hoursDe(value); + case 'duration': + return durationDe(value); + case 'money': + return moneyDe(value); + case 'date': + return dateDe(value); + case 'percent': + return `${value} %`; + default: + return String(value); + } +} + +function logoBuffer(exportSettings) { + const logo = exportSettings.logo; + if (typeof logo === 'string' && logo.startsWith('data:image/')) { + const match = logo.match(/^data:image\/(png|jpe?g);base64,(.+)$/); + if (match) return Buffer.from(match[2], 'base64'); + } + return fs.readFileSync(DEFAULT_LOGO); +} + +/* ------------------------------------------------------------------ CSV -- */ + +export function renderCsv(doc) { + const escape = (v) => { + const s = String(v ?? ''); + return /[;"\n\r]/.test(s) ? `"${s.replaceAll('"', '""')}"` : s; + }; + const lines = []; + doc.tables.forEach((table, index) => { + if (index > 0) lines.push(''); + if (doc.tables.length > 1 && table.title) lines.push(escape(table.title)); + lines.push(table.columns.map((c) => escape(c.label)).join(';')); + for (const row of table.rows) { + lines.push(table.columns.map((c) => escape(formatCell(row[c.key], c.type))).join(';')); + } + if (table.totals) lines.push(table.columns.map((c) => escape(formatCell(table.totals[c.key], c.type))).join(';')); + }); + // BOM, damit Excel die Umlaute als UTF-8 liest. + return Buffer.from('' + lines.join('\r\n'), 'utf8'); +} + +/* ---------------------------------------------------------------- Excel -- */ + +export async function renderXlsx(doc, settings) { + const ex = settings.export; + const accent = (ex.accent || '#6BA04A').replace('#', '').toUpperCase(); + const workbook = new ExcelJS.Workbook(); + workbook.creator = settings.company_name || 'perinco'; + workbook.created = new Date(); + + const sheet = workbook.addWorksheet(doc.sheetName || 'Stundennachweis', { + pageSetup: { + paperSize: 9, + orientation: doc.landscape ? 'landscape' : 'portrait', + fitToPage: true, + fitToWidth: 1, + fitToHeight: 0, + margins: { left: 0.5, right: 0.5, top: 0.6, bottom: 0.8, header: 0.3, footer: 0.3 }, + }, + headerFooter: { + oddFooter: `&L&8${xlEsc(ex.footer_left)}&C&8${xlEsc(ex.footer_center)}&R&8${xlEsc(ex.footer_right)} · Seite &P von &N`, + }, + views: [{ showGridLines: false }], + }); + + const widest = doc.tables.reduce((m, t) => Math.max(m, t.columns.length), 2); + // Spaltenbreiten aus der ersten (Haupt-)Tabelle. + sheet.columns = doc.tables[0].columns.map((c) => ({ width: c.xlsWidth || Math.max(10, (c.width || 80) / 5.5) })); + + const logo = workbook.addImage({ buffer: logoBuffer(ex), extension: /^data:image\/jpe?g/.test(ex.logo || '') ? 'jpeg' : 'png' }); + sheet.addImage(logo, { tl: { col: 0, row: 0 }, ext: { width: 170, height: 77 } }); + sheet.getRow(1).height = 22; + sheet.getRow(2).height = 22; + sheet.getRow(3).height = 22; + const headerRight = sheet.getCell(1, widest); + headerRight.value = ex.header_right || ''; + headerRight.alignment = { horizontal: 'right' }; + headerRight.font = { size: 9, color: { argb: 'FF6E6E6E' } }; + + let row = 5; + const title = sheet.getCell(row, 1); + title.value = doc.title; + title.font = { size: 18, bold: true, color: { argb: `FF${accent}` } }; + row++; + if (doc.subtitle) { + sheet.getCell(row, 1).value = doc.subtitle; + sheet.getCell(row, 1).font = { size: 11, color: { argb: 'FF6E6E6E' } }; + row++; + } + row++; + + for (const [label, value] of doc.info || []) { + sheet.getCell(row, 1).value = label; + sheet.getCell(row, 1).font = { bold: true, size: 10, color: { argb: 'FF6E6E6E' } }; + sheet.getCell(row, 2).value = value; + sheet.getCell(row, 2).font = { size: 10 }; + row++; + } + if (doc.kpis?.length) { + row++; + doc.kpis.forEach(([label, value], i) => { + const col = 1 + i * 2; + if (col > Math.max(widest, 8)) return; + sheet.getCell(row, col).value = label; + sheet.getCell(row, col).font = { size: 9, color: { argb: 'FF6E6E6E' } }; + sheet.getCell(row + 1, col).value = value; + sheet.getCell(row + 1, col).font = { size: 14, bold: true }; + }); + row += 2; + } + + for (const table of doc.tables) { + row++; + if (table.title) { + sheet.getCell(row, 1).value = table.title; + sheet.getCell(row, 1).font = { bold: true, size: 12, color: { argb: `FF${accent}` } }; + row++; + } + const headRow = sheet.getRow(row); + table.columns.forEach((c, i) => { + const cell = headRow.getCell(i + 1); + cell.value = c.label; + cell.font = { bold: true, color: { argb: 'FFFFFFFF' }, size: 10 }; + cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: `FF${accent}` } }; + cell.alignment = { horizontal: c.align === 'right' ? 'right' : 'left', vertical: 'middle' }; + }); + headRow.height = 20; + row++; + const first = row; + table.rows.forEach((data, index) => { + const r = sheet.getRow(row); + table.columns.forEach((c, i) => writeXlsCell(r.getCell(i + 1), data[c.key], c, index % 2 === 1)); + row++; + }); + if (table.totals) { + const r = sheet.getRow(row); + table.columns.forEach((c, i) => { + const cell = r.getCell(i + 1); + if ((c.type === 'hours' || c.type === 'money') && table.rows.length && table.totals[c.key] != null) { + const letter = sheet.getColumn(i + 1).letter; + const value = c.type === 'hours' ? table.totals[c.key] / 60 : table.totals[c.key]; + cell.value = { formula: `SUM(${letter}${first}:${letter}${row - 1})`, result: value }; + cell.numFmt = c.type === 'money' ? '#,##0.00 "€"' : '#,##0.00'; + } else { + cell.value = formatCell(table.totals[c.key], c.type); + } + cell.font = { bold: true }; + cell.alignment = { horizontal: c.align === 'right' ? 'right' : 'left' }; + cell.border = { top: { style: 'medium', color: { argb: `FF${accent}` } } }; + }); + row++; + } + } + + if (doc.signature && ex.show_signature) { + row += 3; + const half = Math.max(2, Math.floor(widest / 2)); + for (const [col, label] of [ + [1, ex.signature_left], + [half + 1, ex.signature_right], + ]) { + const cell = sheet.getCell(row, col); + cell.border = { top: { style: 'thin', color: { argb: 'FF9A9A9A' } } }; + sheet.getCell(row, col + 1).border = { top: { style: 'thin', color: { argb: 'FF9A9A9A' } } }; + cell.value = label; + cell.font = { size: 9, color: { argb: 'FF6E6E6E' } }; + } + } + + return Buffer.from(await workbook.xlsx.writeBuffer()); +} + +function xlEsc(value) { + return String(value || '').replaceAll('&', '&&'); +} + +function writeXlsCell(cell, value, column, zebra) { + switch (column.type) { + case 'hours': + cell.value = value == null ? null : Math.round((value / 60) * 100) / 100; + cell.numFmt = '#,##0.00'; + break; + case 'duration': + cell.value = value == null ? null : durationDe(value); + break; + case 'money': + cell.value = value == null ? null : Number(value); + cell.numFmt = '#,##0.00 "€"'; + break; + case 'date': + cell.value = value ? new Date(`${String(value).slice(0, 10)}T00:00:00Z`) : null; + cell.numFmt = 'dd.mm.yyyy'; + break; + case 'percent': + cell.value = value == null ? null : value / 100; + cell.numFmt = '0%'; + break; + default: + cell.value = value ?? ''; + } + cell.font = { size: 10 }; + cell.alignment = { horizontal: column.align === 'right' ? 'right' : 'left', vertical: 'top', wrapText: column.type === 'text' || !column.type }; + if (zebra) cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFF4F7F1' } }; + cell.border = { bottom: { style: 'hair', color: { argb: 'FFDCDCDC' } } }; +} + +/* ------------------------------------------------------------------ PDF -- */ + +export function renderPdf(doc, settings) { + const ex = settings.export; + const accent = ex.accent || '#6BA04A'; + const pdf = new PDFDocument({ + size: 'A4', + layout: doc.landscape ? 'landscape' : 'portrait', + margins: { top: 40, bottom: 70, left: 42, right: 42 }, + bufferPages: true, + info: { Title: `${doc.title} ${doc.subtitle || ''}`.trim(), Author: settings.company_name || 'perinco' }, + }); + const chunks = []; + pdf.on('data', (c) => chunks.push(c)); + const done = new Promise((resolve) => pdf.on('end', () => resolve(Buffer.concat(chunks)))); + + const left = pdf.page.margins.left; + const width = pdf.page.width - left - pdf.page.margins.right; + const logo = logoBuffer(ex); + + const drawHeader = () => { + pdf.image(logo, left, 30, { fit: [120, 46] }); + pdf.fontSize(8).fillColor('#6E6E6E').font('Helvetica'); + if (ex.subtitle) pdf.text(ex.subtitle, left, 34, { width, align: 'right' }); + if (ex.header_right) pdf.text(ex.header_right, left, 46, { width, align: 'right' }); + pdf.moveTo(left, 84).lineTo(left + width, 84).lineWidth(1.5).strokeColor(accent).stroke(); + pdf.x = left; + pdf.y = 100; + }; + + drawHeader(); + pdf.on('pageAdded', drawHeader); + + // Titel + pdf.font('Helvetica-Bold').fontSize(20).fillColor('#1F1F1F').text(doc.title, left, pdf.y); + if (doc.subtitle) pdf.font('Helvetica').fontSize(11).fillColor(accent).text(doc.subtitle); + pdf.moveDown(0.8); + + // Infoblock zweispaltig + if (doc.info?.length) { + const colW = width / 2; + const startY = pdf.y; + let maxY = startY; + doc.info.forEach(([label, value], i) => { + const x = left + (i % 2) * colW; + const y = startY + Math.floor(i / 2) * 30; + pdf.font('Helvetica').fontSize(7.5).fillColor('#9A9A9A').text(label.toUpperCase(), x, y, { width: colW - 10, characterSpacing: 0.6 }); + pdf.font('Helvetica-Bold').fontSize(10).fillColor('#1F1F1F').text(String(value ?? '–'), x, y + 10, { width: colW - 10, height: 14, ellipsis: true }); + maxY = Math.max(maxY, y + 26); + }); + pdf.y = maxY + 8; + } + + // Kennzahlen als Kacheln + if (doc.kpis?.length) { + const gap = 8; + const boxW = (width - gap * (doc.kpis.length - 1)) / doc.kpis.length; + const y = pdf.y; + doc.kpis.forEach(([label, value], i) => { + const x = left + i * (boxW + gap); + pdf.roundedRect(x, y, boxW, 46, 6).fillColor('#F4F7F1').fill(); + pdf.rect(x, y, 3, 46).fillColor(accent).fill(); + pdf.font('Helvetica').fontSize(7.5).fillColor('#6E6E6E').text(label, x + 10, y + 8, { width: boxW - 16 }); + pdf.font('Helvetica-Bold').fontSize(14).fillColor('#1F1F1F').text(String(value), x + 10, y + 21, { width: boxW - 16 }); + }); + pdf.y = y + 60; + } + + for (const table of doc.tables) drawTable(pdf, table, { left, width, accent }); + + if (doc.signature && ex.show_signature) { + if (pdf.y + 80 > pdf.page.height - pdf.page.margins.bottom) pdf.addPage(); + const y = pdf.y + 45; + const w = (width - 40) / 2; + for (const [x, label] of [ + [left, ex.signature_left], + [left + w + 40, ex.signature_right], + ]) { + pdf.moveTo(x, y).lineTo(x + w, y).lineWidth(0.6).strokeColor('#9A9A9A').stroke(); + pdf.font('Helvetica').fontSize(8).fillColor('#6E6E6E').text(label || '', x, y + 4, { width: w }); + } + } + + // Fuss auf jeder Seite, inkl. Seitenzahl. + const range = pdf.bufferedPageRange(); + for (let i = 0; i < range.count; i++) { + pdf.switchToPage(range.start + i); + const bottom = pdf.page.height - 48; + const margin = pdf.page.margins.bottom; + pdf.page.margins.bottom = 0; // sonst bricht text() unten auf eine neue Seite um + pdf.moveTo(left, bottom - 8).lineTo(left + width, bottom - 8).lineWidth(0.5).strokeColor('#DCDCDC').stroke(); + pdf.font('Helvetica').fontSize(7.5).fillColor('#6E6E6E'); + const third = width / 3; + pdf.text(ex.footer_left || '', left, bottom, { width: third, align: 'left', lineGap: 1 }); + pdf.text(ex.footer_center || '', left + third, bottom, { width: third, align: 'center', lineGap: 1 }); + pdf.text(`${ex.footer_right || ''}${ex.footer_right ? '\n' : ''}Seite ${i + 1} von ${range.count}`, left + 2 * third, bottom, { + width: third, + align: 'right', + lineGap: 1, + }); + pdf.page.margins.bottom = margin; + } + + pdf.end(); + return done; +} + +function drawTable(pdf, table, { left, width, accent }) { + const fixed = table.columns.reduce((s, c) => s + (c.width || 0), 0); + const flex = table.columns.filter((c) => !c.width).length; + const widths = table.columns.map((c) => c.width || Math.max(40, (width - fixed) / Math.max(1, flex))); + const scale = width / widths.reduce((a, b) => a + b, 0); + const cols = widths.map((w) => w * scale); + const bottomLimit = () => pdf.page.height - pdf.page.margins.bottom; + + const header = () => { + const y = pdf.y; + pdf.rect(left, y, width, 18).fillColor(accent).fill(); + let x = left; + table.columns.forEach((c, i) => { + pdf.font('Helvetica-Bold').fontSize(8).fillColor('#FFFFFF').text(c.label, x + 5, y + 5, { + width: cols[i] - 10, + align: c.align || 'left', + lineBreak: false, + ellipsis: true, + }); + x += cols[i]; + }); + pdf.y = y + 18; + }; + + if (pdf.y + 60 > bottomLimit()) pdf.addPage(); + if (table.title) { + pdf.moveDown(0.6); + pdf.font('Helvetica-Bold').fontSize(11).fillColor('#1F1F1F').text(table.title, left, pdf.y); + pdf.moveDown(0.3); + } + header(); + + const drawRow = (data, { zebra = false, bold = false } = {}) => { + const texts = table.columns.map((c) => formatCell(data[c.key], c.type)); + pdf.font(bold ? 'Helvetica-Bold' : 'Helvetica').fontSize(8.5); + const height = Math.max(16, ...texts.map((t, i) => pdf.heightOfString(t || ' ', { width: cols[i] - 10 }) + 8)); + if (pdf.y + height > bottomLimit()) { + pdf.addPage(); + header(); + } + const y = pdf.y; + if (zebra) pdf.rect(left, y, width, height).fillColor('#F4F7F1').fill(); + if (bold) { + pdf.moveTo(left, y).lineTo(left + width, y).lineWidth(1.2).strokeColor(accent).stroke(); + } + let x = left; + texts.forEach((text, i) => { + pdf.font(bold ? 'Helvetica-Bold' : 'Helvetica').fontSize(8.5).fillColor('#1F1F1F').text(text, x + 5, y + 4, { + width: cols[i] - 10, + align: table.columns[i].align || 'left', + }); + x += cols[i]; + }); + if (!bold) pdf.moveTo(left, y + height).lineTo(left + width, y + height).lineWidth(0.3).strokeColor('#E4E4E4').stroke(); + pdf.y = y + height; + }; + + if (table.rows.length === 0) { + pdf.font('Helvetica-Oblique').fontSize(9).fillColor('#9A9A9A').text('Keine Buchungen im Zeitraum.', left + 5, pdf.y + 6); + pdf.y += 10; + } + table.rows.forEach((row, index) => drawRow(row, { zebra: index % 2 === 1 })); + if (table.totals) drawRow(table.totals, { bold: true }); + pdf.x = left; + pdf.moveDown(0.8); +} + +export async function sendDocument(res, doc, format, settings) { + const safe = doc.filename.replace(/[^\w.\-äöüÄÖÜß ]+/g, '_'); + let buffer; + let type; + if (format === 'pdf') { + buffer = await renderPdf(doc, settings); + type = 'application/pdf'; + } else if (format === 'xlsx') { + buffer = await renderXlsx(doc, settings); + type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; + } else { + buffer = renderCsv(doc); + type = 'text/csv; charset=utf-8'; + } + res.setHeader('Content-Type', type); + res.setHeader( + 'Content-Disposition', + `attachment; filename="${safe.replace(/[^\x20-\x7e]/g, '_')}.${format}"; filename*=UTF-8''${encodeURIComponent(safe)}.${format}` + ); + res.send(buffer); +} diff --git a/server/src/lib/access.js b/server/src/lib/access.js new file mode 100644 index 0000000..b9ca079 --- /dev/null +++ b/server/src/lib/access.js @@ -0,0 +1,45 @@ +import { pool } from '../db.js'; +import { hasRole } from '../middleware/auth.js'; + +/** + * Wessen Zeiten darf der Benutzer sehen? + * management/admin: alle (null) + * lead: sich selbst und alle, die direkt oder indirekt unter ihm haengen + * user: nur sich selbst + */ +export async function visibleUserIds(user) { + if (hasRole(user, 'management')) return null; + if (user.role !== 'lead') return [user.id]; + + const [rows] = await pool.query('SELECT id, manager_id FROM pulse_users'); + const children = new Map(); + for (const row of rows) { + if (row.manager_id == null) continue; + if (!children.has(row.manager_id)) children.set(row.manager_id, []); + children.get(row.manager_id).push(row.id); + } + const seen = new Set([user.id]); + const queue = [user.id]; + while (queue.length) { + const current = queue.shift(); + for (const child of children.get(current) || []) { + if (seen.has(child)) continue; // Schutz gegen Zyklen + seen.add(child); + queue.push(child); + } + } + return [...seen]; +} + +/** Alle Unterstellten (rekursiv) eines Vorgesetzten, ohne ihn selbst. */ +export async function teamOf(leadId) { + const ids = await visibleUserIds({ id: leadId, role: 'lead' }); + return ids.filter((id) => id !== leadId); +} + +/** SQL-Fragment fuer "user_id IN (...)" - bei null ohne Einschraenkung. */ +export function userFilter(ids, column = 'e.user_id') { + if (ids === null) return { sql: '1=1', params: [] }; + if (ids.length === 0) return { sql: '1=0', params: [] }; + return { sql: `${column} IN (${ids.map(() => '?').join(',')})`, params: ids }; +} diff --git a/server/src/lib/dates.js b/server/src/lib/dates.js new file mode 100644 index 0000000..ae7def4 --- /dev/null +++ b/server/src/lib/dates.js @@ -0,0 +1,116 @@ +/* + * Datumsrechnung ohne Zeitzonenfallen: alles laeuft ueber 'YYYY-MM-DD' und + * UTC-Mitternacht, damit ein Tag nie durch die Sommerzeit verrutscht. + */ +export function parseDate(value) { + if (typeof value !== 'string' || !/^\d{4}-\d{2}-\d{2}$/.test(value)) return null; + const date = new Date(`${value}T00:00:00Z`); + return Number.isNaN(date.getTime()) || iso(date) !== value ? null : date; +} + +export function iso(date) { + return date.toISOString().slice(0, 10); +} + +export function today() { + const now = new Date(); + // Lokales Datum des Servers (Europe/Berlin), nicht UTC. + const local = new Date(now.getTime() - now.getTimezoneOffset() * 60000); + return local.toISOString().slice(0, 10); +} + +export function addDays(value, days) { + const date = parseDate(value); + date.setUTCDate(date.getUTCDate() + days); + return iso(date); +} + +export function daysBetween(from, to) { + return Math.round((parseDate(to) - parseDate(from)) / 86400000); +} + +/** Arbeitstage Mo-Fr im geschlossenen Intervall. */ +export function workdays(from, to) { + let count = 0; + const end = parseDate(to); + for (const d = parseDate(from); d <= end; d.setUTCDate(d.getUTCDate() + 1)) { + const day = d.getUTCDay(); + if (day !== 0 && day !== 6) count++; + } + return count; +} + +export function monthRange(month) { + if (!/^\d{4}-\d{2}$/.test(month || '')) return null; + const [y, m] = month.split('-').map(Number); + if (m < 1 || m > 12) return null; + const last = new Date(Date.UTC(y, m, 0)).getUTCDate(); + return { from: `${month}-01`, to: `${month}-${String(last).padStart(2, '0')}` }; +} + +export function isoWeek(value) { + const date = parseDate(value); + const day = date.getUTCDay() || 7; + date.setUTCDate(date.getUTCDate() + 4 - day); + const yearStart = new Date(Date.UTC(date.getUTCFullYear(), 0, 1)); + return { year: date.getUTCFullYear(), week: Math.ceil(((date - yearStart) / 86400000 + 1) / 7) }; +} + +export function mondayOf(value) { + const date = parseDate(value); + const day = date.getUTCDay() || 7; + date.setUTCDate(date.getUTCDate() - day + 1); + return iso(date); +} + +export const MONTHS_DE = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']; + +export function formatDateDe(value) { + const [y, m, d] = String(value).slice(0, 10).split('-'); + return `${d}.${m}.${y}`; +} + +/** Zeitraum, in dem `value` liegt: day | week | month | quarter | year. */ +export function periodRange(granularity, value) { + const [y, m] = value.split('-').map(Number); + switch (granularity) { + case 'day': + return { from: value, to: value }; + case 'week': { + const from = mondayOf(value); + return { from, to: addDays(from, 6) }; + } + case 'month': + return monthRange(value.slice(0, 7)); + case 'quarter': { + const q = Math.floor((m - 1) / 3); + const startMonth = String(q * 3 + 1).padStart(2, '0'); + const end = monthRange(`${y}-${String(q * 3 + 3).padStart(2, '0')}`); + return { from: `${y}-${startMonth}-01`, to: end.to }; + } + case 'year': + return { from: `${y}-01-01`, to: `${y}-12-31` }; + default: + return null; + } +} + +/** Beginn des vorherigen Zeitraums (fuer Reihen und Vergleich). */ +export function previousStart(granularity, from) { + const d = parseDate(from); + if (granularity === 'day') d.setUTCDate(d.getUTCDate() - 1); + if (granularity === 'week') d.setUTCDate(d.getUTCDate() - 7); + if (granularity === 'month') d.setUTCMonth(d.getUTCMonth() - 1); + if (granularity === 'quarter') d.setUTCMonth(d.getUTCMonth() - 3); + if (granularity === 'year') d.setUTCFullYear(d.getUTCFullYear() - 1); + return iso(d); +} + +export function periodLabel(granularity, from) { + const [y, m, d] = from.split('-'); + if (granularity === 'day') return `${d}.${m}.`; + if (granularity === 'week') return `KW ${isoWeek(from).week}`; + if (granularity === 'month') return `${MONTHS_DE[Number(m) - 1].slice(0, 3)} ${y.slice(2)}`; + if (granularity === 'quarter') return `Q${Math.floor((Number(m) - 1) / 3) + 1} ${y.slice(2)}`; + return y; +} diff --git a/server/src/lib/entries.js b/server/src/lib/entries.js new file mode 100644 index 0000000..8bd64f0 --- /dev/null +++ b/server/src/lib/entries.js @@ -0,0 +1,95 @@ +import { pool } from '../db.js'; +import { displayName, hourlyRate } from './projects.js'; +import { userFilter } from './access.js'; + +/* + * Buchungen fuer Auswertungen laden - mit allem, was Dashboard, Reports, + * Kundenansicht und Exporte brauchen, und mit dem Betrag je Buchung: + * + * amount abrechenbarer Betrag (Stunden x Stundensatz des Topfs); + * nur fuer Projekte vom Typ "billable" + * fixed_amount Festpreisprojekte: Stunden x virtueller Stundensatz + * (Topfbudget / alle auf dem Topf gebuchten Stunden). Nur + * intern, in Reports per Schalter zuschaltbar. + */ +export async function loadEntries(settings, { from, to, userIds = null, customerId, projectId, taskId } = {}) { + // Administratoren sind keine Mitarbeiter - ihre Zeiten zaehlen nirgends mit. + const where = ["u.role <> 'admin'"]; + const params = []; + if (from) { + where.push('e.entry_date >= ?'); + params.push(from); + } + if (to) { + where.push('e.entry_date <= ?'); + params.push(to); + } + const users = userFilter(userIds); + where.push(users.sql); + params.push(...users.params); + if (customerId) { + where.push('p.customer_id = ?'); + params.push(Number(customerId)); + } + if (projectId) { + where.push('e.project_id = ?'); + params.push(Number(projectId)); + } + if (taskId) { + where.push('e.task_id = ?'); + params.push(Number(taskId)); + } + + const [rows] = await pool.query( + `SELECT e.id, e.user_id, e.project_id, e.task_id, e.pot_id, e.entry_date, e.minutes, e.note, e.billable, + e.created_at, e.updated_at, + u.name AS user_name, u.color AS user_color, u.is_external, u.company AS user_company, u.weekly_hours, + u.manager_id, + p.name AS project_name, p.code AS project_code, p.type AS project_type, p.billing_unit, + c.id AS customer_id, c.name AS customer_name, c.short_name AS customer_short, c.color AS customer_color, + t.name AS task_name, + b.label AS pot_label, b.rate AS pot_rate, b.budget_amount AS pot_amount + FROM pulse_time_entries e + JOIN pulse_users u ON u.id = e.user_id + JOIN pulse_projects p ON p.id = e.project_id + JOIN pulse_customers c ON c.id = p.customer_id + LEFT JOIN pulse_tasks t ON t.id = e.task_id + LEFT JOIN pulse_budget_pots b ON b.id = e.pot_id + WHERE ${where.join(' AND ')} + ORDER BY e.entry_date, e.id`, + params + ); + + // Virtueller Stundensatz braucht die Stunden des ganzen Topfs, nicht nur des Zeitraums. + const fixedPots = [...new Set(rows.filter((r) => r.project_type === 'fixed' && r.pot_id).map((r) => r.pot_id))]; + const potMinutes = new Map(); + if (fixedPots.length) { + const [usage] = await pool.query( + `SELECT pot_id, SUM(minutes) AS minutes FROM pulse_time_entries WHERE pot_id IN (${fixedPots.map(() => '?').join(',')}) GROUP BY pot_id`, + fixedPots + ); + for (const u of usage) potMinutes.set(u.pot_id, Number(u.minutes)); + } + + return rows.map((r) => { + const project = { name: r.project_name, code: r.project_code, billing_unit: r.billing_unit }; + const hours = r.minutes / 60; + let amount = 0; + let fixedAmount = 0; + if (r.billable && r.project_type === 'billable') { + const rate = hourlyRate({ rate: r.pot_rate }, project, settings); + amount = rate ? hours * rate : 0; + } + if (r.billable && r.project_type === 'fixed' && r.pot_amount && potMinutes.get(r.pot_id)) { + fixedAmount = (Number(r.pot_amount) / (potMinutes.get(r.pot_id) / 60)) * hours; + } + return { + ...r, + billable: Boolean(r.billable), + is_external: Boolean(r.is_external), + project_display: displayName(settings, project, { name: r.customer_name, short_name: r.customer_short }), + amount: Math.round(amount * 100) / 100, + fixed_amount: Math.round(fixedAmount * 100) / 100, + }; + }); +} diff --git a/server/src/lib/projects.js b/server/src/lib/projects.js new file mode 100644 index 0000000..7f6b789 --- /dev/null +++ b/server/src/lib/projects.js @@ -0,0 +1,375 @@ +import { pool } from '../db.js'; +import { daysBetween, parseDate, today } from './dates.js'; + +/* + * Fachlogik rund um Projekte und Budgettoepfe - an einer Stelle, weil Buchung, + * Projektansicht, Kunden und Reports dieselben Zahlen zeigen muessen. + */ + +const round2 = (n) => Math.round(n * 100) / 100; + +export function parseTags(value) { + if (!value) return []; + try { + const parsed = JSON.parse(value); + return Array.isArray(parsed) ? parsed.map(String) : []; + } catch { + return []; + } +} + +/** Anzeigename nach dem Muster aus den Einstellungen, z. B. "KUKA - PMO". */ +export function displayName(settings, project, customer) { + const pattern = settings.project_name_pattern || '{KUNDE} - {PROJEKT}'; + const kunde = customer?.short_name && customer.short_name !== customer.name ? prettyShort(customer) : customer?.name || ''; + return pattern + .replaceAll('{KUNDE}', kunde) + .replaceAll('{KUNDENNAME}', customer?.name || '') + .replaceAll('{PROJEKT}', project.name) + .replaceAll('{CODE}', project.code || '') + .trim(); +} + +/** Kuerzel in Grossbuchstaben wirken in Namen laut - "KUKA" bleibt, "PERINCO" wird "perinco". */ +function prettyShort(customer) { + if (customer.short_name.toUpperCase() === 'PERINCO') return 'perinco'; + return customer.short_name; +} + +/** Stundensatz je Stunde, auch wenn das Projekt nach Tagen abrechnet. */ +export function hourlyRate(pot, project, settings) { + if (pot?.rate == null) return null; + const rate = Number(pot.rate); + return project.billing_unit === 'day' ? rate / Number(settings.hours_per_day || 8) : rate; +} + +/** Buchbares Volumen eines Topfs in Stunden (null = unbegrenzt). */ +export function deriveBudgetHours(input, project, settings) { + const amount = input.budget_amount == null || input.budget_amount === '' ? null : Number(input.budget_amount); + const rate = input.rate == null || input.rate === '' ? null : Number(input.rate); + if (project.type === 'billable' && amount != null && rate) { + const perUnit = project.billing_unit === 'day' ? Number(settings.hours_per_day || 8) : 1; + return round2((amount / rate) * perUnit); + } + if (input.budget_hours == null || input.budget_hours === '') return null; + return round2(Number(input.budget_hours)); +} + +/** + * Kennzahlen eines Topfs. `usedMinutes` sind alle Buchungen auf diesem Topf. + * status: upcoming | active | expired | exhausted + * earned: bereits erbrachter Umsatz, open: noch offener Umsatz + */ +export function potStats(pot, project, usedMinutes, settings) { + const now = today(); + const usedHours = usedMinutes / 60; + const budgetHours = pot.budget_hours == null ? null : Number(pot.budget_hours); + const amount = pot.budget_amount == null ? null : Number(pot.budget_amount); + const rateHour = hourlyRate(pot, project, settings); + + let status = 'active'; + if (now < pot.valid_from) status = 'upcoming'; + else if (now > pot.valid_to) status = 'expired'; + else if (budgetHours != null && usedHours >= budgetHours - 1e-9) status = 'exhausted'; + + let earned = 0; + if (project.type === 'billable') { + earned = rateHour ? usedHours * rateHour : 0; + } else if (project.type === 'fixed' && amount) { + if (budgetHours) { + earned = amount * Math.min(1, usedHours / budgetHours); + } else { + // Ohne Stundenkontingent: Festpreis anteilig ueber die Laufzeit. + const total = Math.max(1, daysBetween(pot.valid_from, pot.valid_to) + 1); + const elapsed = now < pot.valid_from ? 0 : Math.min(total, daysBetween(pot.valid_from, now) + 1); + earned = amount * (elapsed / total); + } + if (status === 'expired') earned = amount; + } + + const budgetValue = project.type === 'billable' ? (amount ?? (budgetHours && rateHour ? budgetHours * rateHour : null)) : amount; + const open = budgetValue == null || status === 'expired' ? 0 : Math.max(0, budgetValue - earned); + const daysLeft = daysBetween(now, pot.valid_to); + + return { + used_minutes: usedMinutes, + used_hours: round2(usedHours), + remaining_hours: budgetHours == null ? null : round2(Math.max(0, budgetHours - usedHours)), + percent_used: budgetHours ? Math.round((usedHours / budgetHours) * 1000) / 10 : null, + hourly_rate: rateHour == null ? null : round2(rateHour), + // Festpreis: Budget geteilt durch gebuchte Stunden - nur intern. + virtual_rate: project.type === 'fixed' && amount && usedHours > 0 ? round2(amount / usedHours) : null, + budget_value: budgetValue == null ? null : round2(budgetValue), + earned: round2(earned), + open: round2(open), + days_left: daysLeft, + status, + }; +} + +/** Ist der Topf zu leer oder laeuft er bald ab? */ +export function potWarning(pot, stats, settings) { + if (stats.status === 'expired') return `Budgettopf „${pot.label}“ ist abgelaufen.`; + if (stats.status === 'exhausted') return `Budgettopf „${pot.label}“ ist aufgebraucht.`; + const parts = []; + if (stats.percent_used != null && stats.percent_used >= Number(settings.budget_warn_percent || 80)) { + parts.push(`${Math.round(stats.percent_used)} % verbraucht`); + } + if (stats.status === 'active' && stats.days_left <= Number(settings.budget_warn_days || 14)) { + parts.push(stats.days_left === 0 ? 'läuft heute ab' : `läuft in ${stats.days_left} Tagen ab`); + } + return parts.length ? `Budgettopf „${pot.label}“: ${parts.join(', ')}.` : null; +} + +/** Laufende Nummer je Kunde und Jahr, eingesetzt in das Codemuster. */ +export async function generateCode(conn, settings, customer, startDate) { + const year = String(startDate).slice(0, 4); + const pattern = settings.project_code_pattern || '{KUERZEL}-{JAHR}-{NR}'; + const [rows] = await conn.query( + 'SELECT COALESCE(MAX(seq), 0) AS n FROM pulse_projects WHERE customer_id = ? AND YEAR(start_date) = ?', + [customer.id, Number(year)] + ); + let seq = Number(rows[0].n) + 1; + // Gegen Kollisionen, falls das Muster geaendert wurde. + for (let attempt = 0; attempt < 500; attempt++, seq++) { + const code = pattern + .replaceAll('{KUERZEL}', customer.short_name.toUpperCase()) + .replaceAll('{JAHR}', year) + .replaceAll('{JJ}', year.slice(2)) + .replaceAll('{NR}', String(seq).padStart(3, '0')) + .slice(0, 40); + const [exists] = await conn.query('SELECT id FROM pulse_projects WHERE code = ? LIMIT 1', [code]); + if (exists.length === 0) return { code, seq }; + } + throw new Error('Projektcode konnte nicht erzeugt werden.'); +} + +/** + * Was verbraucht Budget? Bei Billable-Projekten ist das Volumen aus Betrag und + * Satz abgeleitet - also verkaufte Stunden. Nicht abrechenbare Task-Stunden + * (z. B. Reisezeit) verbrauchen es nicht. Bei Festpreis und intern zaehlt alles. + */ +export function countsAgainstBudget(project) { + return project.type === 'billable' ? 'billable' : 'all'; +} + +/** Abrechenbar ist eine Buchung, wenn Projekt UND Task es sind. */ +export function isBillable(project, task) { + if (project.type === 'non_billable') return false; + return task ? Boolean(task.billable) : true; +} + +/** + * Laedt Projekte samt Kunde, Toepfen (mit Kennzahlen), Tasks und Mitgliedern. + * `where` schraenkt pulse_projects (Alias p) ein. + */ +export async function loadProjects(settings, { where = '1=1', params = [] } = {}) { + const [projects] = await pool.query( + `SELECT p.*, c.name AS customer_name, c.short_name AS customer_short, c.color AS customer_color, + u.name AS owner_name + FROM pulse_projects p + JOIN pulse_customers c ON c.id = p.customer_id + LEFT JOIN pulse_users u ON u.id = p.owner_id + WHERE ${where} + ORDER BY c.name, p.name`, + params + ); + if (projects.length === 0) return []; + const ids = projects.map((p) => p.id); + const inList = ids.map(() => '?').join(','); + + const [[pots], [tasks], [members], [potUsage], [projectUsage], [taskUsage]] = await Promise.all([ + pool.query(`SELECT * FROM pulse_budget_pots WHERE project_id IN (${inList}) ORDER BY valid_from, id`, ids), + pool.query(`SELECT * FROM pulse_tasks WHERE project_id IN (${inList}) ORDER BY name`, ids), + pool.query( + `SELECT m.project_id, u.id, u.name, u.color, u.is_external + FROM pulse_project_members m JOIN pulse_users u ON u.id = m.user_id + WHERE m.project_id IN (${inList}) AND u.role <> 'admin' ORDER BY u.name`, + ids + ), + pool.query( + `SELECT pot_id, SUM(minutes) AS minutes, SUM(CASE WHEN billable = 1 THEN minutes ELSE 0 END) AS billable_minutes + FROM pulse_time_entries + WHERE project_id IN (${inList}) AND pot_id IS NOT NULL GROUP BY pot_id`, + ids + ), + pool.query( + `SELECT project_id, SUM(minutes) AS minutes, SUM(CASE WHEN billable = 1 THEN minutes ELSE 0 END) AS billable_minutes, + MAX(entry_date) AS last_entry + FROM pulse_time_entries WHERE project_id IN (${inList}) GROUP BY project_id`, + ids + ), + pool.query( + `SELECT task_id, SUM(minutes) AS minutes FROM pulse_time_entries + WHERE project_id IN (${inList}) AND task_id IS NOT NULL GROUP BY task_id`, + ids + ), + ]); + + const potMinutes = new Map(potUsage.map((r) => [r.pot_id, r])); + const projectMinutes = new Map(projectUsage.map((r) => [r.project_id, r])); + const taskMinutes = new Map(taskUsage.map((r) => [r.task_id, Number(r.minutes)])); + + return projects.map((p) => { + const project = { ...p, tags: parseTags(p.tags), is_active: Boolean(p.is_active) }; + const customer = { id: p.customer_id, name: p.customer_name, short_name: p.customer_short }; + const projectPots = pots + .filter((pot) => pot.project_id === p.id) + .map((pot) => { + const usage = potMinutes.get(pot.id); + const booked = Number(usage?.minutes || 0); + const counted = countsAgainstBudget(project) === 'billable' ? Number(usage?.billable_minutes || 0) : booked; + const stats = potStats(pot, project, counted, settings); + return { ...pot, ...stats, booked_minutes: booked, warning: potWarning(pot, stats, settings) }; + }); + const usage = projectMinutes.get(p.id); + const totalBudgetHours = projectPots.every((pot) => pot.budget_hours != null) && projectPots.length + ? round2(projectPots.reduce((s, pot) => s + Number(pot.budget_hours), 0)) + : null; + const usedMinutes = Number(usage?.minutes || 0); + + return { + ...project, + display_name: displayName(settings, project, customer), + customer: { id: p.customer_id, name: p.customer_name, short_name: p.customer_short, color: p.customer_color }, + pots: projectPots, + tasks: tasks + .filter((t) => t.project_id === p.id) + .map((t) => ({ ...t, billable: Boolean(t.billable), is_active: Boolean(t.is_active), used_minutes: taskMinutes.get(t.id) || 0 })), + members: members + .filter((m) => m.project_id === p.id) + .map((m) => ({ id: m.id, name: m.name, color: m.color, is_external: Boolean(m.is_external) })), + used_minutes: usedMinutes, + billable_minutes: Number(usage?.billable_minutes || 0), + // Was gegen das Budget zaehlt (bei Billable nur abrechenbare Stunden). + budget_used_minutes: projectPots.reduce((s, pot) => s + pot.used_minutes, 0), + last_entry: usage?.last_entry || null, + budget_hours: totalBudgetHours, + remaining_hours: + totalBudgetHours == null ? null : round2(Math.max(0, totalBudgetHours - projectPots.reduce((s, pot) => s + pot.used_minutes, 0) / 60)), + budget_value: round2(projectPots.reduce((s, pot) => s + (pot.budget_value || 0), 0)), + earned: round2(projectPots.reduce((s, pot) => s + pot.earned, 0)), + open: round2(projectPots.reduce((s, pot) => s + pot.open, 0)), + }; + }); +} + +/** Betraege weg fuer die Rolle "user" - Mitarbeiter sehen Stunden, keine Preise. */ +export function stripAmounts(project) { + const clean = { ...project, budget_value: null, earned: null, open: null }; + clean.pots = project.pots.map((pot) => ({ + ...pot, + budget_amount: null, + rate: null, + hourly_rate: null, + virtual_rate: null, + budget_value: null, + earned: null, + open: null, + })); + return clean; +} + +export class BookingError extends Error { + constructor(message) { + super(message); + this.status = 422; + } +} + +/** + * Findet den Topf fuer eine Buchung. + * + * Regeln (aus dem Anforderungscall): + * - gebucht wird nur auf einen Topf, dessen Laufzeit das Leistungsdatum enthaelt + * - ist das Volumen erreicht oder das Ablaufdatum ueberschritten: nicht buchbar + * - ueberlappen mehrere Toepfe, zuerst der, der am fruehesten endet + * - Projekte ohne Topf (z. B. intern, unbegrenzt) sind frei buchbar + */ +export async function resolvePot(conn, project, date, minutes, excludeEntryId = null, billable = true) { + const onlyBillable = countsAgainstBudget(project) === 'billable'; + // Nicht abrechenbare Stunden in einem Billable-Projekt verbrauchen kein Volumen. + const needed = onlyBillable && !billable ? 0 : minutes; + if (date < project.start_date) { + throw new BookingError(`Das Projekt beginnt erst am ${de(project.start_date)}.`); + } + if (project.end_date && date > project.end_date) { + throw new BookingError(`Das Projekt ist am ${de(project.end_date)} beendet.`); + } + + const [pots] = await conn.query( + 'SELECT * FROM pulse_budget_pots WHERE project_id = ? ORDER BY valid_to, id FOR UPDATE', + [project.id] + ); + if (pots.length === 0) return null; + + const covering = pots.filter((pot) => pot.valid_from <= date && pot.valid_to >= date); + if (covering.length === 0) { + throw new BookingError( + `Kein Budgettopf deckt den ${de(date)} ab. Buchbar ist nur innerhalb der Topf-Laufzeiten ` + + `(${pots.map((p) => `${p.label}: ${de(p.valid_from)}–${de(p.valid_to)}`).join('; ')}).` + ); + } + let lastShortage = null; + for (const pot of covering) { + if (pot.valid_to < today()) { + lastShortage = `Budgettopf „${pot.label}“ ist seit ${de(pot.valid_to)} abgelaufen.`; + continue; + } + if (pot.budget_hours == null) return pot; + const [rows] = await conn.query( + `SELECT COALESCE(SUM(minutes), 0) AS used FROM pulse_time_entries + WHERE pot_id = ? AND id <> ? ${onlyBillable ? 'AND billable = 1' : ''}`, + [pot.id, excludeEntryId || 0] + ); + const free = Number(pot.budget_hours) * 60 - Number(rows[0].used); + // Ein aufgebrauchter Topf ist fuer alles gesperrt, auch fuer Reisezeit. + if (free > 1e-9 && needed <= free + 1e-9) return pot; + lastShortage = + free <= 0 + ? `Budgettopf „${pot.label}“ ist aufgebraucht.` + : `Budgettopf „${pot.label}“ hat nur noch ${fmtMinutes(free)} h frei.`; + } + throw new BookingError(`${lastShortage} Buchung nicht möglich – bitte Projektverantwortlichen informieren.`); +} + +/** + * Nach Aenderung an Toepfen: bestehende Buchungen neu zuordnen. Historische + * Buchungen werden nicht abgewiesen - sie landen im passenden Topf, auch wenn + * dieser dadurch ueberbucht ist (das zeigt die Projektansicht dann rot). + */ +export async function reassignEntries(conn, projectId) { + const [pots] = await conn.query('SELECT * FROM pulse_budget_pots WHERE project_id = ? ORDER BY valid_to, id', [projectId]); + const [[project]] = await conn.query('SELECT type FROM pulse_projects WHERE id = ?', [projectId]); + const onlyBillable = project && countsAgainstBudget(project) === 'billable'; + const [entries] = await conn.query( + 'SELECT id, entry_date, minutes, pot_id, billable FROM pulse_time_entries WHERE project_id = ? ORDER BY entry_date, id', + [projectId] + ); + const used = new Map(pots.map((p) => [p.id, 0])); + for (const entry of entries) { + const needed = onlyBillable && !entry.billable ? 0 : entry.minutes; + const covering = pots.filter((p) => p.valid_from <= entry.entry_date && p.valid_to >= entry.entry_date); + const target = + covering.find((p) => p.budget_hours == null || used.get(p.id) + needed <= Number(p.budget_hours) * 60) || + covering[0] || + null; + if (target) used.set(target.id, used.get(target.id) + needed); + const targetId = target ? target.id : null; + if (targetId !== entry.pot_id) { + await conn.query('UPDATE pulse_time_entries SET pot_id = ? WHERE id = ?', [targetId, entry.id]); + } + } +} + +function de(value) { + const [y, m, d] = String(value).slice(0, 10).split('-'); + return `${d}.${m}.${y}`; +} + +export function fmtMinutes(minutes) { + const total = Math.max(0, Math.round(minutes)); + return `${Math.floor(total / 60)}:${String(total % 60).padStart(2, '0')}`; +} + +export { parseDate }; diff --git a/server/src/lib/settings.js b/server/src/lib/settings.js new file mode 100644 index 0000000..94ed9ef --- /dev/null +++ b/server/src/lib/settings.js @@ -0,0 +1,101 @@ +import crypto from 'node:crypto'; +import { pool } from '../db.js'; + +/* + * Einstellungen liegen als JSON je Schluessel in pulse_settings. Fehlt ein + * Schluessel, gilt der Standard von hier - so muss beim Hinzufuegen neuer + * Einstellungen nichts migriert werden. + */ +export const DEFAULTS = { + weekly_hours: 40, + hours_per_day: 8, + // Platzhalter: {KUERZEL} Kundenkuerzel, {JAHR} vierstellig, {NR} laufende + // Nummer je Kunde und Jahr (dreistellig). + project_code_pattern: '{KUERZEL}-{JAHR}-{NR}', + // Anzeigename der Projekte: {KUNDE} Kundenkuerzel oder -name, {PROJEKT} Name, {CODE}. + project_name_pattern: '{KUNDE} - {PROJEKT}', + budget_warn_percent: 80, + budget_warn_days: 14, + company_name: 'perinco GmbH', + export: { + title: 'Stundennachweis', + subtitle: 'Performance Intelligence Consulting', + accent: '#6BA04A', + logo: null, // Data-URL; null = perinco Logo + header_right: 'www.perinco.de', + footer_left: 'perinco GmbH', + footer_center: '', + footer_right: 'www.perinco.de', + show_signature: true, + signature_left: 'Datum, Unterschrift Berater', + signature_right: 'Datum, Unterschrift Kunde', + }, + sso: { + enabled: false, + button_label: 'Mit Microsoft anmelden', + tenant_id: '', + client_id: '', + client_secret: '', + redirect_uri: 'https://pulse.perinco.de/api/auth/sso/callback', + // Uebernommen wird nur von Hand in der SSO-Verwaltung; Rollen vergibt Pulse. + local_login: true, + }, +}; + +export async function getSettings() { + const [rows] = await pool.query('SELECT k, v FROM pulse_settings'); + const stored = {}; + for (const row of rows) { + try { + stored[row.k] = JSON.parse(row.v); + } catch { + /* kaputter Wert - Standard gilt */ + } + } + const result = {}; + for (const [key, def] of Object.entries(DEFAULTS)) { + const value = stored[key]; + if (def && typeof def === 'object' && !Array.isArray(def)) { + result[key] = { ...def, ...(value && typeof value === 'object' ? value : {}) }; + } else { + result[key] = value ?? def; + } + } + if (result.sso.client_secret) result.sso.client_secret = decrypt(result.sso.client_secret); + return result; +} + +export async function saveSetting(key, value) { + if (!(key in DEFAULTS)) throw new Error(`Unbekannte Einstellung: ${key}`); + let stored = value; + if (key === 'sso' && value.client_secret) stored = { ...value, client_secret: encrypt(value.client_secret) }; + await pool.query( + 'INSERT INTO pulse_settings (k, v) VALUES (?, ?) ON DUPLICATE KEY UPDATE v = VALUES(v)', + [key, JSON.stringify(stored)] + ); +} + +/* Client Secret verschluesselt ablegen (AES-256-GCM, Schluessel aus SETTINGS_KEY). */ +function key() { + const base = process.env.SETTINGS_KEY || process.env.JWT_SECRET || ''; + return crypto.createHash('sha256').update(base).digest(); +} + +function encrypt(plain) { + const iv = crypto.randomBytes(12); + const cipher = crypto.createCipheriv('aes-256-gcm', key(), iv); + const data = Buffer.concat([cipher.update(String(plain), 'utf8'), cipher.final()]); + return `enc:${iv.toString('base64')}:${cipher.getAuthTag().toString('base64')}:${data.toString('base64')}`; +} + +function decrypt(value) { + if (typeof value !== 'string' || !value.startsWith('enc:')) return value; + try { + const [, iv, tag, data] = value.split(':'); + const decipher = crypto.createDecipheriv('aes-256-gcm', key(), Buffer.from(iv, 'base64')); + decipher.setAuthTag(Buffer.from(tag, 'base64')); + return Buffer.concat([decipher.update(Buffer.from(data, 'base64')), decipher.final()]).toString('utf8'); + } catch { + return ''; + } +} diff --git a/server/src/lib/sso.js b/server/src/lib/sso.js new file mode 100644 index 0000000..eb4647e --- /dev/null +++ b/server/src/lib/sso.js @@ -0,0 +1,274 @@ +import crypto from 'node:crypto'; +import { pool } from '../db.js'; + +/* + * Microsoft Entra ID (M365). + * + * Anmeldung: OpenID Connect, Authorization Code Flow als vertrauliche App + * (Client Secret). Das id_token kommt direkt vom Token-Endpunkt ueber TLS - + * nach OIDC Core 3.1.3.7 reicht dann die Pruefung von aud/tid/exp. + * + * Verzeichnis: Client Credentials gegen Microsoft Graph (Anwendungsberechtigung + * User.Read.All). Angezeigt werden nur echte Mitarbeiterkonten - siehe + * isEligible(). Uebernommen wird von Hand in der SSO-Verwaltung; anmelden kann + * sich nur, wer uebernommen wurde. Rollen vergibt ausschliesslich Pulse, AD- + * Gruppen spielen keine Rolle. + */ + +const LOGIN = 'https://login.microsoftonline.com'; + +/** Erlaubte Maildomains fuer Mitarbeiterkonten. */ +export const ALLOWED_DOMAINS = ['perinco.de', 'icon-experts.de']; + +/* + * Genau zwei Namensteile: vorname.nachname@domain. Bindestriche innerhalb eines + * Teils sind erlaubt (anna-lena.mueller), weitere Punkte nicht - damit fallen + * Admin-Konten wie adm.sascha.wolf@ und Funktionsadressen wie info@ heraus. + */ +const MAIL_PATTERN = new RegExp( + `^[a-z]+(?:-[a-z]+)*\\.[a-z]+(?:-[a-z]+)*@(?:${ALLOWED_DOMAINS.map((d) => d.replace('.', '\\.')).join('|')})$` +); + +export function ssoConfigured(sso) { + return Boolean(sso.tenant_id && sso.client_id && sso.client_secret && sso.redirect_uri); +} + +/** Primaere Mailadresse eines AD-Benutzers (mail, sonst UPN), klein geschrieben. */ +export function adEmail(ad) { + return String(ad.mail || ad.userPrincipalName || '').trim().toLowerCase(); +} + +/** Technische Praefixe, die nie eine Person sind (adm.sascha.wolf, sa.hrworks, srv.pa). */ +const TECHNICAL_PREFIXES = ['adm', 'admin', 'sa', 'srv', 'svc', 'service', 'test']; + +/** "Mülln" -> "muelln", "René" -> "rene", "Grote-Aksu" -> "groteaksu". */ +export function normalizeName(value) { + return String(value || '') + .toLowerCase() + .replace(/ä/g, 'ae') + .replace(/ö/g, 'oe') + .replace(/ü/g, 'ue') + .replace(/ß/g, 'ss') + .normalize('NFD') + .replace(/[̀-ͯ]/g, '') + .replace(/[^a-z]/g, ''); +} + +/** + * Ist das ein echtes Mitarbeiterkonto? + * - Mail im Format vorname.nachname@perinco.de bzw. @icon-experts.de + * - kein technisches Praefix (sa., srv., adm. ...) + * - Nachname im AD passt zum Teil hinter dem Punkt - Dienstkonten wie + * sa.hrworks ("Service Account") oder srv.pa ("SRV Flow") fallen so heraus. + * Der Vorname wird bewusst nicht verglichen: Tippfehler im AD kommen vor. + * - kein Gast + * - Konto aktiv (freigegebene Postfaecher sind in Entra deaktiviert) + * - mindestens eine Lizenz (freigegebene Postfaecher und Dienstkonten haben keine) + */ +export function isEligible(ad) { + if (ad.userType === 'Guest') return false; + if (ad.accountEnabled === false) return false; + if (Array.isArray(ad.assignedLicenses) && ad.assignedLicenses.length === 0) return false; + const email = adEmail(ad); + if (!MAIL_PATTERN.test(email)) return false; + const [first, last] = email.split('@')[0].split('.'); + if (TECHNICAL_PREFIXES.includes(first)) return false; + const surname = normalizeName(ad.surname); + return surname.length > 0 && normalizeName(last) === surname; +} + +export function authorizeUrl(sso, state) { + const params = new URLSearchParams({ + client_id: sso.client_id, + response_type: 'code', + redirect_uri: sso.redirect_uri, + response_mode: 'query', + scope: 'openid profile email', + state, + prompt: 'select_account', + }); + return `${LOGIN}/${encodeURIComponent(sso.tenant_id)}/oauth2/v2.0/authorize?${params}`; +} + +async function tokenRequest(sso, body) { + const response = await fetch(`${LOGIN}/${encodeURIComponent(sso.tenant_id)}/oauth2/v2.0/token`, { + method: 'POST', + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + body: new URLSearchParams({ client_id: sso.client_id, client_secret: sso.client_secret, ...body }), + }); + const payload = await response.json().catch(() => ({})); + if (!response.ok) { + throw new Error(String(payload.error_description || payload.error || `HTTP ${response.status}`).split('\n')[0]); + } + return payload; +} + +export async function exchangeCode(sso, code) { + const tokens = await tokenRequest(sso, { + grant_type: 'authorization_code', + code, + redirect_uri: sso.redirect_uri, + scope: 'openid profile email', + }); + const [, body] = String(tokens.id_token || '').split('.'); + if (!body) throw new Error('Kein id_token erhalten.'); + const claims = JSON.parse(Buffer.from(body, 'base64url').toString('utf8')); + if (claims.aud !== sso.client_id) throw new Error('id_token gehört zu einer anderen Anwendung.'); + if (claims.exp * 1000 < Date.now()) throw new Error('id_token ist abgelaufen.'); + if (/^[0-9a-f-]{36}$/i.test(sso.tenant_id) && claims.tid !== sso.tenant_id) throw new Error('Falscher Mandant.'); + return { + oid: claims.oid, + email: String(claims.email || claims.preferred_username || '').toLowerCase(), + name: claims.name || claims.preferred_username, + }; +} + +async function graphToken(sso) { + const tokens = await tokenRequest(sso, { + grant_type: 'client_credentials', + scope: 'https://graph.microsoft.com/.default', + }); + return tokens.access_token; +} + +const SELECT = 'id,displayName,givenName,surname,mail,userPrincipalName,jobTitle,department,accountEnabled,userType,assignedLicenses'; + +async function graphGetAll(token, url, maxPages = 100) { + const items = []; + let next = url; + let pages = 0; + while (next && pages++ < maxPages) { + const response = await fetch(next, { headers: { Authorization: `Bearer ${token}` } }); + const payload = await response.json().catch(() => ({})); + if (!response.ok) throw new Error(payload.error?.message || `Graph HTTP ${response.status}`); + items.push(...(payload.value || [])); + next = payload['@odata.nextLink']; + } + return items; +} + +export async function testConnection(sso) { + const token = await graphToken(sso); + const users = await graphGetAll(token, `https://graph.microsoft.com/v1.0/users?$select=${SELECT}&$top=50`, 1); + const eligible = users.filter(isEligible); + return { sample: eligible.slice(0, 5).map((u) => u.displayName), checked: users.length, eligible: eligible.length }; +} + +/* + * Verzeichnis-Zwischenspeicher. Die SSO-Verwaltung filtert und sucht im + * Browser; Graph wird hoechstens alle 5 Minuten (oder auf Knopfdruck) gefragt. + * Der Schluessel haengt an Tenant und Client, damit ein Wechsel der + * Zugangsdaten nie alte Daten zeigt. + */ +const CACHE_MS = 5 * 60 * 1000; +let cache = { key: null, at: 0, users: null, raw: null }; + +function mapUser(ad) { + return { + id: ad.id, + name: ad.displayName || adEmail(ad), + given_name: ad.givenName || null, + surname: ad.surname || null, + email: adEmail(ad), + job_title: ad.jobTitle || null, + department: ad.department || null, + }; +} + +/** Alle AD-Konten (roh) - fuer den Abgleich, der auch Deaktivierungen sehen muss. */ +async function fetchAll(sso, refresh) { + const key = `${sso.tenant_id}|${sso.client_id}`; + if (!refresh && cache.key === key && cache.raw && Date.now() - cache.at < CACHE_MS) return cache.raw; + const token = await graphToken(sso); + const raw = await graphGetAll(token, `https://graph.microsoft.com/v1.0/users?$select=${SELECT}&$top=999`); + cache = { key, at: Date.now(), raw, users: raw.filter(isEligible).map(mapUser).sort((a, b) => a.name.localeCompare(b.name, 'de')) }; + return raw; +} + +/** Gefilterte Mitarbeiterkonten aus dem AD. */ +export async function listDirectory(sso, { refresh = false } = {}) { + await fetchAll(sso, refresh); + return { users: cache.users, fetched_at: new Date(cache.at).toISOString() }; +} + +/** + * Uebernimmt AD-Konten nach Pulse. Existiert schon ein Benutzer mit derselben + * Objekt-ID oder Mailadresse (z. B. ein vorher lokal angelegtes Konto), wird er + * verknuepft statt doppelt angelegt. Die Rolle wird in beiden Faellen gesetzt. + */ +export async function importUsers(sso, adIds, { role, managerId }) { + const { users } = await listDirectory(sso); + const byId = new Map(users.map((u) => [u.id, u])); + const result = { created: [], linked: [], skipped: [] }; + + for (const adId of adIds) { + const ad = byId.get(adId); + if (!ad) { + result.skipped.push(adId); + continue; + } + const [rows] = await pool.query('SELECT id FROM pulse_users WHERE external_id = ? OR email = ? LIMIT 1', [ad.id, ad.email]); + if (rows[0]) { + await pool.query( + `UPDATE pulse_users + SET external_id = ?, source = 'sso', name = ?, email = ?, job_title = COALESCE(?, job_title), + role = ?, manager_id = COALESCE(?, manager_id), is_active = 1, is_external = 0 + WHERE id = ?`, + [ad.id, ad.name, ad.email, ad.job_title, role, managerId ?? null, rows[0].id] + ); + result.linked.push(rows[0].id); + } else { + const [insert] = await pool.query( + `INSERT INTO pulse_users (username, email, name, role, manager_id, source, external_id, job_title) + VALUES (?, ?, ?, ?, ?, 'sso', ?, ?)`, + [await freeUsername(ad.email), ad.email, ad.name, role, managerId ?? null, ad.id, ad.job_title] + ); + result.created.push(insert.insertId); + } + } + return result; +} + +/** + * Abgleich der uebernommenen Benutzer: Name, Mail, Jobtitel aus dem AD. + * Wer im AD geloescht, deaktiviert oder nicht mehr zulaessig ist, wird in Pulse + * deaktiviert. Neue Konten legt der Abgleich nie an - das geschieht nur in der + * SSO-Verwaltung. + */ +export async function syncUsers(sso) { + const raw = await fetchAll(sso, true); + const byId = new Map(raw.map((u) => [u.id, u])); + const [linked] = await pool.query("SELECT id, external_id, is_active FROM pulse_users WHERE source = 'sso' AND external_id IS NOT NULL"); + + let updated = 0; + let deactivated = 0; + for (const user of linked) { + const ad = byId.get(user.external_id); + if (!ad || !isEligible(ad)) { + if (user.is_active) { + await pool.query('UPDATE pulse_users SET is_active = 0 WHERE id = ?', [user.id]); + deactivated++; + } + continue; + } + await pool.query('UPDATE pulse_users SET name = ?, email = ?, job_title = COALESCE(?, job_title) WHERE id = ?', [ + ad.displayName || adEmail(ad), + adEmail(ad), + ad.jobTitle || null, + user.id, + ]); + updated++; + } + return { total: raw.length, eligible: cache.users.length, linked: linked.length, updated, deactivated }; +} + +export async function freeUsername(email) { + const base = email.split('@')[0].replace(/[^a-z0-9._-]/gi, '').toLowerCase().slice(0, 60) || 'user'; + let candidate = base; + for (let i = 2; i < 1000; i++) { + const [rows] = await pool.query('SELECT id FROM pulse_users WHERE username = ? LIMIT 1', [candidate]); + if (rows.length === 0) return candidate; + candidate = `${base}${i}`; + } + return `${base}-${crypto.randomBytes(3).toString('hex')}`; +} diff --git a/server/src/middleware/auth.js b/server/src/middleware/auth.js new file mode 100644 index 0000000..dccdfa2 --- /dev/null +++ b/server/src/middleware/auth.js @@ -0,0 +1,93 @@ +import jwt from 'jsonwebtoken'; +import { pool } from '../db.js'; + +export const ROLES = ['user', 'lead', 'management', 'admin']; +const RANK = { user: 0, lead: 1, management: 2, admin: 3 }; + +function secret() { + const value = process.env.JWT_SECRET; + if (!value || value.length < 16) throw new Error('JWT_SECRET fehlt oder ist zu kurz (min. 16 Zeichen).'); + return value; +} + +export function signToken(user) { + return jwt.sign({ sub: user.id, role: user.role }, secret(), { + expiresIn: process.env.JWT_EXPIRES_IN || '12h', + }); +} + +export function signShort(payload, expiresIn = '10m') { + return jwt.sign(payload, secret(), { expiresIn }); +} + +export function verifyShort(token) { + return jwt.verify(token, secret()); +} + +export const USER_COLUMNS = `id, username, email, name, role, manager_id, job_title, is_external, company, + source, external_id, weekly_hours, color, theme, theme_mode, is_active, last_login_at, created_at, updated_at`; + +/** + * Prueft das Bearer-Token und laedt den Benutzer bei jeder Anfrage frisch aus + * der Datenbank - ein deaktiviertes Konto ist sofort draussen und eine + * geaenderte Rolle gilt sofort. + */ +export async function requireAuth(req, res, next) { + const header = req.headers.authorization || ''; + const token = header.startsWith('Bearer ') ? header.slice(7) : null; + if (!token) return res.status(401).json({ error: 'Nicht angemeldet.' }); + + let payload; + try { + payload = jwt.verify(token, secret()); + } catch { + return res.status(401).json({ error: 'Sitzung abgelaufen. Bitte neu anmelden.' }); + } + + try { + const [rows] = await pool.query(`SELECT ${USER_COLUMNS} FROM pulse_users WHERE id = ? LIMIT 1`, [payload.sub]); + const user = rows[0]; + if (!user) return res.status(401).json({ error: 'Benutzer existiert nicht mehr.' }); + if (!user.is_active) return res.status(401).json({ error: 'Benutzerkonto ist deaktiviert.' }); + req.user = user; + next(); + } catch (err) { + next(err); + } +} + +export function hasRole(user, minimum) { + return RANK[user?.role] >= RANK[minimum]; +} + +/** Mindestrolle: lead < management < admin. */ +export function requireRole(minimum) { + return (req, res, next) => { + if (!hasRole(req.user, minimum)) { + return res.status(403).json({ error: 'Für diese Aktion fehlen die Berechtigungen.' }); + } + next(); + }; +} + +export function publicUser(row) { + return { + id: row.id, + username: row.username, + email: row.email, + name: row.name, + role: row.role, + manager_id: row.manager_id ?? null, + job_title: row.job_title ?? null, + is_external: Boolean(row.is_external), + company: row.company ?? null, + source: row.source, + weekly_hours: row.weekly_hours == null ? null : Number(row.weekly_hours), + color: row.color ?? null, + theme: row.theme ?? null, + theme_mode: row.theme_mode ?? null, + is_active: Boolean(row.is_active), + last_login_at: row.last_login_at ?? null, + created_at: row.created_at, + }; +} diff --git a/server/src/routes/auth.js b/server/src/routes/auth.js new file mode 100644 index 0000000..c1fd806 --- /dev/null +++ b/server/src/routes/auth.js @@ -0,0 +1,170 @@ +import express from 'express'; +import bcrypt from 'bcryptjs'; +import crypto from 'node:crypto'; +import { pool } from '../db.js'; +import { publicUser, requireAuth, signShort, signToken, verifyShort } from '../middleware/auth.js'; +import { getSettings } from '../lib/settings.js'; +import { authorizeUrl, exchangeCode, ssoConfigured } from '../lib/sso.js'; + +const router = express.Router(); + +/* + * Bremse gegen Passwortraten: 10 Fehlversuche je IP und Kennung in 15 Minuten. + * Im Speicher reicht - es gibt genau eine Backend-Instanz. + */ +const attempts = new Map(); +const WINDOW = 15 * 60000; +function isLimited(key) { + const now = Date.now(); + const recent = (attempts.get(key) || []).filter((t) => now - t < WINDOW); + if (recent.length) attempts.set(key, recent); + else attempts.delete(key); + return recent.length >= 10; +} +function recordFailure(key) { + attempts.set(key, [...(attempts.get(key) || []), Date.now()]); +} + +// Oeffentlich: was zeigt der Anmeldeschirm? +router.get('/config', async (req, res, next) => { + try { + const { sso } = await getSettings(); + const ssoOn = Boolean(sso.enabled && ssoConfigured(sso)); + res.json({ sso_enabled: ssoOn, sso_label: sso.button_label, local_login: ssoOn ? sso.local_login !== false : true }); + } catch (err) { + next(err); + } +}); + +router.post('/login', async (req, res, next) => { + const identifier = String(req.body?.identifier || '').trim(); + const password = String(req.body?.password || ''); + if (!identifier || !password) { + return res.status(400).json({ error: 'Benutzername und Passwort sind erforderlich.' }); + } + const key = `${req.ip}|${identifier.toLowerCase()}`; + if (isLimited(key)) { + return res.status(429).json({ error: 'Zu viele Fehlversuche. Bitte in 15 Minuten erneut versuchen.' }); + } + + try { + const [rows] = await pool.query('SELECT * FROM pulse_users WHERE username = ? OR email = ? LIMIT 1', [ + identifier, + identifier.toLowerCase(), + ]); + const user = rows[0]; + // Identische Meldung fuer "gibt es nicht" und "falsches Passwort". + const ok = user?.password_hash ? await bcrypt.compare(password, user.password_hash) : false; + if (!ok) { + recordFailure(key); + return res.status(401).json({ error: 'Benutzername oder Passwort ist falsch.' }); + } + if (!user.is_active) return res.status(403).json({ error: 'Dieses Benutzerkonto ist deaktiviert.' }); + + await pool.query('UPDATE pulse_users SET last_login_at = NOW() WHERE id = ?', [user.id]); + res.json({ token: signToken(user), user: publicUser(user) }); + } catch (err) { + next(err); + } +}); + +router.get('/me', requireAuth, (req, res) => res.json({ user: publicUser(req.user) })); + +// Eigene Darstellung: Design, Modus, Farbe. +router.patch('/me', requireAuth, async (req, res, next) => { + const updates = {}; + if (req.body?.theme !== undefined) { + const theme = req.body.theme; + if (theme !== null && !['perinco', 'pixel', 'outdoor', 'cyberpunk', 'rainy', 'snow', 'aura'].includes(theme)) { + return res.status(400).json({ error: 'Unbekanntes Design.' }); + } + updates.theme = theme === 'perinco' ? null : theme; + } + if (req.body?.theme_mode !== undefined) { + const mode = req.body.theme_mode; + if (mode !== null && mode !== 'light' && mode !== 'dark') return res.status(400).json({ error: 'Unbekannter Modus.' }); + updates.theme_mode = mode; + } + if (req.body?.color !== undefined) { + const color = req.body.color; + if (color !== null && !/^#[0-9a-f]{6}$/i.test(color)) return res.status(400).json({ error: 'Ungültige Farbe.' }); + updates.color = color; + } + const keys = Object.keys(updates); + if (keys.length === 0) return res.status(400).json({ error: 'Keine Änderungen übergeben.' }); + try { + await pool.query(`UPDATE pulse_users SET ${keys.map((k) => `${k} = ?`).join(', ')} WHERE id = ?`, [ + ...keys.map((k) => updates[k]), + req.user.id, + ]); + res.json({ user: publicUser({ ...req.user, ...updates }) }); + } catch (err) { + next(err); + } +}); + +router.post('/change-password', requireAuth, async (req, res, next) => { + const current = String(req.body?.current_password || ''); + const wanted = String(req.body?.new_password || ''); + if (wanted.length < 8) return res.status(400).json({ error: 'Das neue Passwort muss mindestens 8 Zeichen haben.' }); + try { + const [rows] = await pool.query('SELECT password_hash FROM pulse_users WHERE id = ?', [req.user.id]); + const hash = rows[0]?.password_hash; + if (!hash) return res.status(400).json({ error: 'Dieses Konto meldet sich über SSO an und hat kein Passwort.' }); + if (!(await bcrypt.compare(current, hash))) return res.status(400).json({ error: 'Das aktuelle Passwort ist falsch.' }); + await pool.query('UPDATE pulse_users SET password_hash = ? WHERE id = ?', [await bcrypt.hash(wanted, 12), req.user.id]); + res.json({ ok: true }); + } catch (err) { + next(err); + } +}); + +/* ---------------------------------------------------------------- SSO -- */ + +router.get('/sso/start', async (req, res, next) => { + try { + const { sso } = await getSettings(); + if (!sso.enabled || !ssoConfigured(sso)) { + return res.redirect('/?sso_error=' + encodeURIComponent('SSO ist nicht eingerichtet.')); + } + const state = signShort({ n: crypto.randomBytes(12).toString('hex'), t: 'sso' }); + res.redirect(authorizeUrl(sso, state)); + } catch (err) { + next(err); + } +}); + +router.get('/sso/callback', async (req, res) => { + const back = (message) => res.redirect('/?sso_error=' + encodeURIComponent(message)); + try { + if (req.query.error) return back(String(req.query.error_description || req.query.error).split('\n')[0]); + try { + const state = verifyShort(String(req.query.state || '')); + if (state.t !== 'sso') throw new Error('state'); + } catch { + return back('Anmeldung abgelaufen. Bitte erneut versuchen.'); + } + + const { sso } = await getSettings(); + if (!sso.enabled || !ssoConfigured(sso)) return back('SSO ist nicht eingerichtet.'); + const identity = await exchangeCode(sso, String(req.query.code || '')); + + // Nur wer in der SSO-Verwaltung uebernommen wurde, kommt herein - verknuepft + // wird ueber die Objekt-ID, nicht ueber die Mailadresse. + const [rows] = await pool.query("SELECT * FROM pulse_users WHERE external_id = ? AND source = 'sso' LIMIT 1", [identity.oid]); + const user = rows[0]; + if (!user) { + return back(`Für ${identity.email || 'dieses Konto'} ist Pulse noch nicht freigeschaltet. Bitte an einen Manager oder Administrator wenden.`); + } + if (!user.is_active) return back('Dieses Benutzerkonto ist deaktiviert.'); + + await pool.query('UPDATE pulse_users SET last_login_at = NOW() WHERE id = ?', [user.id]); + // Token im Fragment: landet weder im Server-Log noch im Referer. + res.redirect(`/#sso_token=${encodeURIComponent(signToken(user))}`); + } catch (err) { + console.error('[Pulse] SSO-Anmeldung fehlgeschlagen:', err.message); + back('Anmeldung über Microsoft fehlgeschlagen: ' + err.message); + } +}); + +export default router; diff --git a/server/src/routes/customers.js b/server/src/routes/customers.js new file mode 100644 index 0000000..a0bfc5c --- /dev/null +++ b/server/src/routes/customers.js @@ -0,0 +1,161 @@ +import express from 'express'; +import { pool } from '../db.js'; +import { getSettings } from '../lib/settings.js'; +import { loadProjects } from '../lib/projects.js'; +import { loadEntries } from '../lib/entries.js'; +import { addDays, today } from '../lib/dates.js'; + +const router = express.Router(); +const str = (v, max) => (v == null ? null : String(v).trim().slice(0, max) || null); + +function normalize(body, creating) { + const errors = []; + const out = {}; + if (creating || body.name !== undefined) { + out.name = str(body.name, 190); + if (!out.name) errors.push('Kundenname fehlt.'); + } + if (creating || body.short_name !== undefined) { + out.short_name = str(body.short_name, 16)?.toUpperCase().replace(/[^A-Z0-9ÄÖÜ_-]/g, '') || null; + if (!out.short_name) errors.push('Kürzel fehlt (z. B. KUKA) - es steht im Projektcode.'); + } + for (const [key, max] of [ + ['contact_person', 160], + ['email', 190], + ['phone', 60], + ['street', 190], + ['zip', 20], + ['city', 120], + ['country', 80], + ['notes', 5000], + ]) { + if (body[key] !== undefined) out[key] = str(body[key], max); + } + if (body.color !== undefined) out.color = /^#[0-9a-f]{6}$/i.test(body.color || '') ? body.color : null; + if (body.is_active !== undefined) out.is_active = body.is_active ? 1 : 0; + return { out, errors }; +} + +router.get('/', async (req, res, next) => { + try { + const [rows] = await pool.query( + `SELECT c.*, (SELECT COUNT(*) FROM pulse_projects p WHERE p.customer_id = c.id) AS project_count + FROM pulse_customers c ORDER BY c.name` + ); + res.json(rows.map((r) => ({ ...r, is_active: Boolean(r.is_active), project_count: Number(r.project_count) }))); + } catch (err) { + next(err); + } +}); + +/** + * Uebersicht: welche Kunden haben welche Projekte mit welchen Mitarbeitern, + * wie viel Umsatz ist erbracht und wie viel noch offen - plus die letzten 12 + * Monate Umsatz fuer die Verlaufslinie. + */ +router.get('/overview', async (req, res, next) => { + try { + const settings = await getSettings(); + const [customers] = await pool.query('SELECT * FROM pulse_customers ORDER BY name'); + const projects = await loadProjects(settings); + const from = `${addDays(today(), -365).slice(0, 7)}-01`; + const entries = await loadEntries(settings, { from }); + + const months = []; + const cursor = new Date(`${from}T00:00:00Z`); + for (let i = 0; i < 13; i++) { + months.push(cursor.toISOString().slice(0, 7)); + cursor.setUTCMonth(cursor.getUTCMonth() + 1); + } + + const result = customers.map((customer) => { + const own = projects.filter((p) => p.customer_id === customer.id); + const memberMap = new Map(); + for (const project of own) for (const m of project.members) memberMap.set(m.id, m); + const monthly = months.map((month) => + entries + .filter((e) => e.customer_id === customer.id && e.entry_date.startsWith(month)) + .reduce((sum, e) => sum + e.amount + e.fixed_amount, 0) + ); + return { + ...customer, + is_active: Boolean(customer.is_active), + projects: own.map((p) => ({ + id: p.id, + code: p.code, + name: p.name, + display_name: p.display_name, + type: p.type, + is_active: p.is_active, + used_minutes: p.used_minutes, + budget_hours: p.budget_hours, + earned: p.earned, + open: p.open, + budget_value: p.budget_value, + members: p.members, + end_date: p.end_date, + })), + members: [...memberMap.values()], + used_minutes: own.reduce((s, p) => s + p.used_minutes, 0), + earned: Math.round(own.reduce((s, p) => s + p.earned, 0) * 100) / 100, + open: Math.round(own.reduce((s, p) => s + p.open, 0) * 100) / 100, + monthly: monthly.map((v) => Math.round(v * 100) / 100), + }; + }); + res.json({ months, customers: result }); + } catch (err) { + next(err); + } +}); + +router.post('/', async (req, res, next) => { + const { out, errors } = normalize(req.body || {}, true); + if (errors.length) return res.status(400).json({ error: errors.join(' ') }); + try { + const keys = Object.keys(out); + const [result] = await pool.query( + `INSERT INTO pulse_customers (${keys.join(', ')}) VALUES (${keys.map(() => '?').join(', ')})`, + keys.map((k) => out[k]) + ); + const [[row]] = await pool.query('SELECT * FROM pulse_customers WHERE id = ?', [result.insertId]); + res.status(201).json(row); + } catch (err) { + if (err.code === 'ER_DUP_ENTRY') return res.status(409).json({ error: 'Dieses Kürzel ist schon vergeben.' }); + next(err); + } +}); + +router.put('/:id', async (req, res, next) => { + const { out, errors } = normalize(req.body || {}, false); + if (errors.length) return res.status(400).json({ error: errors.join(' ') }); + try { + const keys = Object.keys(out); + if (keys.length) { + const [result] = await pool.query(`UPDATE pulse_customers SET ${keys.map((k) => `${k} = ?`).join(', ')} WHERE id = ?`, [ + ...keys.map((k) => out[k]), + Number(req.params.id), + ]); + if (!result.affectedRows) return res.status(404).json({ error: 'Kunde nicht gefunden.' }); + } + const [[row]] = await pool.query('SELECT * FROM pulse_customers WHERE id = ?', [Number(req.params.id)]); + res.json(row); + } catch (err) { + if (err.code === 'ER_DUP_ENTRY') return res.status(409).json({ error: 'Dieses Kürzel ist schon vergeben.' }); + next(err); + } +}); + +router.delete('/:id', async (req, res, next) => { + try { + const [[{ n }]] = await pool.query('SELECT COUNT(*) AS n FROM pulse_projects WHERE customer_id = ?', [Number(req.params.id)]); + if (Number(n) > 0) { + return res.status(409).json({ error: `Dem Kunden sind ${n} Projekte zugeordnet. Bitte deaktivieren statt löschen.` }); + } + await pool.query('DELETE FROM pulse_customers WHERE id = ?', [Number(req.params.id)]); + res.json({ ok: true }); + } catch (err) { + next(err); + } +}); + +export default router; diff --git a/server/src/routes/dashboard.js b/server/src/routes/dashboard.js new file mode 100644 index 0000000..48b2116 --- /dev/null +++ b/server/src/routes/dashboard.js @@ -0,0 +1,158 @@ +import express from 'express'; +import { pool } from '../db.js'; +import { visibleUserIds, userFilter } from '../lib/access.js'; +import { getSettings } from '../lib/settings.js'; +import { loadEntries } from '../lib/entries.js'; +import { addDays, periodLabel, periodRange, previousStart, today, workdays } from '../lib/dates.js'; + +const router = express.Router(); + +const SERIES_LENGTH = { day: 14, week: 12, month: 12, quarter: 8, year: 5 }; + +export function capacityMinutes(user, settings, from, to) { + const weekly = user.weekly_hours == null ? Number(settings.weekly_hours) : Number(user.weekly_hours); + return Math.round((weekly / 5) * workdays(from, to) * 60); +} + +function sum(entries) { + let minutes = 0; + let billable = 0; + let amount = 0; + for (const e of entries) { + minutes += e.minutes; + if (e.billable) billable += e.minutes; + amount += e.amount; + } + return { minutes, billable_minutes: billable, non_billable_minutes: minutes - billable, amount: Math.round(amount * 100) / 100 }; +} + +/** + * Dashboard fuer Fuehrungsrollen. Vorgesetzte sehen ihr Team (rekursiv), + * Management und Administratoren alle. + * + * ?granularity day|week|month|quarter|year - Diagramm und Kennzahlen + * ?rank days|week|month|quarter|year - Zeitraum der Mitarbeiterliste + */ +router.get('/', async (req, res, next) => { + try { + const granularity = SERIES_LENGTH[req.query.granularity] ? req.query.granularity : 'week'; + const rank = ['days', 'week', 'month', 'quarter', 'year'].includes(req.query.rank) ? req.query.rank : 'week'; + const settings = await getSettings(); + const userIds = await visibleUserIds(req.user); + const now = today(); + + // Diagramm: die letzten N Zeitraeume bis einschliesslich des aktuellen. + const buckets = []; + let start = periodRange(granularity, now).from; + for (let i = 0; i < SERIES_LENGTH[granularity]; i++) { + buckets.unshift({ ...periodRange(granularity, start), label: periodLabel(granularity, start) }); + start = previousStart(granularity, start); + } + const rankRange = rank === 'days' ? { from: addDays(now, -6), to: now } : periodRange(rank, now); + const earliest = [buckets[0].from, rankRange.from].sort()[0]; + const entries = await loadEntries(settings, { from: earliest, to: buckets[buckets.length - 1].to, userIds }); + + const series = buckets.map((b) => ({ + from: b.from, + to: b.to, + label: b.label, + ...sum(entries.filter((e) => e.entry_date >= b.from && e.entry_date <= b.to)), + })); + + const filter = userFilter(userIds, 'id'); + const [users] = await pool.query( + `SELECT id, name, color, role, weekly_hours, is_external, company, job_title FROM pulse_users + WHERE is_active = 1 AND role <> 'admin' AND ${filter.sql} ORDER BY name`, + filter.params + ); + + const current = buckets[buckets.length - 1]; + const previous = buckets[buckets.length - 2]; + // Kapazitaet nur bis heute - sonst sieht die Auslastung am Montag schlecht aus. + const capTo = current.to > now ? now : current.to; + const capacity = users.reduce((s, u) => s + capacityMinutes(u, settings, current.from, capTo), 0); + const kpis = { + current: { ...series[series.length - 1], capacity_minutes: capacity }, + previous: series[series.length - 2] ?? null, + period_label: current.label, + previous_label: previous?.label ?? null, + }; + + const rankTo = rankRange.to > now ? now : rankRange.to; + const ranking = users.map((u) => { + const own = entries.filter((e) => e.user_id === u.id && e.entry_date >= rankRange.from && e.entry_date <= rankRange.to); + const totals = sum(own); + return { + user_id: u.id, + name: u.name, + color: u.color, + job_title: u.job_title, + is_external: Boolean(u.is_external), + ...totals, + entries: own.length, + capacity_minutes: capacityMinutes(u, settings, rankRange.from, rankTo), + }; + }); + + // Projekte im aktuellen Zeitraum - fuer die Verteilung. + const byProject = new Map(); + for (const e of entries.filter((e) => e.entry_date >= current.from && e.entry_date <= current.to)) { + const item = byProject.get(e.project_id) || { + project_id: e.project_id, + name: e.project_display, + customer_color: e.customer_color, + minutes: 0, + billable_minutes: 0, + }; + item.minutes += e.minutes; + if (e.billable) item.billable_minutes += e.minutes; + byProject.set(e.project_id, item); + } + + const recentFilter = userFilter(userIds, 'e.user_id'); + const [recentIds] = await pool.query( + `SELECT e.id, e.entry_date FROM pulse_time_entries e WHERE ${recentFilter.sql} ORDER BY e.created_at DESC, e.id DESC LIMIT 12`, + recentFilter.params + ); + let recent = []; + if (recentIds.length) { + const dates = recentIds.map((r) => r.entry_date).sort(); + const pool_ = await loadEntries(settings, { from: dates[0], to: dates[dates.length - 1], userIds }); + const byId = new Map(pool_.map((e) => [e.id, e])); + recent = recentIds + .map((r) => byId.get(r.id)) + .filter(Boolean) + .map((e) => ({ + id: e.id, + user_id: e.user_id, + user_name: e.user_name, + user_color: e.user_color, + project_display: e.project_display, + customer_color: e.customer_color, + task_name: e.task_name, + note: e.note, + entry_date: e.entry_date, + minutes: e.minutes, + billable: e.billable, + created_at: e.created_at, + })); + } + + res.json({ + granularity, + rank, + rank_range: rankRange, + scope: userIds === null ? 'all' : 'team', + team_size: users.length, + series, + kpis, + ranking, + projects: [...byProject.values()].sort((a, b) => b.minutes - a.minutes).slice(0, 8), + recent, + }); + } catch (err) { + next(err); + } +}); + +export default router; diff --git a/server/src/routes/directory.js b/server/src/routes/directory.js new file mode 100644 index 0000000..a2eb65f --- /dev/null +++ b/server/src/routes/directory.js @@ -0,0 +1,88 @@ +import express from 'express'; +import { pool } from '../db.js'; +import { getSettings } from '../lib/settings.js'; +import { ALLOWED_DOMAINS, importUsers, listDirectory, ssoConfigured, syncUsers } from '../lib/sso.js'; + +/* + * SSO-Verwaltung: AD-Konten ansehen und nach Pulse uebernehmen. + * Zugriff ab Rolle Management (in server.js). Die Zugangsdaten selbst bleiben + * Administratoren vorbehalten (routes/settings.js). + */ +const router = express.Router(); +const IMPORT_ROLES = ['user', 'lead', 'management']; + +router.get('/ad-users', async (req, res) => { + const { sso } = await getSettings(); + if (!ssoConfigured(sso)) { + return res.json({ configured: false, domains: ALLOWED_DOMAINS, users: [], fetched_at: null }); + } + try { + const { users, fetched_at } = await listDirectory(sso, { refresh: req.query.refresh === '1' }); + const [pulseUsers] = await pool.query('SELECT id, external_id, email, role, is_active, source FROM pulse_users'); + const byExternal = new Map(pulseUsers.filter((u) => u.external_id).map((u) => [u.external_id, u])); + const byEmail = new Map(pulseUsers.filter((u) => u.email).map((u) => [u.email.toLowerCase(), u])); + res.json({ + configured: true, + domains: ALLOWED_DOMAINS, + fetched_at, + users: users.map((ad) => { + const linked = byExternal.get(ad.id); + const sameMail = !linked ? byEmail.get(ad.email) : null; + return { + ...ad, + pulse_user_id: linked?.id ?? null, + pulse_role: linked?.role ?? null, + pulse_active: linked ? Boolean(linked.is_active) : null, + // Lokales Konto mit derselben Mail - wird beim Uebernehmen verknuepft. + local_match_id: sameMail?.id ?? null, + }; + }), + }); + } catch (err) { + res.status(502).json({ error: `Microsoft Graph nicht erreichbar: ${err.message}` }); + } +}); + +router.post('/import', async (req, res, next) => { + try { + const { sso } = await getSettings(); + if (!ssoConfigured(sso)) return res.status(400).json({ error: 'SSO ist noch nicht eingerichtet.' }); + const ids = Array.isArray(req.body?.ad_ids) ? [...new Set(req.body.ad_ids.map(String))].slice(0, 500) : []; + const role = req.body?.role; + if (!ids.length) return res.status(400).json({ error: 'Keine Benutzer ausgewählt.' }); + if (!IMPORT_ROLES.includes(role)) return res.status(400).json({ error: 'Ungültige Rolle.' }); + + let managerId = req.body?.manager_id ? Number(req.body.manager_id) : null; + if (managerId) { + const [[manager]] = await pool.query('SELECT id, role, is_active FROM pulse_users WHERE id = ?', [managerId]); + if (!manager || !manager.is_active || !['lead', 'management'].includes(manager.role)) { + return res.status(400).json({ error: 'Der Vorgesetzte muss ein aktiver Vorgesetzter oder Manager sein.' }); + } + } + // Ein Administrator in der Auswahl darf nicht herabgestuft werden. + const [admins] = await pool.query( + `SELECT external_id FROM pulse_users WHERE role = 'admin' AND external_id IN (${ids.map(() => '?').join(',')})`, + ids + ); + if (admins.length) return res.status(400).json({ error: 'Administratoren können hier nicht geändert werden.' }); + + const result = await importUsers(sso, ids, { role, managerId }); + res.json(result); + } catch (err) { + if (err.code === 'ER_DUP_ENTRY') return res.status(409).json({ error: 'Benutzername oder E-Mail ist schon vergeben.' }); + if (/Graph|AADSTS|HTTP/.test(err.message)) return res.status(502).json({ error: `Microsoft Graph: ${err.message}` }); + next(err); + } +}); + +router.post('/sync', async (req, res) => { + try { + const { sso } = await getSettings(); + if (!ssoConfigured(sso)) return res.status(400).json({ error: 'SSO ist noch nicht eingerichtet.' }); + res.json(await syncUsers(sso)); + } catch (err) { + res.status(502).json({ error: `Abgleich fehlgeschlagen: ${err.message}` }); + } +}); + +export default router; diff --git a/server/src/routes/entries.js b/server/src/routes/entries.js new file mode 100644 index 0000000..0882dcc --- /dev/null +++ b/server/src/routes/entries.js @@ -0,0 +1,174 @@ +import express from 'express'; +import { pool, withTransaction } from '../db.js'; +import { hasRole } from '../middleware/auth.js'; +import { visibleUserIds } from '../lib/access.js'; +import { getSettings } from '../lib/settings.js'; +import { loadEntries } from '../lib/entries.js'; +import { parseDate } from '../lib/dates.js'; +import { BookingError, isBillable, loadProjects, resolvePot } from '../lib/projects.js'; + +const router = express.Router(); + +function publicEntry(entry, showAmounts) { + return { + id: entry.id, + user_id: entry.user_id, + user_name: entry.user_name, + project_id: entry.project_id, + project_name: entry.project_name, + project_code: entry.project_code, + project_display: entry.project_display, + project_type: entry.project_type, + customer_id: entry.customer_id, + customer_name: entry.customer_name, + customer_color: entry.customer_color, + task_id: entry.task_id, + task_name: entry.task_name, + pot_id: entry.pot_id, + pot_label: entry.pot_label, + entry_date: entry.entry_date, + minutes: entry.minutes, + note: entry.note, + billable: entry.billable, + amount: showAmounts ? entry.amount : null, + created_at: entry.created_at, + updated_at: entry.updated_at, + }; +} + +router.get('/', async (req, res, next) => { + try { + const { from, to } = req.query; + if (!parseDate(from) || !parseDate(to)) return res.status(400).json({ error: 'Zeitraum von/bis fehlt.' }); + let userIds = [req.user.id]; + if (req.query.user_id && Number(req.query.user_id) !== req.user.id) { + const visible = await visibleUserIds(req.user); + const wanted = Number(req.query.user_id); + if (visible !== null && !visible.includes(wanted)) return res.status(403).json({ error: 'Keine Einsicht in diese Zeiten.' }); + userIds = [wanted]; + } + const settings = await getSettings(); + const entries = await loadEntries(settings, { from, to, userIds }); + res.json(entries.map((e) => publicEntry(e, hasRole(req.user, 'lead')))); + } catch (err) { + next(err); + } +}); + +async function validate(conn, user, body, existing) { + const projectId = Number(body.project_id ?? existing?.project_id); + const date = body.entry_date ?? existing?.entry_date; + const minutes = Number(body.minutes ?? existing?.minutes); + const taskId = body.task_id !== undefined ? (body.task_id ? Number(body.task_id) : null) : existing?.task_id ?? null; + const note = body.note !== undefined ? String(body.note || '').trim().slice(0, 1000) || null : existing?.note ?? null; + + if (user.role === 'admin' && !existing) throw new BookingError('Administratoren buchen keine Zeiten.'); + if (!parseDate(date)) throw new BookingError('Datum fehlt.'); + if (!Number.isInteger(minutes) || minutes < 1) throw new BookingError('Bitte eine Zeit größer 0:00 eingeben.'); + if (minutes > 24 * 60) throw new BookingError('Mehr als 24 Stunden an einem Tag gehen nicht.'); + + const [projects] = await conn.query('SELECT * FROM pulse_projects WHERE id = ? LIMIT 1', [projectId]); + const project = projects[0]; + if (!project) throw new BookingError('Projekt nicht gefunden.'); + if (!project.is_active) throw new BookingError('Das Projekt ist archiviert und nicht mehr buchbar.'); + + // Gebucht wird nur auf zugewiesene Projekte - fuer jede Rolle. + const [member] = await conn.query('SELECT 1 FROM pulse_project_members WHERE project_id = ? AND user_id = ?', [ + project.id, + existing?.user_id ?? user.id, + ]); + if (!member.length) throw new BookingError('Dieses Projekt ist dir nicht zugewiesen.'); + + let task = null; + if (taskId) { + const [tasks] = await conn.query('SELECT * FROM pulse_tasks WHERE id = ? AND project_id = ?', [taskId, project.id]); + task = tasks[0]; + if (!task) throw new BookingError('Der Task gehört nicht zu diesem Projekt.'); + if (!task.is_active && task.id !== existing?.task_id) throw new BookingError('Der Task ist nicht mehr aktiv.'); + } + + const [[day]] = await conn.query( + 'SELECT COALESCE(SUM(minutes), 0) AS total FROM pulse_time_entries WHERE user_id = ? AND entry_date = ? AND id <> ?', + [existing?.user_id ?? user.id, date, existing?.id || 0] + ); + if (Number(day.total) + minutes > 24 * 60) throw new BookingError('An diesem Tag wären es mehr als 24 Stunden.'); + + const billable = isBillable(project, task); + const pot = await resolvePot(conn, project, date, minutes, existing?.id, billable); + return { project, task, pot, date, minutes, note, billable: billable ? 1 : 0 }; +} + +async function respond(req, res, id, status) { + const settings = await getSettings(); + const [[row]] = await pool.query('SELECT entry_date, user_id, project_id, pot_id FROM pulse_time_entries WHERE id = ?', [id]); + const entries = await loadEntries(settings, { from: row.entry_date, to: row.entry_date, userIds: [row.user_id] }); + const entry = entries.find((e) => e.id === id); + // Hinweis zum Topf gleich mitliefern, damit der Dialog warnen kann. + let warning = null; + if (row.pot_id) { + const [project] = await loadProjects(settings, { where: 'p.id = ?', params: [row.project_id] }); + warning = project?.pots.find((p) => p.id === row.pot_id)?.warning ?? null; + } + res.status(status).json({ entry: publicEntry(entry, hasRole(req.user, 'lead')), warning }); +} + +router.post('/', async (req, res, next) => { + try { + const id = await withTransaction(async (conn) => { + const v = await validate(conn, req.user, req.body || {}, null); + const [result] = await conn.query( + `INSERT INTO pulse_time_entries (user_id, project_id, task_id, pot_id, entry_date, minutes, note, billable) + VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, + [req.user.id, v.project.id, v.task?.id ?? null, v.pot?.id ?? null, v.date, v.minutes, v.note, v.billable] + ); + return result.insertId; + }); + await respond(req, res, id, 201); + } catch (err) { + if (err instanceof BookingError) return res.status(422).json({ error: err.message }); + next(err); + } +}); + +async function loadOwned(req) { + const [rows] = await pool.query('SELECT * FROM pulse_time_entries WHERE id = ? LIMIT 1', [Number(req.params.id)]); + const entry = rows[0]; + if (!entry) return { error: [404, 'Buchung nicht gefunden.'] }; + // Eigene Buchungen; Administratoren duerfen korrigieren. + if (entry.user_id !== req.user.id && req.user.role !== 'admin') { + return { error: [403, 'Nur eigene Buchungen können geändert werden.'] }; + } + return { entry }; +} + +router.put('/:id', async (req, res, next) => { + try { + const { entry, error } = await loadOwned(req); + if (error) return res.status(error[0]).json({ error: error[1] }); + await withTransaction(async (conn) => { + const v = await validate(conn, req.user, req.body || {}, entry); + await conn.query( + `UPDATE pulse_time_entries SET project_id = ?, task_id = ?, pot_id = ?, entry_date = ?, minutes = ?, note = ?, billable = ? + WHERE id = ?`, + [v.project.id, v.task?.id ?? null, v.pot?.id ?? null, v.date, v.minutes, v.note, v.billable, entry.id] + ); + }); + await respond(req, res, entry.id, 200); + } catch (err) { + if (err instanceof BookingError) return res.status(422).json({ error: err.message }); + next(err); + } +}); + +router.delete('/:id', async (req, res, next) => { + try { + const { entry, error } = await loadOwned(req); + if (error) return res.status(error[0]).json({ error: error[1] }); + await pool.query('DELETE FROM pulse_time_entries WHERE id = ?', [entry.id]); + res.json({ ok: true }); + } catch (err) { + next(err); + } +}); + +export default router; diff --git a/server/src/routes/exports.js b/server/src/routes/exports.js new file mode 100644 index 0000000..535730f --- /dev/null +++ b/server/src/routes/exports.js @@ -0,0 +1,259 @@ +import express from 'express'; +import { pool } from '../db.js'; +import { hasRole } from '../middleware/auth.js'; +import { visibleUserIds } from '../lib/access.js'; +import { getSettings } from '../lib/settings.js'; +import { loadEntries } from '../lib/entries.js'; +import { MONTHS_DE, formatDateDe, monthRange, parseDate } from '../lib/dates.js'; +import { dateDe, durationDe, hoursDe, moneyDe, sendDocument } from '../export/render.js'; +import { buildTimeReport } from './reports.js'; + +const router = express.Router(); +const FORMATS = ['pdf', 'xlsx', 'csv']; +const WEEKDAYS = ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa']; + +/** + * Stundennachweis eines Monats - die Vorlage fuer Kunden und Rechnungsstellung. + * + * ?month=2026-09 &format=pdf|xlsx|csv + * ?user_id=|all eigener Nachweis (Standard), eines Teammitglieds oder aller sichtbaren + * ?customer_id / ?project_id auf einen Kunden bzw. ein Projekt einschraenken + * ?amounts=1 Satz und Betrag mit ausgeben (ab Rolle Vorgesetzter) + */ +router.get('/timesheet', async (req, res, next) => { + try { + const format = FORMATS.includes(req.query.format) ? req.query.format : 'pdf'; + const range = monthRange(String(req.query.month || '')); + if (!range) return res.status(400).json({ error: 'Monat fehlt (JJJJ-MM).' }); + + let userIds = [req.user.id]; + const wanted = req.query.user_id; + if (wanted && String(wanted) !== String(req.user.id)) { + const visible = await visibleUserIds(req.user); + if (wanted === 'all') { + if (!hasRole(req.user, 'lead')) return res.status(403).json({ error: 'Keine Einsicht in fremde Zeiten.' }); + userIds = visible; + } else { + if (visible !== null && !visible.includes(Number(wanted))) { + return res.status(403).json({ error: 'Keine Einsicht in diese Zeiten.' }); + } + userIds = [Number(wanted)]; + } + } + const showAmounts = req.query.amounts === '1' && hasRole(req.user, 'lead'); + const settings = await getSettings(); + const entries = await loadEntries(settings, { + from: range.from, + to: range.to, + userIds, + customerId: req.query.customer_id, + projectId: req.query.project_id, + }); + + const [y, m] = req.query.month.split('-'); + const monthName = `${MONTHS_DE[Number(m) - 1]} ${y}`; + const multiUser = userIds === null || userIds.length > 1; + + let personName = 'Alle Mitarbeiter'; + let company = ''; + if (!multiUser) { + const [[person]] = await pool.query('SELECT name, company, is_external FROM pulse_users WHERE id = ?', [userIds[0]]); + personName = person?.name || ''; + company = person?.is_external ? person.company || '' : settings.company_name; + } + let customerName = 'Alle Kunden'; + let projectName = [...new Set(entries.map((e) => e.project_display))].join(', ') || '–'; + if (req.query.customer_id) { + const [[c]] = await pool.query('SELECT name FROM pulse_customers WHERE id = ?', [Number(req.query.customer_id)]); + customerName = c?.name || '–'; + } else { + const names = [...new Set(entries.map((e) => e.customer_name))]; + if (names.length === 1) customerName = names[0]; + } + if (projectName.length > 120) projectName = `${new Set(entries.map((e) => e.project_id)).size} Projekte`; + + const total = entries.reduce((s, e) => s + e.minutes, 0); + const billable = entries.filter((e) => e.billable).reduce((s, e) => s + e.minutes, 0); + const days = new Set(entries.map((e) => e.entry_date)).size; + const amount = entries.reduce((s, e) => s + e.amount, 0); + + const columns = [ + { key: 'entry_date', label: 'Datum', type: 'date', width: 58, xlsWidth: 12 }, + { key: 'weekday', label: 'Tag', width: 26, xlsWidth: 6 }, + ...(multiUser ? [{ key: 'user_name', label: 'Mitarbeiter', width: 90, xlsWidth: 22 }] : []), + { key: 'project_display', label: 'Projekt', width: 110, xlsWidth: 28 }, + { key: 'task_name', label: 'Task', width: 80, xlsWidth: 20 }, + { key: 'note', label: 'Tätigkeit', type: 'text', xlsWidth: 44 }, + { key: 'duration', label: 'Dauer', align: 'right', width: 38, xlsWidth: 9 }, + { key: 'minutes', label: 'Stunden', type: 'hours', align: 'right', width: 46, xlsWidth: 10 }, + ...(showAmounts + ? [ + { key: 'rate', label: 'Satz/h', type: 'money', align: 'right', width: 56, xlsWidth: 12 }, + { key: 'amount', label: 'Betrag', type: 'money', align: 'right', width: 66, xlsWidth: 14 }, + ] + : []), + ]; + const rows = entries.map((e) => ({ + ...e, + weekday: WEEKDAYS[new Date(`${e.entry_date}T00:00:00Z`).getUTCDay()], + duration: durationDe(e.minutes), + rate: e.amount && e.minutes ? Math.round((e.amount / (e.minutes / 60)) * 100) / 100 : null, + })); + + // Zusammenfassung je Projekt und Task. + const summary = new Map(); + for (const e of entries) { + const key = `${e.project_id}|${e.task_name || ''}`; + const item = summary.get(key) || { project_display: e.project_display, task_name: e.task_name || '–', minutes: 0, amount: 0 }; + item.minutes += e.minutes; + item.amount += e.amount; + summary.set(key, item); + } + + const doc = { + title: settings.export.title || 'Stundennachweis', + subtitle: monthName, + filename: `Stundennachweis ${y}-${m} ${multiUser ? customerName : personName}`, + landscape: showAmounts || multiUser, + info: [ + [multiUser ? 'Mitarbeiter' : 'Berater', personName + (company && !multiUser ? ` (${company})` : '')], + ['Kunde', customerName], + ['Zeitraum', `${formatDateDe(range.from)} – ${formatDateDe(range.to)}`], + ['Projekt', projectName], + ], + kpis: [ + ['Gesamtstunden', hoursDe(total)], + ['Dauer (h:mm)', durationDe(total)], + ['Tage mit Leistung', String(days)], + ...(showAmounts ? [['Betrag', moneyDe(amount)]] : [['davon abrechenbar', hoursDe(billable)]]), + ], + tables: [ + { + columns, + rows, + totals: { entry_date: null, weekday: 'Summe', duration: durationDe(total), minutes: total, ...(showAmounts ? { amount } : {}) }, + }, + { + title: 'Zusammenfassung nach Projekt und Task', + columns: [ + { key: 'project_display', label: 'Projekt', xlsWidth: 28 }, + { key: 'task_name', label: 'Task', width: 150 }, + { key: 'duration', label: 'Dauer', align: 'right', width: 60 }, + { key: 'minutes', label: 'Stunden', type: 'hours', align: 'right', width: 60 }, + ...(showAmounts ? [{ key: 'amount', label: 'Betrag', type: 'money', align: 'right', width: 80 }] : []), + ], + rows: [...summary.values()].map((s) => ({ ...s, duration: durationDe(s.minutes) })), + totals: { project_display: 'Summe', duration: durationDe(total), minutes: total, ...(showAmounts ? { amount } : {}) }, + }, + ], + signature: true, + }; + // CSV: nur die Buchungen - die Zusammenfassung stoert beim Weiterverarbeiten. + if (format === 'csv') doc.tables = [doc.tables[0]]; + await sendDocument(res, doc, format, settings); + } catch (err) { + next(err); + } +}); + +const GROUPS = { + users: { title: 'Mitarbeiter', label: 'Mitarbeiter' }, + projects: { title: 'Projekte', label: 'Projekt' }, + clients: { title: 'Kunden', label: 'Kunde' }, + tasks: { title: 'Tasks', label: 'Task' }, +}; + +/** Export des Zeitreports in der gewaehlten Aufteilung oder als Detailliste. */ +router.get('/report', async (req, res, next) => { + try { + if (!hasRole(req.user, 'lead')) return res.status(403).json({ error: 'Keine Berechtigung.' }); + const format = FORMATS.includes(req.query.format) ? req.query.format : 'pdf'; + if (!parseDate(req.query.from) || !parseDate(req.query.to)) return res.status(400).json({ error: 'Zeitraum fehlt.' }); + const settings = await getSettings(); + const report = await buildTimeReport(req.user, req.query); + const s = report.summary; + const groupKey = GROUPS[req.query.group] ? req.query.group : req.query.group === 'detail' ? 'detail' : 'users'; + + let customerName = null; + if (req.query.customer_id) { + const [[c]] = await pool.query('SELECT name FROM pulse_customers WHERE id = ?', [Number(req.query.customer_id)]); + customerName = c?.name; + } + + let table; + if (groupKey === 'detail') { + table = { + columns: [ + { key: 'entry_date', label: 'Datum', type: 'date', width: 58, xlsWidth: 12 }, + { key: 'user_name', label: 'Mitarbeiter', width: 90, xlsWidth: 22 }, + { key: 'project_display', label: 'Projekt', width: 120, xlsWidth: 28 }, + { key: 'task_name', label: 'Task', width: 80, xlsWidth: 20 }, + { key: 'note', label: 'Tätigkeit', type: 'text', xlsWidth: 40 }, + { key: 'minutes', label: 'Stunden', type: 'hours', align: 'right', width: 48, xlsWidth: 10 }, + { key: 'billable_label', label: 'Abr.', width: 30, xlsWidth: 6 }, + { key: 'amount', label: 'Betrag', type: 'money', align: 'right', width: 66, xlsWidth: 14 }, + ], + rows: report.entries.map((e) => ({ + ...e, + billable_label: e.billable ? 'ja' : 'nein', + amount: e.amount + (report.include_fixed ? e.fixed_amount : 0), + })), + totals: { user_name: 'Summe', minutes: s.minutes, amount: s.amount }, + }; + } else { + const rows = report[groupKey].map((row) => ({ + ...row, + billable_percent: row.minutes ? Math.round((row.billable_minutes / row.minutes) * 100) : 0, + })); + table = { + columns: [ + { key: 'name', label: GROUPS[groupKey].label, xlsWidth: 36 }, + ...(groupKey === 'projects' ? [{ key: 'customer_name', label: 'Kunde', width: 110, xlsWidth: 24 }] : []), + { key: 'minutes', label: 'Stunden', type: 'hours', align: 'right', width: 60, xlsWidth: 12 }, + ...(groupKey === 'users' ? [{ key: 'utilization', label: 'Auslastung', type: 'percent', align: 'right', width: 60, xlsWidth: 12 }] : []), + { key: 'billable_minutes', label: 'Abrechenbar', type: 'hours', align: 'right', width: 66, xlsWidth: 13 }, + { key: 'billable_percent', label: 'Anteil', type: 'percent', align: 'right', width: 46, xlsWidth: 9 }, + { key: 'non_billable_minutes', label: 'Nicht abr.', type: 'hours', align: 'right', width: 60, xlsWidth: 12 }, + { key: 'amount', label: 'Betrag', type: 'money', align: 'right', width: 80, xlsWidth: 15 }, + ], + rows, + totals: { + name: 'Summe', + minutes: s.minutes, + billable_minutes: s.billable_minutes, + non_billable_minutes: s.non_billable_minutes, + amount: s.amount, + }, + }; + } + + const title = groupKey === 'detail' ? 'Zeitreport – Detail' : `Zeitreport – ${GROUPS[groupKey].title}`; + await sendDocument( + res, + { + title, + subtitle: `${dateDe(report.range.from)} – ${dateDe(report.range.to)}`, + filename: `Zeitreport ${report.range.from} bis ${report.range.to}${customerName ? ` ${customerName}` : ''}`, + landscape: true, + sheetName: 'Zeitreport', + info: [ + ['Kunde', customerName || 'Alle Kunden'], + ['Festpreisprojekte', report.include_fixed ? 'im Betrag enthalten' : 'nicht im Betrag enthalten'], + ], + kpis: [ + ['Gesamtstunden', hoursDe(s.minutes)], + ['Abrechenbar', `${hoursDe(s.billable_minutes)} (${s.minutes ? Math.round((s.billable_minutes / s.minutes) * 100) : 0} %)`], + ['Nicht abrechenbar', hoursDe(s.non_billable_minutes)], + ['Abrechenbarer Betrag', moneyDe(s.amount)], + ], + tables: [table], + }, + format, + settings + ); + } catch (err) { + next(err); + } +}); + +export default router; diff --git a/server/src/routes/projects.js b/server/src/routes/projects.js new file mode 100644 index 0000000..a053de5 --- /dev/null +++ b/server/src/routes/projects.js @@ -0,0 +1,385 @@ +import express from 'express'; +import { pool, withTransaction } from '../db.js'; +import { hasRole, requireRole } from '../middleware/auth.js'; +import { getSettings } from '../lib/settings.js'; +import { parseDate } from '../lib/dates.js'; +import { + deriveBudgetHours, + generateCode, + loadProjects, + reassignEntries, + stripAmounts, +} from '../lib/projects.js'; + +const router = express.Router(); +const TYPES = ['billable', 'non_billable', 'fixed']; + +const str = (v, max) => (v == null ? null : String(v).trim().slice(0, max) || null); +const num = (v) => (v === '' || v == null ? null : Number(v)); + +function validatePot(input, project, settings) { + const errors = []; + const pot = { + label: str(input.label, 160), + valid_from: input.valid_from, + valid_to: input.valid_to, + budget_amount: num(input.budget_amount), + rate: num(input.rate), + notes: str(input.notes, 500), + }; + if (!pot.label) errors.push('Budgettopf: Bezeichnung fehlt.'); + if (!parseDate(pot.valid_from) || !parseDate(pot.valid_to)) errors.push(`Budgettopf „${pot.label || ''}“: Laufzeit von/bis fehlt.`); + else if (pot.valid_from > pot.valid_to) errors.push(`Budgettopf „${pot.label}“: Laufzeit endet vor dem Beginn.`); + for (const key of ['budget_amount', 'rate']) { + if (pot[key] != null && !(Number.isFinite(pot[key]) && pot[key] >= 0)) errors.push(`Budgettopf „${pot.label}“: ungültiger Betrag.`); + } + if (project.type === 'billable') { + if (!pot.rate) errors.push(`Budgettopf „${pot.label}“: Stundensatz/Tagessatz fehlt.`); + if (pot.budget_amount == null && num(input.budget_hours) == null) { + errors.push(`Budgettopf „${pot.label}“: Budget in Euro oder Stunden angeben.`); + } + } + if (project.type === 'fixed' && !pot.budget_amount) errors.push(`Budgettopf „${pot.label}“: Festpreis fehlt.`); + if (project.type === 'non_billable') pot.rate = null; + pot.budget_hours = deriveBudgetHours({ ...input, budget_amount: pot.budget_amount, rate: pot.rate }, project, settings); + if (pot.budget_hours != null && !(pot.budget_hours > 0)) errors.push(`Budgettopf „${pot.label}“: Volumen muss größer 0 sein.`); + return { pot, errors }; +} + +function validateProject(body, { creating }) { + const errors = []; + const out = {}; + if (creating || body.customer_id !== undefined) { + out.customer_id = Number(body.customer_id) || null; + if (!out.customer_id) errors.push('Kunde fehlt.'); + } + if (creating || body.name !== undefined) { + out.name = str(body.name, 190); + if (!out.name) errors.push('Projektname fehlt.'); + } + if (creating || body.type !== undefined) { + out.type = body.type || 'billable'; + if (!TYPES.includes(out.type)) errors.push('Unbekannter Projekttyp.'); + } + if (creating || body.billing_unit !== undefined) out.billing_unit = body.billing_unit === 'day' ? 'day' : 'hour'; + if (creating || body.start_date !== undefined) { + out.start_date = body.start_date; + if (!parseDate(out.start_date)) errors.push('Startdatum fehlt.'); + } + if (body.end_date !== undefined) { + out.end_date = body.end_date || null; + if (out.end_date && !parseDate(out.end_date)) errors.push('Enddatum ist ungültig.'); + if (out.end_date && out.start_date && out.end_date < out.start_date) errors.push('Enddatum liegt vor dem Startdatum.'); + } + if (body.tags !== undefined) { + const tags = Array.isArray(body.tags) ? body.tags : String(body.tags || '').split(','); + out.tags = JSON.stringify([...new Set(tags.map((t) => String(t).trim()).filter(Boolean))].slice(0, 20)); + } + if (body.notes !== undefined) out.notes = str(body.notes, 5000); + if (body.owner_id !== undefined) out.owner_id = Number(body.owner_id) || null; + if (body.is_active !== undefined) out.is_active = body.is_active ? 1 : 0; + return { out, errors }; +} + +async function findProject(id) { + const [rows] = await pool.query('SELECT * FROM pulse_projects WHERE id = ? LIMIT 1', [id]); + return rows[0] || null; +} + +async function respondProject(req, res, id, status = 200) { + const settings = await getSettings(); + const [project] = await loadProjects(settings, { where: 'p.id = ?', params: [id] }); + res.status(status).json(hasRole(req.user, 'lead') ? project : stripAmounts(project)); +} + +async function setMembers(conn, projectId, userIds) { + let ids = [...new Set((userIds || []).map(Number).filter(Boolean))]; + // Administratoren buchen keine Zeiten und werden deshalb nie zugewiesen. + if (ids.length) { + const [admins] = await conn.query( + `SELECT id FROM pulse_users WHERE role = 'admin' AND id IN (${ids.map(() => '?').join(',')})`, + ids + ); + const blocked = new Set(admins.map((a) => a.id)); + ids = ids.filter((id) => !blocked.has(id)); + } + await conn.query('DELETE FROM pulse_project_members WHERE project_id = ?', [projectId]); + if (ids.length) { + await conn.query('INSERT INTO pulse_project_members (project_id, user_id) VALUES ?', [ids.map((id) => [projectId, id])]); + } +} + +/** Abrechenbar-Merker aller Buchungen nach Aenderung von Projekttyp oder Task. */ +async function refreshBillable(conn, projectId) { + await conn.query( + `UPDATE pulse_time_entries e + JOIN pulse_projects p ON p.id = e.project_id + LEFT JOIN pulse_tasks t ON t.id = e.task_id + SET e.billable = CASE WHEN p.type = 'non_billable' THEN 0 WHEN t.id IS NULL THEN 1 ELSE t.billable END + WHERE e.project_id = ?`, + [projectId] + ); +} + +// Liste. Mitarbeiter sehen nur zugewiesene Projekte, ohne Betraege. +// ?scope=mine liefert auch fuer Fuehrungsrollen nur die eigenen (Buchungsdialog). +router.get('/', async (req, res, next) => { + try { + const settings = await getSettings(); + const mineOnly = req.user.role === 'user' || req.query.scope === 'mine'; + const projects = await loadProjects( + settings, + mineOnly + ? { where: 'p.id IN (SELECT project_id FROM pulse_project_members WHERE user_id = ?)', params: [req.user.id] } + : {} + ); + res.json(hasRole(req.user, 'lead') ? projects : projects.map(stripAmounts)); + } catch (err) { + next(err); + } +}); + +router.get('/:id', async (req, res, next) => { + try { + const id = Number(req.params.id); + if (req.user.role === 'user') { + const [rows] = await pool.query('SELECT 1 FROM pulse_project_members WHERE project_id = ? AND user_id = ?', [id, req.user.id]); + if (!rows.length) return res.status(404).json({ error: 'Projekt nicht gefunden.' }); + } + if (!(await findProject(id))) return res.status(404).json({ error: 'Projekt nicht gefunden.' }); + await respondProject(req, res, id); + } catch (err) { + next(err); + } +}); + +router.post('/', requireRole('lead'), async (req, res, next) => { + try { + const settings = await getSettings(); + const body = req.body || {}; + const { out, errors } = validateProject(body, { creating: true }); + const pots = []; + const potInputs = Array.isArray(body.pots) ? body.pots : []; + if (potInputs.length === 0) errors.push('Mindestens ein Budgettopf ist erforderlich.'); + for (const input of potInputs) { + const result = validatePot(input, out, settings); + errors.push(...result.errors); + pots.push(result.pot); + } + const [customers] = await pool.query('SELECT * FROM pulse_customers WHERE id = ?', [out.customer_id || 0]); + if (out.customer_id && !customers[0]) errors.push('Kunde nicht gefunden.'); + if (errors.length) return res.status(400).json({ error: [...new Set(errors)].join(' ') }); + + const id = await withTransaction(async (conn) => { + const { code, seq } = await generateCode(conn, settings, customers[0], out.start_date); + const fields = { ...out, code, seq, created_by: req.user.id, owner_id: out.owner_id ?? (req.user.role === 'admin' ? null : req.user.id) }; + const keys = Object.keys(fields); + const [result] = await conn.query( + `INSERT INTO pulse_projects (${keys.join(', ')}) VALUES (${keys.map(() => '?').join(', ')})`, + keys.map((k) => fields[k]) + ); + const projectId = result.insertId; + for (const pot of pots) { + await conn.query( + `INSERT INTO pulse_budget_pots (project_id, label, valid_from, valid_to, budget_amount, rate, budget_hours, notes) + VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, + [projectId, pot.label, pot.valid_from, pot.valid_to, pot.budget_amount, pot.rate, pot.budget_hours, pot.notes] + ); + } + const tasks = (Array.isArray(body.tasks) ? body.tasks : []).filter((t) => str(t?.name, 160)); + for (const task of tasks) { + await conn.query('INSERT INTO pulse_tasks (project_id, name, billable) VALUES (?, ?, ?)', [ + projectId, + str(task.name, 160), + out.type === 'non_billable' ? 0 : task.billable === false ? 0 : 1, + ]); + } + await setMembers(conn, projectId, body.member_ids); + return projectId; + }); + await respondProject(req, res, id, 201); + } catch (err) { + next(err); + } +}); + +router.put('/:id', requireRole('lead'), async (req, res, next) => { + try { + const project = await findProject(Number(req.params.id)); + if (!project) return res.status(404).json({ error: 'Projekt nicht gefunden.' }); + const body = req.body || {}; + const { out, errors } = validateProject( + { ...body, start_date: body.start_date ?? project.start_date }, + { creating: false } + ); + if (errors.length) return res.status(400).json({ error: errors.join(' ') }); + + await withTransaction(async (conn) => { + const keys = Object.keys(out); + if (keys.length) { + await conn.query(`UPDATE pulse_projects SET ${keys.map((k) => `${k} = ?`).join(', ')} WHERE id = ?`, [ + ...keys.map((k) => out[k]), + project.id, + ]); + } + if (Array.isArray(body.member_ids)) await setMembers(conn, project.id, body.member_ids); + if (out.type && out.type !== project.type) { + if (out.type === 'non_billable') await conn.query('UPDATE pulse_budget_pots SET rate = NULL WHERE project_id = ?', [project.id]); + await refreshBillable(conn, project.id); + await reassignEntries(conn, project.id); + } + }); + await respondProject(req, res, project.id); + } catch (err) { + next(err); + } +}); + +router.delete('/:id', requireRole('lead'), async (req, res, next) => { + try { + const project = await findProject(Number(req.params.id)); + if (!project) return res.status(404).json({ error: 'Projekt nicht gefunden.' }); + const [[{ n }]] = await pool.query('SELECT COUNT(*) AS n FROM pulse_time_entries WHERE project_id = ?', [project.id]); + if (Number(n) > 0) { + return res.status(409).json({ error: `Auf dem Projekt sind ${n} Buchungen. Bitte archivieren statt löschen.` }); + } + await pool.query('DELETE FROM pulse_projects WHERE id = ?', [project.id]); + res.json({ ok: true }); + } catch (err) { + next(err); + } +}); + +router.put('/:id/members', requireRole('lead'), async (req, res, next) => { + try { + const project = await findProject(Number(req.params.id)); + if (!project) return res.status(404).json({ error: 'Projekt nicht gefunden.' }); + await withTransaction((conn) => setMembers(conn, project.id, req.body?.user_ids)); + await respondProject(req, res, project.id); + } catch (err) { + next(err); + } +}); + +/* ------------------------------------------------------ Budgettoepfe -- */ + +router.post('/:id/pots', requireRole('lead'), async (req, res, next) => { + try { + const project = await findProject(Number(req.params.id)); + if (!project) return res.status(404).json({ error: 'Projekt nicht gefunden.' }); + const { pot, errors } = validatePot(req.body || {}, project, await getSettings()); + if (errors.length) return res.status(400).json({ error: errors.join(' ') }); + await withTransaction(async (conn) => { + await conn.query( + `INSERT INTO pulse_budget_pots (project_id, label, valid_from, valid_to, budget_amount, rate, budget_hours, notes) + VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, + [project.id, pot.label, pot.valid_from, pot.valid_to, pot.budget_amount, pot.rate, pot.budget_hours, pot.notes] + ); + await reassignEntries(conn, project.id); + }); + await respondProject(req, res, project.id, 201); + } catch (err) { + next(err); + } +}); + +router.put('/:id/pots/:potId', requireRole('lead'), async (req, res, next) => { + try { + const project = await findProject(Number(req.params.id)); + if (!project) return res.status(404).json({ error: 'Projekt nicht gefunden.' }); + const [existing] = await pool.query('SELECT * FROM pulse_budget_pots WHERE id = ? AND project_id = ?', [ + Number(req.params.potId), + project.id, + ]); + if (!existing[0]) return res.status(404).json({ error: 'Budgettopf nicht gefunden.' }); + const { pot, errors } = validatePot({ ...existing[0], ...req.body }, project, await getSettings()); + if (errors.length) return res.status(400).json({ error: errors.join(' ') }); + await withTransaction(async (conn) => { + await conn.query( + `UPDATE pulse_budget_pots SET label = ?, valid_from = ?, valid_to = ?, budget_amount = ?, rate = ?, budget_hours = ?, notes = ? + WHERE id = ?`, + [pot.label, pot.valid_from, pot.valid_to, pot.budget_amount, pot.rate, pot.budget_hours, pot.notes, existing[0].id] + ); + await reassignEntries(conn, project.id); + }); + await respondProject(req, res, project.id); + } catch (err) { + next(err); + } +}); + +router.delete('/:id/pots/:potId', requireRole('lead'), async (req, res, next) => { + try { + const projectId = Number(req.params.id); + const potId = Number(req.params.potId); + const [[{ n }]] = await pool.query('SELECT COUNT(*) AS n FROM pulse_time_entries WHERE pot_id = ?', [potId]); + if (Number(n) > 0) { + return res.status(409).json({ error: `Auf dem Topf sind ${n} Buchungen - er kann nicht gelöscht werden.` }); + } + const [[{ pots }]] = await pool.query('SELECT COUNT(*) AS pots FROM pulse_budget_pots WHERE project_id = ?', [projectId]); + if (Number(pots) <= 1) return res.status(400).json({ error: 'Ein Projekt braucht mindestens einen Budgettopf.' }); + await pool.query('DELETE FROM pulse_budget_pots WHERE id = ? AND project_id = ?', [potId, projectId]); + await respondProject(req, res, projectId); + } catch (err) { + next(err); + } +}); + +/* ------------------------------------------------------------- Tasks -- */ + +router.post('/:id/tasks', requireRole('lead'), async (req, res, next) => { + try { + const project = await findProject(Number(req.params.id)); + if (!project) return res.status(404).json({ error: 'Projekt nicht gefunden.' }); + const name = str(req.body?.name, 160); + if (!name) return res.status(400).json({ error: 'Taskname fehlt.' }); + await pool.query('INSERT INTO pulse_tasks (project_id, name, billable) VALUES (?, ?, ?)', [ + project.id, + name, + project.type === 'non_billable' ? 0 : req.body?.billable === false ? 0 : 1, + ]); + await respondProject(req, res, project.id, 201); + } catch (err) { + next(err); + } +}); + +router.put('/:id/tasks/:taskId', requireRole('lead'), async (req, res, next) => { + try { + const projectId = Number(req.params.id); + const [rows] = await pool.query('SELECT * FROM pulse_tasks WHERE id = ? AND project_id = ?', [Number(req.params.taskId), projectId]); + if (!rows[0]) return res.status(404).json({ error: 'Task nicht gefunden.' }); + const name = req.body?.name !== undefined ? str(req.body.name, 160) : rows[0].name; + if (!name) return res.status(400).json({ error: 'Taskname fehlt.' }); + const billable = req.body?.billable !== undefined ? (req.body.billable ? 1 : 0) : rows[0].billable; + const active = req.body?.is_active !== undefined ? (req.body.is_active ? 1 : 0) : rows[0].is_active; + await withTransaction(async (conn) => { + await conn.query('UPDATE pulse_tasks SET name = ?, billable = ?, is_active = ? WHERE id = ?', [name, billable, active, rows[0].id]); + if (billable !== rows[0].billable) { + await refreshBillable(conn, projectId); + await reassignEntries(conn, projectId); + } + }); + await respondProject(req, res, projectId); + } catch (err) { + next(err); + } +}); + +router.delete('/:id/tasks/:taskId', requireRole('lead'), async (req, res, next) => { + try { + const projectId = Number(req.params.id); + const taskId = Number(req.params.taskId); + const [[{ n }]] = await pool.query('SELECT COUNT(*) AS n FROM pulse_time_entries WHERE task_id = ?', [taskId]); + if (Number(n) > 0) { + await pool.query('UPDATE pulse_tasks SET is_active = 0 WHERE id = ? AND project_id = ?', [taskId, projectId]); + } else { + await pool.query('DELETE FROM pulse_tasks WHERE id = ? AND project_id = ?', [taskId, projectId]); + } + await respondProject(req, res, projectId); + } catch (err) { + next(err); + } +}); + +export default router; diff --git a/server/src/routes/reports.js b/server/src/routes/reports.js new file mode 100644 index 0000000..05f7272 --- /dev/null +++ b/server/src/routes/reports.js @@ -0,0 +1,234 @@ +import express from 'express'; +import { pool } from '../db.js'; +import { teamOf, userFilter, visibleUserIds } from '../lib/access.js'; +import { getSettings } from '../lib/settings.js'; +import { loadEntries } from '../lib/entries.js'; +import { loadProjects } from '../lib/projects.js'; +import { addDays, mondayOf, parseDate, today, isoWeek } from '../lib/dates.js'; +import { capacityMinutes } from './dashboard.js'; + +const router = express.Router(); +const r2 = (n) => Math.round(n * 100) / 100; + +/** Welche Benutzer fliessen ein: Sicht des Anfragenden, optional auf ein Team verengt. */ +export async function reportUserIds(viewer, teamLeadId) { + const visible = await visibleUserIds(viewer); + if (!teamLeadId) return visible; + const team = [Number(teamLeadId), ...(await teamOf(Number(teamLeadId)))]; + return visible === null ? team : team.filter((id) => visible.includes(id)); +} + +function group(entries, keyFn, labelFn, includeFixed) { + const map = new Map(); + for (const e of entries) { + const key = keyFn(e); + const item = map.get(key) || { key, ...labelFn(e), minutes: 0, billable_minutes: 0, amount: 0 }; + item.minutes += e.minutes; + if (e.billable) item.billable_minutes += e.minutes; + item.amount += e.amount + (includeFixed ? e.fixed_amount : 0); + map.set(key, item); + } + return [...map.values()] + .map((i) => ({ ...i, amount: r2(i.amount), non_billable_minutes: i.minutes - i.billable_minutes })) + .sort((a, b) => b.minutes - a.minutes); +} + +/** Zeitreport wie in Harvest: Summen plus Aufteilung nach Kunde, Projekt, Task, Mitarbeiter. */ +export async function buildTimeReport(viewer, query) { + const settings = await getSettings(); + const from = query.from; + const to = query.to; + const includeFixed = query.include_fixed === '1' || query.include_fixed === 'true'; + const userIds = await reportUserIds(viewer, query.team); + const entries = await loadEntries(settings, { + from, + to, + userIds, + customerId: query.customer_id, + projectId: query.project_id, + }); + + const filter = userFilter(userIds, 'id'); + const [users] = await pool.query( + `SELECT id, name, color, weekly_hours, is_external, company, is_active FROM pulse_users WHERE role <> 'admin' AND ${filter.sql} ORDER BY name`, + filter.params + ); + const capTo = to > today() ? today() : to; + + const minutes = entries.reduce((s, e) => s + e.minutes, 0); + const billable = entries.filter((e) => e.billable).reduce((s, e) => s + e.minutes, 0); + const amount = entries.reduce((s, e) => s + e.amount, 0); + const fixedAmount = entries.reduce((s, e) => s + e.fixed_amount, 0); + + const userRows = group(entries, (e) => e.user_id, (e) => ({ user_id: e.user_id, name: e.user_name, color: e.user_color, is_external: e.is_external }), includeFixed); + // Mitarbeiter ohne Buchung trotzdem zeigen (nur aktive, nicht bei Kunden-/Projektfilter). + if (!query.customer_id && !query.project_id) { + for (const u of users) { + if (u.is_active && !userRows.some((row) => row.user_id === u.id)) { + userRows.push({ key: u.id, user_id: u.id, name: u.name, color: u.color, is_external: Boolean(u.is_external), minutes: 0, billable_minutes: 0, non_billable_minutes: 0, amount: 0 }); + } + } + } + const byId = new Map(users.map((u) => [u.id, u])); + for (const row of userRows) { + const u = byId.get(row.user_id); + row.capacity_minutes = u && from <= capTo ? capacityMinutes(u, settings, from, capTo) : 0; + row.utilization = row.capacity_minutes ? Math.round((row.minutes / row.capacity_minutes) * 100) : null; + } + + return { + range: { from, to }, + include_fixed: includeFixed, + summary: { + minutes, + billable_minutes: billable, + non_billable_minutes: minutes - billable, + amount: r2(amount + (includeFixed ? fixedAmount : 0)), + amount_without_fixed: r2(amount), + fixed_amount: r2(fixedAmount), + entries: entries.length, + }, + clients: group(entries, (e) => e.customer_id, (e) => ({ customer_id: e.customer_id, name: e.customer_name, color: e.customer_color }), includeFixed), + projects: group( + entries, + (e) => e.project_id, + (e) => ({ project_id: e.project_id, name: e.project_display, code: e.project_code, type: e.project_type, customer_name: e.customer_name, color: e.customer_color }), + includeFixed + ), + tasks: group(entries, (e) => e.task_name || '(ohne Task)', (e) => ({ name: e.task_name || '(ohne Task)' }), includeFixed), + users: userRows.sort((a, b) => a.name.localeCompare(b.name, 'de')), + entries, + }; +} + +router.get('/time', async (req, res, next) => { + try { + if (!parseDate(req.query.from) || !parseDate(req.query.to)) return res.status(400).json({ error: 'Zeitraum fehlt.' }); + const report = await buildTimeReport(req.user, req.query); + delete report.entries; + res.json(report); + } catch (err) { + next(err); + } +}); + +/** Projektreport (Harvest-Projektseite): Verlauf, Budget, Tasks, Team, Toepfe. */ +router.get('/project/:id', async (req, res, next) => { + try { + const settings = await getSettings(); + const [project] = await loadProjects(settings, { where: 'p.id = ?', params: [Number(req.params.id)] }); + if (!project) return res.status(404).json({ error: 'Projekt nicht gefunden.' }); + const userIds = await visibleUserIds(req.user); + const entries = await loadEntries(settings, { projectId: project.id, userIds, from: req.query.from, to: req.query.to }); + res.json(buildProjectDetail(project, entries)); + } catch (err) { + next(err); + } +}); + +function buildProjectDetail(project, entries) { + const includeFixed = project.type === 'fixed'; + // Wochenreihe vom Projektstart bis max(Ende, heute) - hoechstens 104 Wochen. + const end = [project.end_date || today(), today(), ...project.pots.map((p) => p.valid_to)].sort().pop(); + const lastMonday = mondayOf(end); + let start = [mondayOf(project.start_date), addDays(lastMonday, -103 * 7)].sort().pop(); + const weeks = []; + while (start <= lastMonday) { + weeks.push(start); + start = addDays(start, 7); + } + let cumulative = entries.filter((e) => e.entry_date < weeks[0]).reduce((s, e) => s + e.minutes, 0); + const weekly = weeks.map((monday) => { + const sunday = addDays(monday, 6); + const own = entries.filter((e) => e.entry_date >= monday && e.entry_date <= sunday); + const minutes = own.reduce((s, e) => s + e.minutes, 0); + const billable = own.filter((e) => e.billable).reduce((s, e) => s + e.minutes, 0); + cumulative += minutes; + return { + week_start: monday, + label: `KW ${isoWeek(monday).week}`, + minutes, + billable_minutes: billable, + cumulative_minutes: monday <= today() ? cumulative : null, + }; + }); + + const minutes = entries.reduce((s, e) => s + e.minutes, 0); + const billable = entries.filter((e) => e.billable).reduce((s, e) => s + e.minutes, 0); + return { + project, + totals: { + minutes, + billable_minutes: billable, + non_billable_minutes: minutes - billable, + amount: r2(entries.reduce((s, e) => s + e.amount + e.fixed_amount, 0)), + }, + weekly, + tasks: group(entries, (e) => e.task_name || '(ohne Task)', (e) => ({ name: e.task_name || '(ohne Task)' }), includeFixed), + team: group(entries, (e) => e.user_id, (e) => ({ user_id: e.user_id, name: e.user_name, color: e.user_color }), includeFixed), + pots: project.pots.map((pot) => { + const own = entries.filter((e) => e.pot_id === pot.id); + return { + ...pot, + tasks: group(own, (e) => e.task_name || '(ohne Task)', (e) => ({ name: e.task_name || '(ohne Task)' }), includeFixed), + team: group(own, (e) => e.user_id, (e) => ({ user_id: e.user_id, name: e.user_name, color: e.user_color }), includeFixed), + }; + }), + }; +} + +/** Kundenreport: alle Projekte eines Kunden mit Budget, Verlauf und Team. */ +router.get('/customer/:id', async (req, res, next) => { + try { + const settings = await getSettings(); + const [[customer]] = await pool.query('SELECT * FROM pulse_customers WHERE id = ?', [Number(req.params.id)]); + if (!customer) return res.status(404).json({ error: 'Kunde nicht gefunden.' }); + const projects = await loadProjects(settings, { where: 'p.customer_id = ?', params: [customer.id] }); + const userIds = await visibleUserIds(req.user); + const entries = await loadEntries(settings, { customerId: customer.id, userIds, from: req.query.from, to: req.query.to }); + + // Monatsreihe ueber die ganze Kundenbeziehung, hoechstens 24 Monate. + const months = [...new Set(entries.map((e) => e.entry_date.slice(0, 7)))].sort(); + const first = months[0] || today().slice(0, 7); + const series = []; + const cursor = new Date(`${first}-01T00:00:00Z`); + const last = today().slice(0, 7); + while (cursor.toISOString().slice(0, 7) <= last && series.length < 36) { + const month = cursor.toISOString().slice(0, 7); + const own = entries.filter((e) => e.entry_date.startsWith(month)); + series.push({ + month, + minutes: own.reduce((s, e) => s + e.minutes, 0), + billable_minutes: own.filter((e) => e.billable).reduce((s, e) => s + e.minutes, 0), + amount: r2(own.reduce((s, e) => s + e.amount + e.fixed_amount, 0)), + }); + cursor.setUTCMonth(cursor.getUTCMonth() + 1); + } + + const minutes = entries.reduce((s, e) => s + e.minutes, 0); + const billable = entries.filter((e) => e.billable).reduce((s, e) => s + e.minutes, 0); + res.json({ + customer, + totals: { + minutes, + billable_minutes: billable, + non_billable_minutes: minutes - billable, + amount: r2(entries.reduce((s, e) => s + e.amount + e.fixed_amount, 0)), + earned: r2(projects.reduce((s, p) => s + p.earned, 0)), + open: r2(projects.reduce((s, p) => s + p.open, 0)), + budget_value: r2(projects.reduce((s, p) => s + p.budget_value, 0)), + }, + series: series.slice(-24), + projects: projects.map((p) => { + const own = entries.filter((e) => e.project_id === p.id); + return { ...buildProjectDetail(p, own), weekly: undefined }; + }), + team: group(entries, (e) => e.user_id, (e) => ({ user_id: e.user_id, name: e.user_name, color: e.user_color }), true), + tasks: group(entries, (e) => e.task_name || '(ohne Task)', (e) => ({ name: e.task_name || '(ohne Task)' }), true), + }); + } catch (err) { + next(err); + } +}); + +export default router; diff --git a/server/src/routes/settings.js b/server/src/routes/settings.js new file mode 100644 index 0000000..239e2e4 --- /dev/null +++ b/server/src/routes/settings.js @@ -0,0 +1,182 @@ +import express from 'express'; +import { requireRole, ROLES } from '../middleware/auth.js'; +import { DEFAULTS, getSettings, saveSetting } from '../lib/settings.js'; +import { ssoConfigured, testConnection } from '../lib/sso.js'; +import { sendDocument } from '../export/render.js'; + +const router = express.Router(); + +// Fuer alle Angemeldeten: was die Oberflaeche zum Rechnen braucht. +router.get('/public', async (req, res, next) => { + try { + const s = await getSettings(); + res.json({ + weekly_hours: Number(s.weekly_hours), + hours_per_day: Number(s.hours_per_day), + budget_warn_percent: Number(s.budget_warn_percent), + budget_warn_days: Number(s.budget_warn_days), + company_name: s.company_name, + project_code_pattern: s.project_code_pattern, + project_name_pattern: s.project_name_pattern, + }); + } catch (err) { + next(err); + } +}); + +router.get('/', requireRole('admin'), async (req, res, next) => { + try { + const s = await getSettings(); + res.json({ ...s, sso: { ...s.sso, client_secret: '', client_secret_set: Boolean(s.sso.client_secret), configured: ssoConfigured(s.sso) } }); + } catch (err) { + next(err); + } +}); + +const text = (v, max) => String(v ?? '').slice(0, max); + +router.put('/', requireRole('admin'), async (req, res, next) => { + try { + const body = req.body || {}; + const current = await getSettings(); + const errors = []; + + const numbers = { + weekly_hours: [1, 80], + hours_per_day: [1, 24], + budget_warn_percent: [1, 100], + budget_warn_days: [0, 365], + }; + for (const [key, [min, max]] of Object.entries(numbers)) { + if (body[key] === undefined) continue; + const value = Number(body[key]); + if (!(value >= min && value <= max)) errors.push(`${key}: Wert zwischen ${min} und ${max}.`); + else await saveSetting(key, value); + } + if (body.company_name !== undefined) await saveSetting('company_name', text(body.company_name, 160)); + if (body.project_code_pattern !== undefined) { + const pattern = text(body.project_code_pattern, 60).trim(); + if (!pattern.includes('{NR}')) errors.push('Das Codemuster braucht {NR}, sonst sind Codes nicht eindeutig.'); + else await saveSetting('project_code_pattern', pattern); + } + if (body.project_name_pattern !== undefined) { + const pattern = text(body.project_name_pattern, 60).trim(); + if (!pattern.includes('{PROJEKT}')) errors.push('Das Namensmuster braucht {PROJEKT}.'); + else await saveSetting('project_name_pattern', pattern); + } + + if (body.export) { + const next_ = { ...current.export }; + for (const key of Object.keys(DEFAULTS.export)) { + if (body.export[key] === undefined) continue; + if (key === 'show_signature') next_[key] = Boolean(body.export[key]); + else if (key === 'logo') { + const logo = body.export.logo; + if (logo === null || logo === '') next_.logo = null; + else if (/^data:image\/(png|jpe?g);base64,/.test(logo) && logo.length < 2_500_000) next_.logo = logo; + else errors.push('Logo: PNG oder JPG bis ca. 1,8 MB.'); + } else if (key === 'accent') { + if (/^#[0-9a-f]{6}$/i.test(body.export.accent)) next_.accent = body.export.accent; + else errors.push('Akzentfarbe ist ungültig.'); + } else next_[key] = text(body.export[key], 300); + } + await saveSetting('export', next_); + } + + if (body.sso) { + const next_ = { ...current.sso }; + for (const key of ['tenant_id', 'client_id', 'redirect_uri', 'button_label']) { + if (body.sso[key] !== undefined) next_[key] = text(body.sso[key], 300).trim(); + } + for (const key of ['enabled', 'local_login']) { + if (body.sso[key] !== undefined) next_[key] = Boolean(body.sso[key]); + } + // Leer = unveraendert lassen; das Secret wird nie ausgeliefert. + if (body.sso.client_secret) next_.client_secret = text(body.sso.client_secret, 500).trim(); + if (body.sso.clear_secret) next_.client_secret = ''; + if (next_.enabled && !ssoConfigured(next_)) errors.push('SSO kann erst aktiviert werden, wenn Tenant, Client-ID, Secret und Redirect-URI gesetzt sind.'); + if (next_.enabled && !ssoConfigured(next_)) next_.enabled = false; + if (!next_.enabled) next_.local_login = true; // ohne SSO braucht es die normale Anmeldung + await saveSetting('sso', next_); + } + + if (errors.length) return res.status(400).json({ error: errors.join(' ') }); + res.json({ ok: true }); + } catch (err) { + next(err); + } +}); + +router.post('/sso/test', requireRole('admin'), async (req, res) => { + try { + const { sso } = await getSettings(); + if (!ssoConfigured(sso)) return res.status(400).json({ error: 'Tenant, Client-ID und Secret fehlen.' }); + const result = await testConnection(sso); + res.json({ ok: true, ...result }); + } catch (err) { + res.status(502).json({ error: `Verbindung fehlgeschlagen: ${err.message}` }); + } +}); + +/** Beispiel-Stundennachweis mit Platzhalterdaten - zeigt Kopf und Fuss. */ +router.get('/export-preview', requireRole('admin'), async (req, res, next) => { + try { + const settings = await getSettings(); + const format = ['pdf', 'xlsx', 'csv'].includes(req.query.format) ? req.query.format : 'pdf'; + const rows = [ + ['2026-09-01', 'Di', 'Projektleitung', 'Jour fixe und Statusbericht', 150], + ['2026-09-02', 'Mi', 'Konzeption', 'Workshop Anforderungen', 420], + ['2026-09-03', 'Do', 'Konzeption', 'Dokumentation Prozessmodell', 390], + ['2026-09-04', 'Fr', 'Projektleitung', '', 240], + ].map(([entry_date, weekday, task_name, note, minutes]) => ({ + entry_date, + weekday, + project_display: 'Musterkunde - Beispielprojekt', + task_name, + note, + minutes, + duration: `${Math.floor(minutes / 60)}:${String(minutes % 60).padStart(2, '0')}`, + })); + const total = rows.reduce((s, r) => s + r.minutes, 0); + await sendDocument( + res, + { + title: settings.export.title || 'Stundennachweis', + subtitle: 'Vorschau', + filename: 'Vorschau Stundennachweis', + info: [ + ['Berater', 'Max Mustermann'], + ['Kunde', 'Musterkunde GmbH'], + ['Zeitraum', '01.09.2026 – 30.09.2026'], + ['Projekt', 'Musterkunde - Beispielprojekt'], + ], + kpis: [ + ['Gesamtstunden', (total / 60).toLocaleString('de-DE', { minimumFractionDigits: 2 })], + ['Tage mit Leistung', '4'], + ], + tables: [ + { + columns: [ + { key: 'entry_date', label: 'Datum', type: 'date', width: 58 }, + { key: 'weekday', label: 'Tag', width: 26 }, + { key: 'project_display', label: 'Projekt', width: 120 }, + { key: 'task_name', label: 'Task', width: 80 }, + { key: 'note', label: 'Tätigkeit', type: 'text' }, + { key: 'duration', label: 'Dauer', align: 'right', width: 38 }, + { key: 'minutes', label: 'Stunden', type: 'hours', align: 'right', width: 46 }, + ], + rows, + totals: { weekday: 'Summe', minutes: total }, + }, + ], + signature: true, + }, + format, + settings + ); + } catch (err) { + next(err); + } +}); + +export default router; diff --git a/server/src/routes/users.js b/server/src/routes/users.js new file mode 100644 index 0000000..7f0e3fb --- /dev/null +++ b/server/src/routes/users.js @@ -0,0 +1,229 @@ +import express from 'express'; +import bcrypt from 'bcryptjs'; +import { pool } from '../db.js'; +import { ROLES, USER_COLUMNS, publicUser, requireRole } from '../middleware/auth.js'; +import { visibleUserIds } from '../lib/access.js'; + +const router = express.Router(); + +/* + * Wer darf wen verwalten? + * admin alle + * management alle ausser Administratoren, vergibt hoechstens "management" + * lead nur Mitarbeiter (Rolle user) im eigenen Team, vergibt nur "user" + */ +function assignableRoles(actor) { + if (actor.role === 'admin') return ROLES; + if (actor.role === 'management') return ['user', 'lead', 'management']; + return ['user']; +} + +async function canManage(actor, target) { + if (actor.role === 'admin') return true; + if (actor.role === 'management') return target.role !== 'admin'; + if (actor.role === 'lead') { + if (target.role !== 'user') return false; + const team = await visibleUserIds(actor); + return team.includes(target.id); + } + return false; +} + +async function loadUser(id) { + const [rows] = await pool.query(`SELECT ${USER_COLUMNS} FROM pulse_users WHERE id = ? LIMIT 1`, [id]); + return rows[0] || null; +} + +/** Verhindert, dass jemand (indirekt) sein eigener Vorgesetzter wird. */ +async function createsCycle(userId, managerId) { + if (!managerId || !userId) return false; + const [rows] = await pool.query('SELECT id, manager_id FROM pulse_users'); + const parent = new Map(rows.map((r) => [r.id, r.manager_id])); + let current = managerId; + for (let guard = 0; current && guard < 1000; guard++) { + if (current === userId) return true; + current = parent.get(current); + } + return false; +} + +async function activeAdmins(excludeId) { + const [rows] = await pool.query( + "SELECT COUNT(*) AS n FROM pulse_users WHERE role = 'admin' AND is_active = 1 AND id <> ?", + [excludeId] + ); + return Number(rows[0].n); +} + +function normalize(body, { creating }) { + const errors = []; + const out = {}; + const str = (v, max) => (v == null ? null : String(v).trim().slice(0, max) || null); + + if (creating || body.name !== undefined) { + out.name = str(body.name, 160); + if (!out.name) errors.push('Name fehlt.'); + } + if (creating || body.username !== undefined) { + out.username = str(body.username, 80); + if (!out.username || !/^[a-zA-Z0-9._@-]{2,80}$/.test(out.username)) errors.push('Benutzername: 2-80 Zeichen, keine Leerzeichen.'); + } + if (body.email !== undefined) { + out.email = str(body.email, 190)?.toLowerCase() ?? null; + if (out.email && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(out.email)) errors.push('E-Mail-Adresse ist ungültig.'); + } + if (body.role !== undefined || creating) { + out.role = body.role || 'user'; + if (!ROLES.includes(out.role)) errors.push('Unbekannte Rolle.'); + } + if (body.manager_id !== undefined) out.manager_id = body.manager_id ? Number(body.manager_id) : null; + if (body.job_title !== undefined) out.job_title = str(body.job_title, 120); + if (body.is_external !== undefined) out.is_external = body.is_external ? 1 : 0; + if (body.company !== undefined) out.company = str(body.company, 160); + if (body.color !== undefined) out.color = /^#[0-9a-f]{6}$/i.test(body.color || '') ? body.color : null; + if (body.is_active !== undefined) out.is_active = body.is_active ? 1 : 0; + if (body.weekly_hours !== undefined) { + out.weekly_hours = body.weekly_hours === '' || body.weekly_hours == null ? null : Number(body.weekly_hours); + if (out.weekly_hours != null && !(out.weekly_hours >= 0 && out.weekly_hours <= 80)) errors.push('Wochenstunden: 0-80.'); + } + return { out, errors }; +} + +// Verzeichnis fuer alle: Namen, Farben und Hierarchie (ohne Kontaktdaten). +router.get('/directory', async (req, res, next) => { + try { + const [rows] = await pool.query( + 'SELECT id, name, color, role, manager_id, is_external, company, job_title, is_active FROM pulse_users ORDER BY name' + ); + res.json(rows.map((r) => ({ ...r, is_external: Boolean(r.is_external), is_active: Boolean(r.is_active) }))); + } catch (err) { + next(err); + } +}); + +router.get('/', requireRole('lead'), async (req, res, next) => { + try { + const [rows] = await pool.query( + `SELECT ${USER_COLUMNS.split(',').map((c) => `u.${c.trim()}`).join(', ')}, + (SELECT COUNT(*) FROM pulse_time_entries e WHERE e.user_id = u.id) AS entry_count, + (SELECT COUNT(*) FROM pulse_project_members m WHERE m.user_id = u.id) AS project_count + FROM pulse_users u ORDER BY u.name` + ); + const team = await visibleUserIds(req.user); + const result = []; + for (const row of rows) { + result.push({ + ...publicUser(row), + entry_count: Number(row.entry_count), + project_count: Number(row.project_count), + can_manage: await canManage(req.user, row), + in_team: team === null || team.includes(row.id), + }); + } + res.json({ users: result, assignable_roles: assignableRoles(req.user) }); + } catch (err) { + next(err); + } +}); + +router.post('/', requireRole('lead'), async (req, res, next) => { + const { out, errors } = normalize(req.body || {}, { creating: true }); + const password = String(req.body?.password || ''); + if (password.length < 8) errors.push('Passwort: mindestens 8 Zeichen.'); + if (!assignableRoles(req.user).includes(out.role)) errors.push('Diese Rolle darfst du nicht vergeben.'); + if (req.user.role === 'lead') { + const team = await visibleUserIds(req.user); + if (!out.manager_id || !team.includes(out.manager_id)) out.manager_id = req.user.id; + } + if (errors.length) return res.status(400).json({ error: errors.join(' ') }); + + try { + const hash = await bcrypt.hash(password, 12); + const fields = { ...out, password_hash: hash, source: 'local' }; + const keys = Object.keys(fields); + const [result] = await pool.query( + `INSERT INTO pulse_users (${keys.join(', ')}) VALUES (${keys.map(() => '?').join(', ')})`, + keys.map((k) => fields[k]) + ); + res.status(201).json(publicUser(await loadUser(result.insertId))); + } catch (err) { + if (err.code === 'ER_DUP_ENTRY') return res.status(409).json({ error: 'Benutzername oder E-Mail ist schon vergeben.' }); + next(err); + } +}); + +router.put('/:id', requireRole('lead'), async (req, res, next) => { + try { + const target = await loadUser(Number(req.params.id)); + if (!target) return res.status(404).json({ error: 'Benutzer nicht gefunden.' }); + if (!(await canManage(req.user, target))) return res.status(403).json({ error: 'Diesen Benutzer darfst du nicht bearbeiten.' }); + + const { out, errors } = normalize(req.body || {}, { creating: false }); + if (out.role && out.role !== target.role && !assignableRoles(req.user).includes(out.role)) { + errors.push('Diese Rolle darfst du nicht vergeben.'); + } + // SSO-Benutzer: Stammdaten kommen aus dem AD. + if (target.source === 'sso') { + delete out.username; + delete out.email; + } + if (out.manager_id !== undefined && (await createsCycle(target.id, out.manager_id))) { + errors.push('Die Hierarchie darf keinen Kreis bilden.'); + } + if (req.user.role === 'lead' && out.manager_id !== undefined) { + const team = await visibleUserIds(req.user); + if (!out.manager_id || !team.includes(out.manager_id)) errors.push('Vorgesetzter muss aus deinem Team kommen.'); + } + if (target.id === req.user.id && (out.is_active === 0 || (out.role && out.role !== target.role))) { + errors.push('Die eigene Rolle und Aktivierung können nicht geändert werden.'); + } + if (target.role === 'admin' && ((out.role && out.role !== 'admin') || out.is_active === 0) && (await activeAdmins(target.id)) === 0) { + errors.push('Der letzte aktive Administrator kann nicht herabgestuft oder deaktiviert werden.'); + } + if (errors.length) return res.status(400).json({ error: errors.join(' ') }); + + if (req.body?.password) { + if (String(req.body.password).length < 8) return res.status(400).json({ error: 'Passwort: mindestens 8 Zeichen.' }); + out.password_hash = await bcrypt.hash(String(req.body.password), 12); + } + const keys = Object.keys(out); + if (keys.length) { + await pool.query(`UPDATE pulse_users SET ${keys.map((k) => `${k} = ?`).join(', ')} WHERE id = ?`, [ + ...keys.map((k) => out[k]), + target.id, + ]); + } + res.json(publicUser(await loadUser(target.id))); + } catch (err) { + if (err.code === 'ER_DUP_ENTRY') return res.status(409).json({ error: 'Benutzername oder E-Mail ist schon vergeben.' }); + next(err); + } +}); + +router.delete('/:id', requireRole('lead'), async (req, res, next) => { + try { + const target = await loadUser(Number(req.params.id)); + if (!target) return res.status(404).json({ error: 'Benutzer nicht gefunden.' }); + if (target.id === req.user.id) return res.status(400).json({ error: 'Das eigene Konto kann nicht gelöscht werden.' }); + if (!(await canManage(req.user, target))) return res.status(403).json({ error: 'Diesen Benutzer darfst du nicht löschen.' }); + if (target.source !== 'local') { + return res.status(400).json({ error: 'SSO-Benutzer werden über das AD verwaltet - hier nur deaktivieren.' }); + } + if (target.role === 'admin' && (await activeAdmins(target.id)) === 0) { + return res.status(400).json({ error: 'Der letzte Administrator kann nicht gelöscht werden.' }); + } + const [[{ n }]] = await pool.query('SELECT COUNT(*) AS n FROM pulse_time_entries WHERE user_id = ?', [target.id]); + if (Number(n) > 0) { + return res.status(409).json({ + error: `Der Benutzer hat ${n} Buchungen. Damit Reports stimmen, bitte deaktivieren statt löschen.`, + }); + } + await pool.query('UPDATE pulse_users SET manager_id = ? WHERE manager_id = ?', [target.manager_id, target.id]); + await pool.query('DELETE FROM pulse_users WHERE id = ?', [target.id]); + res.json({ ok: true }); + } catch (err) { + next(err); + } +}); + +export default router; diff --git a/server/src/schema.sql b/server/src/schema.sql new file mode 100644 index 0000000..de5d17a --- /dev/null +++ b/server/src/schema.sql @@ -0,0 +1,147 @@ +-- perinco Pulse - Datenbankschema (MariaDB) +-- Wird bei jedem Start ausgefuehrt; alle Statements sind idempotent. + +CREATE TABLE IF NOT EXISTS pulse_users ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + username VARCHAR(80) NOT NULL, + email VARCHAR(190) NULL, + name VARCHAR(160) NOT NULL, + password_hash VARCHAR(100) NULL, + role ENUM('user','lead','management','admin') NOT NULL DEFAULT 'user', + manager_id INT UNSIGNED NULL, + job_title VARCHAR(120) NULL, + is_external TINYINT(1) NOT NULL DEFAULT 0, + company VARCHAR(160) NULL, + source ENUM('local','sso') NOT NULL DEFAULT 'local', + external_id VARCHAR(64) NULL, + weekly_hours DECIMAL(5,2) NULL, + color VARCHAR(7) NULL, + theme VARCHAR(20) NULL, + theme_mode VARCHAR(10) NULL, + is_active TINYINT(1) NOT NULL DEFAULT 1, + last_login_at DATETIME NULL, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (id), + UNIQUE KEY uq_pulse_users_username (username), + UNIQUE KEY uq_pulse_users_email (email), + UNIQUE KEY uq_pulse_users_external (external_id), + KEY idx_pulse_users_manager (manager_id), + CONSTRAINT fk_pulse_users_manager FOREIGN KEY (manager_id) REFERENCES pulse_users (id) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS pulse_customers ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + name VARCHAR(190) NOT NULL, + short_name VARCHAR(16) NOT NULL, + contact_person VARCHAR(160) NULL, + email VARCHAR(190) NULL, + phone VARCHAR(60) NULL, + street VARCHAR(190) NULL, + zip VARCHAR(20) NULL, + city VARCHAR(120) NULL, + country VARCHAR(80) NULL, + notes TEXT NULL, + color VARCHAR(7) NULL, + is_active TINYINT(1) NOT NULL DEFAULT 1, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (id), + UNIQUE KEY uq_pulse_customers_short (short_name) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS pulse_projects ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + customer_id INT UNSIGNED NOT NULL, + code VARCHAR(40) NOT NULL, + seq INT UNSIGNED NOT NULL DEFAULT 0, + name VARCHAR(190) NOT NULL, + type ENUM('billable','non_billable','fixed') NOT NULL DEFAULT 'billable', + billing_unit ENUM('hour','day') NOT NULL DEFAULT 'hour', + start_date DATE NOT NULL, + end_date DATE NULL, + tags TEXT NULL, + notes TEXT NULL, + owner_id INT UNSIGNED NULL, + is_active TINYINT(1) NOT NULL DEFAULT 1, + created_by INT UNSIGNED NULL, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (id), + UNIQUE KEY uq_pulse_projects_code (code), + KEY idx_pulse_projects_customer (customer_id), + CONSTRAINT fk_pulse_projects_customer FOREIGN KEY (customer_id) REFERENCES pulse_customers (id) ON DELETE RESTRICT, + CONSTRAINT fk_pulse_projects_owner FOREIGN KEY (owner_id) REFERENCES pulse_users (id) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- Budgettopf. rate ist immer in der Abrechnungseinheit des Projekts (Stunde +-- oder Tag). budget_hours ist das buchbare Volumen: bei Betrag + Satz +-- abgeleitet, sonst direkt eingegeben. NULL = unbegrenzt. +CREATE TABLE IF NOT EXISTS pulse_budget_pots ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + project_id INT UNSIGNED NOT NULL, + label VARCHAR(160) NOT NULL, + valid_from DATE NOT NULL, + valid_to DATE NOT NULL, + budget_amount DECIMAL(12,2) NULL, + rate DECIMAL(10,2) NULL, + budget_hours DECIMAL(10,2) NULL, + notes VARCHAR(500) NULL, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (id), + KEY idx_pulse_pots_project (project_id, valid_from, valid_to), + CONSTRAINT fk_pulse_pots_project FOREIGN KEY (project_id) REFERENCES pulse_projects (id) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS pulse_tasks ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + project_id INT UNSIGNED NOT NULL, + name VARCHAR(160) NOT NULL, + billable TINYINT(1) NOT NULL DEFAULT 1, + is_active TINYINT(1) NOT NULL DEFAULT 1, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (id), + KEY idx_pulse_tasks_project (project_id), + CONSTRAINT fk_pulse_tasks_project FOREIGN KEY (project_id) REFERENCES pulse_projects (id) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS pulse_project_members ( + project_id INT UNSIGNED NOT NULL, + user_id INT UNSIGNED NOT NULL, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (project_id, user_id), + KEY idx_pulse_members_user (user_id), + CONSTRAINT fk_pulse_members_project FOREIGN KEY (project_id) REFERENCES pulse_projects (id) ON DELETE CASCADE, + CONSTRAINT fk_pulse_members_user FOREIGN KEY (user_id) REFERENCES pulse_users (id) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS pulse_time_entries ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + user_id INT UNSIGNED NOT NULL, + project_id INT UNSIGNED NOT NULL, + task_id INT UNSIGNED NULL, + pot_id INT UNSIGNED NULL, + entry_date DATE NOT NULL, + minutes INT UNSIGNED NOT NULL, + note VARCHAR(1000) NULL, + billable TINYINT(1) NOT NULL DEFAULT 0, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (id), + KEY idx_pulse_entries_user_date (user_id, entry_date), + KEY idx_pulse_entries_project_date (project_id, entry_date), + KEY idx_pulse_entries_pot (pot_id), + KEY idx_pulse_entries_date (entry_date), + CONSTRAINT fk_pulse_entries_user FOREIGN KEY (user_id) REFERENCES pulse_users (id) ON DELETE RESTRICT, + CONSTRAINT fk_pulse_entries_project FOREIGN KEY (project_id) REFERENCES pulse_projects (id) ON DELETE RESTRICT, + CONSTRAINT fk_pulse_entries_task FOREIGN KEY (task_id) REFERENCES pulse_tasks (id) ON DELETE SET NULL, + CONSTRAINT fk_pulse_entries_pot FOREIGN KEY (pot_id) REFERENCES pulse_budget_pots (id) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS pulse_settings ( + k VARCHAR(80) NOT NULL, + v MEDIUMTEXT NULL, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (k) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; diff --git a/server/src/server.js b/server/src/server.js new file mode 100644 index 0000000..e85d872 --- /dev/null +++ b/server/src/server.js @@ -0,0 +1,72 @@ +import 'dotenv/config'; +import express from 'express'; +import cors from 'cors'; +import { initDatabase, pool } from './db.js'; +import { requireAuth, requireRole } from './middleware/auth.js'; +import authRoutes from './routes/auth.js'; +import userRoutes from './routes/users.js'; +import customerRoutes from './routes/customers.js'; +import projectRoutes from './routes/projects.js'; +import entryRoutes from './routes/entries.js'; +import dashboardRoutes from './routes/dashboard.js'; +import reportRoutes from './routes/reports.js'; +import exportRoutes from './routes/exports.js'; +import settingsRoutes from './routes/settings.js'; +import directoryRoutes from './routes/directory.js'; + +const app = express(); +const PORT = Number(process.env.PORT || 5010); +const HOST = process.env.HOST || '127.0.0.1'; + +// Apache steht davor - fuer req.ip (Login-Bremse) die echte Client-IP nehmen. +app.set('trust proxy', 'loopback'); +app.disable('x-powered-by'); +// Logos kommen als Data-URL. +app.use(express.json({ limit: '4mb' })); + +app.use( + cors({ + origin: (process.env.CORS_ORIGINS || 'http://localhost:3110,http://127.0.0.1:3110').split(','), + }) +); + +app.get('/api/health', async (req, res) => { + try { + await pool.query('SELECT 1'); + res.json({ ok: true, db: 'up' }); + } catch { + res.status(503).json({ ok: false, db: 'down' }); + } +}); + +app.use('/api/auth', authRoutes); +app.use('/api/users', requireAuth, userRoutes); +app.use('/api/customers', requireAuth, requireRole('lead'), customerRoutes); +app.use('/api/projects', requireAuth, projectRoutes); +app.use('/api/entries', requireAuth, entryRoutes); +app.use('/api/dashboard', requireAuth, requireRole('lead'), dashboardRoutes); +app.use('/api/reports', requireAuth, requireRole('lead'), reportRoutes); +app.use('/api/exports', requireAuth, exportRoutes); +app.use('/api/settings', requireAuth, settingsRoutes); +app.use('/api/directory', requireAuth, requireRole('management'), directoryRoutes); + +app.use('/api', (req, res) => res.status(404).json({ error: 'Endpunkt nicht gefunden.' })); + +app.use((err, req, res, next) => { + if (res.headersSent) return next(err); + if (err?.type === 'entity.parse.failed') return res.status(400).json({ error: 'Ungültige Anfrage.' }); + if (err?.type === 'entity.too.large') return res.status(413).json({ error: 'Die Anfrage ist zu groß.' }); + if (err?.code === 'ER_ROW_IS_REFERENCED_2') { + return res.status(409).json({ error: 'Der Datensatz wird noch verwendet und kann nicht gelöscht werden.' }); + } + console.error('[Pulse] Unbehandelter Fehler:', err); + res.status(500).json({ error: 'Interner Serverfehler.' }); +}); + +try { + await initDatabase(); + app.listen(PORT, HOST, () => console.log(`[Pulse] Backend läuft auf http://${HOST}:${PORT}`)); +} catch (err) { + console.error('[Pulse] Start fehlgeschlagen:', err); + process.exit(1); +} diff --git a/server/test/sso-filter.test.mjs b/server/test/sso-filter.test.mjs new file mode 100644 index 0000000..7b7c034 --- /dev/null +++ b/server/test/sso-filter.test.mjs @@ -0,0 +1,49 @@ +import { test } from 'node:test'; +import assert from 'node:assert/strict'; +import { isEligible } from '../src/lib/sso.js'; + +const user = (mail, surname, extra = {}) => ({ + mail, + surname, + userType: 'Member', + accountEnabled: true, + assignedLicenses: [{ skuId: 'x' }], + ...extra, +}); + +test('Mitarbeiterkonten beider Domains werden angezeigt', () => { + assert.equal(isEligible(user('sascha.wolf@perinco.de', 'Wolf')), true); + assert.equal(isEligible(user('Sascha.Wolf@PERINCO.de', 'Wolf')), true); + assert.equal(isEligible(user('kai.schwickert@icon-experts.de', 'Schwickert')), true); + assert.equal(isEligible(user('timo.grote-aksu@perinco.de', 'Grote-Aksu')), true); + assert.equal(isEligible(user('niklas.muelln@perinco.de', 'Mülln')), true); + assert.equal(isEligible(user('rene.kleinau@perinco.de', 'Kleinau', { givenName: 'René' })), true); + // Tippfehler im Vornamen (AD: "Chrisitan") schadet nicht. + assert.equal(isEligible(user('christian.brix@perinco.de', 'Brix', { givenName: 'Chrisitan' })), true); + assert.equal(isEligible(user('merle.schwegler@perinco.de', 'Schwegler', { givenName: 'Merle Sophie' })), true); +}); + +test('Admin-, Dienst- und Funktionskonten werden ignoriert', () => { + assert.equal(isEligible(user('adm.sascha.wolf@perinco.de', 'Wolf')), false); + assert.equal(isEligible(user('sa.hrworks@perinco.de', 'Account', { givenName: 'Service' })), false); + assert.equal(isEligible(user('srv.pa@perinco.de', 'Flow', { givenName: 'SRV' })), false); + assert.equal(isEligible(user('srv.flow@perinco.de', 'Flow')), false); + assert.equal(isEligible(user('info@perinco.de', 'Info')), false); + assert.equal(isEligible(user('max.muster@perinco.de', undefined)), false); +}); + +test('Fremde Domains und falsche Formate werden ignoriert', () => { + for (const mail of ['sascha.wolf@perinco.com', 'sascha.wolf@sub.perinco.de', 'sascha.wolf2@perinco.de', 'sascha..wolf@perinco.de', '']) { + assert.equal(isEligible(user(mail, 'Wolf')), false, mail); + } +}); + +test('Freigegebene Postfaecher, Gaeste und Konten ohne Lizenz werden ignoriert', () => { + assert.equal(isEligible(user('philip.daum@perinco.de', 'Daum', { accountEnabled: false })), false); + assert.equal(isEligible(user('lisa.gast@perinco.de', 'Gast', { userType: 'Guest' })), false); + assert.equal(isEligible(user('sven.krueger@perinco.de', 'Krüger', { assignedLicenses: [] })), false); +}); + +test('Ohne mail zaehlt der UPN', () => { + assert.equal(isEligible({ userPrincipalName: 'jonas.korn@perinco.de', surname: 'Korn', accountEnabled: true, assignedLicenses: [{}] }), true); +}); diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..f9ade93 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,84 @@ +import React, { useEffect, useState } from 'react'; +import { Sidebar } from './components/layout/Sidebar'; +import { Header } from './components/layout/Header'; +import { MobileNav } from './components/layout/MobileNav'; +import { LoginScreen } from './components/layout/LoginScreen'; +import { PulseMark } from './components/layout/PulseMark'; +import { AccountDialog } from './components/settings/AccountDialog'; +import { Dashboard } from './components/dashboard/Dashboard'; +import { Booking } from './components/booking/Booking'; +import { Projects } from './components/projects/Projects'; +import { Team } from './components/team/Team'; +import { Customers } from './components/customers/Customers'; +import { Reports } from './components/reports/Reports'; +import { Settings } from './components/settings/Settings'; +import { useAuth } from './lib/auth'; +import { useIsMobile, usePersistentState } from './lib/hooks'; +import { RouterContext, useHashRoute } from './lib/router'; +import { homeFor, VIEW_LABELS, viewsFor, type ViewKey } from './types'; + +const SUBTITLES: Record = { + dashboard: 'Gebuchte Zeiten, Auslastung und letzte Buchungen', + buchung: 'Zeiten erfassen, bearbeiten und exportieren', + projekte: 'Projekte, Budgettöpfe und Tasks', + team: 'Hierarchie, Benutzer und externe Mitarbeiter', + kunden: 'Kundenstamm, Projekte und Umsatz', + reports: 'Auswertungen nach Kunde, Projekt, Task und Mitarbeiter', + einstellungen: 'Arbeitszeit, Export, SSO und Benutzerverwaltung', +}; + +const Splash: React.FC = () => ( +
    + perinco + +

    Lade Pulse…

    +
    +); + +const App: React.FC = () => { + const { user, isLoading } = useAuth(); + const { route, navigate } = useHashRoute(); + const isMobile = useIsMobile(); + const [collapsed, setCollapsed] = usePersistentState('pulse_sidebar_collapsed', false); + const [accountOpen, setAccountOpen] = useState(false); + + const allowed = user ? viewsFor(user.role) : []; + const view: ViewKey | null = user ? (route.view && allowed.includes(route.view) ? route.view : homeFor(user.role)) : null; + + // Unbekannte oder nicht erlaubte Adresse: still auf die Startseite. + useEffect(() => { + if (user && view && route.view !== view) navigate(view, true); + }, [user, view, route.view, navigate]); + + useEffect(() => { + if (view) document.title = `${VIEW_LABELS[view]} · Pulse`; + }, [view]); + + if (isLoading) return ; + if (!user) return ; + if (!view) return ; + + return ( + +
    + navigate(v)} collapsed={collapsed} onAccount={() => setAccountOpen(true)} /> +
    +
    setCollapsed((c) => !c)} isMobile={isMobile} /> +
    + {view === 'dashboard' && } + {view === 'buchung' && } + {view === 'projekte' && } + {view === 'team' && } + {view === 'kunden' && } + {view === 'reports' && } + {view === 'einstellungen' && } +
    +
    + navigate(v)} onAccount={() => setAccountOpen(true)} /> + {accountOpen && setAccountOpen(false)} />} +
    +
    + ); +}; + +export default App; diff --git a/src/components/Toast.tsx b/src/components/Toast.tsx new file mode 100644 index 0000000..33353f7 --- /dev/null +++ b/src/components/Toast.tsx @@ -0,0 +1,78 @@ +import React, { createContext, useCallback, useContext, useMemo, useState } from 'react'; + +type ToastKind = 'success' | 'error' | 'info'; + +interface Toast { + id: number; + message: string; + kind: ToastKind; +} + +interface ToastContextValue { + addToast: (message: string, kind?: ToastKind) => void; +} + +const ToastContext = createContext(null); + +let nextId = 1; + +const STYLES: Record = { + success: 'border-brand-200 bg-brand-50 text-brand-800', + error: 'border-red-200 bg-red-50 text-red-700', + info: 'border-ink-200 bg-surface text-ink-800', +}; + +const ICONS: Record = { + success: 'M5 13l4 4L19 7', + error: 'M12 9v2m0 4h.01M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z', + info: 'M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z', +}; + +export const ToastProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { + const [toasts, setToasts] = useState([]); + + const addToast = useCallback((message: string, kind: ToastKind = 'info') => { + const id = nextId++; + setToasts((prev) => [...prev, { id, message, kind }]); + window.setTimeout(() => { + setToasts((prev) => prev.filter((t) => t.id !== id)); + }, 4500); + }, []); + + const value = useMemo(() => ({ addToast }), [addToast]); + + return ( + + {children} +
    + {toasts.map((toast) => ( +
    + + + +

    {toast.message}

    + +
    + ))} +
    +
    + ); +}; + +export function useToast(): ToastContextValue { + const ctx = useContext(ToastContext); + if (!ctx) throw new Error('useToast muss innerhalb von verwendet werden.'); + return ctx; +} diff --git a/src/components/booking/Booking.tsx b/src/components/booking/Booking.tsx new file mode 100644 index 0000000..4809254 --- /dev/null +++ b/src/components/booking/Booking.tsx @@ -0,0 +1,305 @@ +import React, { useEffect, useMemo, useState } from 'react'; +import { Avatar, Button, Card, ErrorBox, Segmented, Spinner, inputClass } from '../ui/controls'; +import { Icon } from '../ui/Icon'; +import { Donut } from '../ui/charts'; +import { EntryModal } from './EntryModal'; +import { ExportDialog } from './ExportDialog'; +import { WeekView } from './WeekView'; +import { MonthView } from './MonthView'; +import { YearView } from './YearView'; +import { useAuth } from '../../lib/auth'; +import { entriesApi, projectsApi, usersApi } from '../../lib/api'; +import { useIsMobile, useLoader, usePersistentState, useCountUp } from '../../lib/hooks'; +import { + MONTHS, + addDays, + addMonths, + formatDate, + formatDuration, + isoWeek, + mondayOf, + monthEnd, + monthStart, + todayIso, + weekdayIndex, +} from '../../lib/format'; +import { visibleTeam } from '../team/hierarchy'; +import { atLeast, type DirectoryUser, type Project, type TimeEntry } from '../../types'; + +export type BookingMode = 'week' | 'month' | 'year'; + +function rangeFor(mode: BookingMode, anchor: string) { + if (mode === 'week') { + const from = mondayOf(anchor); + return { from, to: addDays(from, 6) }; + } + if (mode === 'month') return { from: monthStart(anchor), to: monthEnd(anchor) }; + return { from: `${anchor.slice(0, 4)}-01-01`, to: `${anchor.slice(0, 4)}-12-31` }; +} + +/** Arbeitstage Mo-Fr im Intervall, fuer das Soll. */ +function workdays(from: string, to: string) { + let count = 0; + for (let d = from; d <= to; d = addDays(d, 1)) if (weekdayIndex(d) < 5) count++; + return count; +} + +export const Booking: React.FC = () => { + const { user, settings } = useAuth(); + const isMobile = useIsMobile(); + const [mode, setMode] = usePersistentState('pulse_booking_mode', 'week'); + const [anchor, setAnchor] = useState(todayIso()); + const [modal, setModal] = useState<{ date: string; entry?: TimeEntry | null } | null>(null); + const [exportOpen, setExportOpen] = useState(false); + const [viewUserId, setViewUserId] = useState(user!.id); + const isLead = atLeast(user, 'lead'); + const readOnly = viewUserId !== user!.id; + + const range = rangeFor(mode, anchor); + const entries = useLoader(() => entriesApi.list(range.from, range.to, viewUserId), [range.from, range.to, viewUserId]); + const projects = useLoader(() => projectsApi.list('mine'), []); + const [team, setTeam] = useState([]); + const [allProjects, setAllProjects] = useState(null); + + useEffect(() => { + if (!isLead) return; + usersApi + .directory() + .then((list) => setTeam(visibleTeam(list, user!))) + .catch(() => undefined); + }, [isLead, user]); + + const list = entries.data ?? []; + const total = list.reduce((s, e) => s + e.minutes, 0); + const billable = list.filter((e) => e.billable).reduce((s, e) => s + e.minutes, 0); + const viewedUser = team.find((t) => t.id === viewUserId); + const weekly = (readOnly ? null : user!.weekly_hours) ?? settings.weekly_hours; + const today = todayIso(); + // Soll bis heute (bzw. ganzer Zeitraum, wenn er vorbei ist). + const targetTo = range.to < today ? range.to : today < range.from ? range.from : today; + const target = today < range.from ? 0 : (weekly / 5) * workdays(range.from, targetTo) * 60; + + const shift = (step: number) => { + if (mode === 'week') setAnchor(addDays(anchor, 7 * step)); + else if (mode === 'month') setAnchor(addMonths(anchor, step)); + else setAnchor(`${Number(anchor.slice(0, 4)) + step}-${anchor.slice(5)}`); + }; + + const label = + mode === 'week' + ? `KW ${isoWeek(range.from)} · ${formatDate(range.from).slice(0, 6)} – ${formatDate(range.to)}` + : mode === 'month' + ? `${MONTHS[Number(anchor.slice(5, 7)) - 1]} ${anchor.slice(0, 4)}` + : anchor.slice(0, 4); + + const openNew = (date?: string) => { + if (readOnly) return; + setModal({ date: date ?? (today >= range.from && today <= range.to ? today : range.from) }); + }; + + const openExport = () => { + if (isLead && !allProjects) projectsApi.list().then(setAllProjects).catch(() => undefined); + setExportOpen(true); + }; + + // Tastenkuerzel: N = neue Buchung, Pfeile = blaettern. + useEffect(() => { + const onKey = (e: KeyboardEvent) => { + if (modal || exportOpen) return; + const target = e.target as HTMLElement; + if (['INPUT', 'TEXTAREA', 'SELECT'].includes(target.tagName)) return; + if (e.key === 'n' || e.key === '+') { + e.preventDefault(); + openNew(); + } + if (e.key === 'ArrowLeft') shift(-1); + if (e.key === 'ArrowRight') shift(1); + }; + window.addEventListener('keydown', onKey); + return () => window.removeEventListener('keydown', onKey); + }); + + const warnings = useMemo( + () => (projects.data ?? []).flatMap((p) => p.pots.filter((pot) => pot.warning && pot.status !== 'expired' && pot.valid_to >= today).map((pot) => ({ project: p, pot }))), + [projects.data, today] + ); + + return ( +
    + {/* Werkzeugleiste */} +
    +
    + + + +
    +

    {label}

    + +
    + + {isLead && team.length > 1 && ( + + )} + + {!isMobile && !readOnly && ( + + )} +
    +
    + + {readOnly && viewedUser && ( +
    + + Du siehst die Zeiten von {viewedUser.name} (nur lesen). + +
    + )} + + {!readOnly && warnings.length > 0 && ( +
    + {warnings.slice(0, 3).map(({ project, pot }) => ( +
    + + + {project.display_name} – {pot.warning} + {pot.remaining_hours != null && ` Noch ${pot.remaining_hours.toLocaleString('de-DE')} h frei.`} + +
    + ))} +
    + )} + + + + {entries.error && } + {entries.loading && !entries.data ? ( + + ) : ( +
    + {mode === 'week' && ( + !readOnly && setModal({ date: entry.entry_date, entry })} /> + )} + {mode === 'month' && ( + { + setAnchor(date); + setMode('week'); + }} + onAdd={openNew} + readOnly={readOnly} + /> + )} + {mode === 'year' && ( + { + setAnchor(`${month}-01`); + setMode('month'); + }} + /> + )} +
    + )} + + {isMobile && !readOnly && ( + + )} + + {modal && projects.data && ( + setModal(null)} onSaved={() => { entries.reload(); projects.reload(); }} /> + )} + {exportOpen && ( + setExportOpen(false)} + /> + )} +
    + ); +}; + +const SummaryStrip: React.FC<{ total: number; billable: number; target: number; weekly: number; mode: BookingMode; count: number }> = ({ + total, + billable, + target, + weekly, + mode, + count, +}) => { + const shown = useCountUp(total); + const percent = target > 0 ? Math.round((total / target) * 100) : 0; + const diff = total - target; + return ( + + +
    +

    + Gebucht {mode === 'week' ? 'diese Woche' : mode === 'month' ? 'im Monat' : 'im Jahr'} +

    +

    + {formatDuration(shown)} + h +

    +
    +
    + + = 0 ? '+' : '−'}${formatDuration(Math.abs(diff))} h`} tone={diff >= 0 ? 'good' : 'bad'} /> + +
    +
    + ); +}; + +const Mini: React.FC<{ label: string; value: string; hint?: string; tone?: 'good' | 'bad' }> = ({ label, value, hint, tone }) => ( +
    +

    {label}

    +

    {value}

    + {hint &&

    {hint}

    } +
    +); diff --git a/src/components/booking/EntryModal.tsx b/src/components/booking/EntryModal.tsx new file mode 100644 index 0000000..c68d357 --- /dev/null +++ b/src/components/booking/EntryModal.tsx @@ -0,0 +1,319 @@ +import React, { useEffect, useMemo, useRef, useState } from 'react'; +import { Modal, ConfirmDialog } from '../ui/Modal'; +import { BudgetBar, Button, Field, inputClass } from '../ui/controls'; +import { Icon } from '../ui/Icon'; +import { useAuth } from '../../lib/auth'; +import { entriesApi } from '../../lib/api'; +import { formatDate, formatDuration, parseDuration } from '../../lib/format'; +import { useToast } from '../Toast'; +import { checkPot } from './budget'; +import { PROJECT_TYPE_LABELS, type Project, type TimeEntry } from '../../types'; + +interface Props { + projects: Project[]; + date: string; + entry?: TimeEntry | null; + onClose: () => void; + onSaved: () => void; +} + +/** Reihenfolge wie in der Auswahlliste: nach Kunde gruppiert, innerhalb in API-Reihenfolge. */ +function inListOrder(projects: Project[]) { + const map = new Map(); + for (const p of projects) map.set(p.customer.name, [...(map.get(p.customer.name) || []), p]); + return [...map.values()].flat(); +} + +/** + * Vorauswahl fuer neue Buchungen: das erste billable Projekt der Liste - + * bevorzugt eines, auf das am Datum auch gebucht werden kann (Topf-Laufzeit, + * Budget). Gibt es kein billable Projekt, bleibt nur ein einziges Projekt + * vorausgewaehlt. + */ +function defaultProject(projects: Project[], date: string, settings: { hours_per_day: number; budget_warn_percent: number; budget_warn_days: number }): number | '' { + const ordered = inListOrder(projects); + const billable = ordered.filter((p) => p.type === 'billable'); + const bookableNow = billable.find( + (p) => checkPot(p, date, 0, settings.hours_per_day, settings.budget_warn_percent, settings.budget_warn_days).ok + ); + if (bookableNow) return bookableNow.id; + if (billable.length) return billable[0].id; + return ordered.length === 1 ? ordered[0].id : ''; +} + +/** Erster aktiver Task in Listenreihenfolge; ohne Tasks bleibt "Ohne Task". */ +function firstTask(project: Project | undefined): number | '' { + return project?.tasks.find((t) => t.is_active)?.id ?? ''; +} + +/** + * Buchungsdialog: oben Projekt, darunter Task, darunter Freitext mit der Zeit + * rechts daneben. Die Zeit versteht "1:23" und "1,5". + */ +export const EntryModal: React.FC = ({ projects, date: initialDate, entry, onClose, onSaved }) => { + const { settings } = useAuth(); + const { addToast } = useToast(); + const bookable = useMemo(() => projects.filter((p) => p.is_active || p.id === entry?.project_id), [projects, entry]); + + const [projectId, setProjectId] = useState(() => entry?.project_id ?? defaultProject(bookable, initialDate, settings)); + // Neue Buchung: erster aktiver Task des vorausgewaehlten Projekts. + const [taskId, setTaskId] = useState(() => + entry ? entry.task_id ?? '' : firstTask(bookable.find((p) => p.id === projectId)) + ); + const [note, setNote] = useState(entry?.note ?? ''); + const [date, setDate] = useState(entry?.entry_date ?? initialDate); + const [timeText, setTimeText] = useState(entry ? formatDuration(entry.minutes) : '0:00'); + const [busy, setBusy] = useState(false); + const [confirmDelete, setConfirmDelete] = useState(false); + const timeRef = useRef(null); + const projectRef = useRef(null); + + /* + * Schnell buchen: ist ein Projekt vorausgewaehlt, liegt der Fokus sofort auf + * der Zeit (Inhalt markiert, also direkt ueberschreiben). Sonst zuerst das + * Projekt waehlen. Kurz verzoegert, damit die Dialog-Animation nicht stoert. + */ + useEffect(() => { + const timer = setTimeout(() => { + if (projectId) { + timeRef.current?.focus(); + timeRef.current?.select(); + } else { + projectRef.current?.focus(); + } + }, 60); + return () => clearTimeout(timer); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const project = bookable.find((p) => p.id === projectId) ?? null; + const tasks = project?.tasks.filter((t) => t.is_active || t.id === entry?.task_id) ?? []; + const minutes = parseDuration(timeText); + const validTime = minutes != null && minutes > 0 && minutes <= 24 * 60; + + // Projekt gewechselt: passt der Task nicht mehr, den ersten Task des neuen Projekts nehmen. + useEffect(() => { + if (taskId && tasks.some((t) => t.id === taskId)) return; + if (!taskId && entry && entry.project_id === projectId) return; // bewusst ohne Task gebucht + setTaskId(firstTask(project ?? undefined)); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [projectId]); + + const task = tasks.find((t) => t.id === taskId); + const billable = project ? project.type !== 'non_billable' && (task ? task.billable : true) : true; + const check = project + ? checkPot( + project, + date, + validTime ? minutes! : 0, + settings.hours_per_day, + settings.budget_warn_percent, + settings.budget_warn_days, + entry ? { potId: entry.pot_id, minutes: project.type === 'billable' && !entry.billable ? 0 : entry.minutes } : null, + billable + ) + : null; + + // Gruppiert nach Kunde fuer die Auswahl. + const groups = useMemo(() => { + const map = new Map(); + for (const p of bookable) { + const key = p.customer.name; + map.set(key, [...(map.get(key) || []), p]); + } + return [...map.entries()]; + }, [bookable]); + + const save = async () => { + if (!project) return addToast('Bitte ein Projekt wählen.', 'error'); + if (!validTime) { + timeRef.current?.focus(); + return addToast('Bitte eine Zeit eingeben, z. B. 1:30 oder 1,5.', 'error'); + } + setBusy(true); + try { + const payload = { project_id: project.id, task_id: taskId || null, entry_date: date, minutes: minutes!, note }; + const result = entry ? await entriesApi.update(entry.id, payload) : await entriesApi.create(payload); + addToast(`${formatDuration(minutes!)} h auf ${project.display_name} ${entry ? 'aktualisiert' : 'gebucht'}.`, 'success'); + if (result.warning) addToast(result.warning, 'info'); + onSaved(); + onClose(); + } catch (err) { + addToast(err instanceof Error ? err.message : 'Speichern fehlgeschlagen.', 'error'); + } finally { + setBusy(false); + } + }; + + const remove = async () => { + if (!entry) return; + setBusy(true); + try { + await entriesApi.remove(entry.id); + addToast('Buchung gelöscht.', 'success'); + onSaved(); + onClose(); + } catch (err) { + addToast(err instanceof Error ? err.message : 'Löschen fehlgeschlagen.', 'error'); + setBusy(false); + } + }; + + const onKeyDown = (event: React.KeyboardEvent) => { + if (event.key === 'Enter' && (event.ctrlKey || event.metaKey)) { + event.preventDefault(); + save(); + } + }; + + const pot = check?.pot; + + return ( + <> + + {entry ? ( + + ) : ( + Enter im Zeitfeld bucht · sonst Strg + Enter + )} +
    + + +
    + + } + > + {bookable.length === 0 ? ( +
    + Dir ist noch kein Projekt zugewiesen. Bitte deinen Vorgesetzten, dich einem Projekt zuzuordnen. +
    + ) : ( +
    + + + + + + + + +
    + +