From 2e1470aa42c579d888e51b826bfbc80e37faff46 Mon Sep 17 00:00:00 2001 From: fretuks Date: Wed, 8 Jul 2026 10:50:33 +0200 Subject: [PATCH] Implement many changes --- .gitignore | 4 +- README.md | 116 +- package-lock.json | 1282 ----------------- package.json | 15 - pom.xml | 107 ++ src/app.js | 45 - src/db.js | 111 -- .../dev/frederik/promotion/ApiException.java | 14 + .../promotion/ApiExceptionMapper.java | 17 + .../dev/frederik/promotion/AuthResource.java | 144 ++ .../frederik/promotion/DatabaseService.java | 197 +++ .../promotion/GenericExceptionMapper.java | 29 + .../frederik/promotion/PromotionResource.java | 407 ++++++ .../frederik/promotion/SecureResource.java | 21 + .../dev/frederik/promotion/Validation.java | 76 + src/main/resources/META-INF/resources/app.js | 64 + .../resources/assets/combat-field.png | Bin 0 -> 71795 bytes .../resources/assets/gacha-banner.png | Bin 0 -> 106018 bytes .../META-INF/resources/assets/main-menu.png | Bin 0 -> 106493 bytes .../META-INF/resources/assets/run-config.png | Bin 0 -> 93520 bytes .../resources/META-INF/resources/index.html | 207 +++ .../resources/META-INF/resources/styles.css | 691 +++++++++ src/main/resources/application.properties | 25 + src/middleware/adminAuth.js | 12 - src/routes/milestones.js | 112 -- src/routes/platforms.js | 23 - src/routes/registrations.js | 54 - src/routes/rewards.js | 128 -- src/routes/users.js | 140 -- src/utils/errors.js | 20 - src/utils/validation.js | 35 - 31 files changed, 2091 insertions(+), 2005 deletions(-) delete mode 100644 package-lock.json delete mode 100644 package.json create mode 100644 pom.xml delete mode 100644 src/app.js delete mode 100644 src/db.js create mode 100644 src/main/java/dev/frederik/promotion/ApiException.java create mode 100644 src/main/java/dev/frederik/promotion/ApiExceptionMapper.java create mode 100644 src/main/java/dev/frederik/promotion/AuthResource.java create mode 100644 src/main/java/dev/frederik/promotion/DatabaseService.java create mode 100644 src/main/java/dev/frederik/promotion/GenericExceptionMapper.java create mode 100644 src/main/java/dev/frederik/promotion/PromotionResource.java create mode 100644 src/main/java/dev/frederik/promotion/SecureResource.java create mode 100644 src/main/java/dev/frederik/promotion/Validation.java create mode 100644 src/main/resources/META-INF/resources/app.js create mode 100644 src/main/resources/META-INF/resources/assets/combat-field.png create mode 100644 src/main/resources/META-INF/resources/assets/gacha-banner.png create mode 100644 src/main/resources/META-INF/resources/assets/main-menu.png create mode 100644 src/main/resources/META-INF/resources/assets/run-config.png create mode 100644 src/main/resources/META-INF/resources/index.html create mode 100644 src/main/resources/META-INF/resources/styles.css create mode 100644 src/main/resources/application.properties delete mode 100644 src/middleware/adminAuth.js delete mode 100644 src/routes/milestones.js delete mode 100644 src/routes/platforms.js delete mode 100644 src/routes/registrations.js delete mode 100644 src/routes/rewards.js delete mode 100644 src/routes/users.js delete mode 100644 src/utils/errors.js delete mode 100644 src/utils/validation.js diff --git a/.gitignore b/.gitignore index 9873d6e..d5a1137 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ node_modules/ database.sqlite .env -npm-debug.log* +target/ +.quarkus/ +.m2/ diff --git a/README.md b/README.md index 0948767..307c067 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,48 @@ -# Linux Distro Roguelite Promotion API +# Linux Distro Roguelite Promotion -REST-API fuer eine Pre-Register-Page eines kostenlosen Games. Spieler registrieren sich mit Benutzername und E-Mail, waehlen Plattformen aus und schalten ueber Community-Meilensteine Belohnungen frei. +Quarkus-Backend und statische Pre-Register-Page fuer ein kostenloses Game. Spieler registrieren sich mit Benutzername und E-Mail, waehlen Plattformen aus und schalten ueber Community-Meilensteine Belohnungen frei. -## Installation +## Voraussetzungen -```bash -npm install -``` +- JDK 21 +- Maven 3.9+ oder Quarkus CLI +- PostgreSQL 16+ oder Docker ## Start +PostgreSQL lokal mit Docker starten: + ```bash -ADMIN_KEY=secret npm start +docker compose up -d postgres +``` + +```bash +ADMIN_USERNAME=admin ADMIN_PASSWORD=secret mvn quarkus:dev ``` Unter PowerShell: ```powershell -$env:ADMIN_KEY = "secret" -npm start +$env:ADMIN_USERNAME = "admin" +$env:ADMIN_PASSWORD = "secret" +$env:DB_URL = "jdbc:postgresql://localhost:5432/linux_distro_roguelite_promotion" +$env:DB_USERNAME = "postgres" +$env:DB_PASSWORD = "postgres" +mvn quarkus:dev ``` Der Server laeuft standardmaessig auf Port `3000`. Mit `PORT` kann der Port ueberschrieben werden. ```powershell $env:PORT = "4000" -$env:ADMIN_KEY = "secret" -npm start +$env:ADMIN_USERNAME = "admin" +$env:ADMIN_PASSWORD = "secret" +mvn quarkus:dev ``` -Beim ersten Start wird `database.sqlite` erstellt und automatisch mit diesen Daten befuellt: +Die Marketingseite ist unter `http://localhost:3000/` erreichbar. Die separate Registrierung liegt unter `http://localhost:3000/register.html`. Beim ersten Start legt das Backend die PostgreSQL-Tabellen automatisch an und befuellt sie mit diesen Daten: -- Plattformen: PC, PlayStation, Xbox, Nintendo Switch, Mobile +- Plattformen: Windows, Linux, Mobile (Android) - Meilensteine: 1,000 und 5,000 Community-Registrierungen - Je eine Beispiel-Belohnung pro Meilenstein @@ -41,14 +52,65 @@ Alle Fehler haben das Format: { "error": "beschreibende Meldung" } ``` +## Build + +```bash +mvn package +java -jar target/quarkus-app/quarkus-run.jar +``` + +## Datenbank + +Die PostgreSQL-Verbindung wird ueber Umgebungsvariablen konfiguriert: + +- `DB_URL`, Standard: `jdbc:postgresql://localhost:5432/linux_distro_roguelite_promotion` +- `DB_USERNAME`, Standard: `postgres` +- `DB_PASSWORD`, Standard: `postgres` + +Das Schema entspricht dem Klassendiagramm: + +- `users`: `id`, `username`, `email`, `newsletter_optin`, `created_at` +- `platforms`: `id`, `name` +- `registrations`: `id`, `user_id`, `platform_id`, `created_at` +- `milestones`: `id`, `title`, `target_count`, `reached` +- `rewards`: `id`, `milestone_id`, `name`, `description`, `image_url` + +Beziehungen: + +- Ein Nutzer hat `0..*` Registrierungen. +- Eine Registrierung gehoert zu genau einem Nutzer und genau einer Plattform. +- Ein Meilenstein hat `0..*` Belohnungen. +- Beim Erstellen einer Registrierung werden erreichte Meilensteine anhand der Gesamtzahl aktualisiert. + ## Endpunkte ### Health Check ```bash -curl http://localhost:3000/ +curl http://localhost:3000/api/health ``` +### Authentifizierung + +`POST /auth/login` prueft registrierte Spieler anhand von Benutzername und E-Mail und erstellt ein signiertes JWT. Fuer Admin-Zugriff kann stattdessen `username` plus `password` aus `ADMIN_USERNAME`/`ADMIN_PASSWORD` verwendet werden. + +```bash +curl -X POST http://localhost:3000/auth/login \ + -H "Content-Type: application/json" \ + -d "{\"username\":\"tuxrunner\",\"email\":\"tux@example.com\"}" +``` + +`GET /auth/me`, `GET /auth/game-details` und geschuetzte Admin-Endpunkte erwarten ein gueltiges Bearer-Token. + +```bash +curl http://localhost:3000/auth/game-details \ + -H "Authorization: Bearer " +``` + +Die separate Login-Seite ist unter `http://localhost:3000/auth.html` erreichbar. Nach der Registrierung kann man sich dort mit Benutzername und E-Mail anmelden. + +Swagger UI ist unter `http://localhost:3000/q/swagger-ui` verfuegbar und fuer Bearer-JWT konfiguriert. + ### Benutzer `POST /users` erstellt einen neuen vorregistrierten Nutzer. @@ -129,29 +191,29 @@ curl -X DELETE http://localhost:3000/registrations/1 curl http://localhost:3000/milestones ``` -`POST /milestones` erstellt einen Meilenstein. Admin-Key erforderlich. +`POST /milestones` erstellt einen Meilenstein. Admin-JWT erforderlich. ```bash curl -X POST http://localhost:3000/milestones \ -H "Content-Type: application/json" \ - -H "X-Admin-Key: secret" \ + -H "Authorization: Bearer " \ -d "{\"title\":\"10,000 community registrations\",\"target_count\":10000}" ``` -`PUT /milestones/{id}` aktualisiert beliebige Teilfelder. Admin-Key erforderlich. +`PUT /milestones/{id}` aktualisiert beliebige Teilfelder. Admin-JWT erforderlich. ```bash curl -X PUT http://localhost:3000/milestones/1 \ -H "Content-Type: application/json" \ - -H "X-Admin-Key: secret" \ + -H "Authorization: Bearer " \ -d "{\"title\":\"1,000 pre-registrations\",\"reached\":false}" ``` -`DELETE /milestones/{id}` loescht einen Meilenstein und dessen Belohnungen. Admin-Key erforderlich. +`DELETE /milestones/{id}` loescht einen Meilenstein und dessen Belohnungen. Admin-JWT erforderlich. ```bash curl -X DELETE http://localhost:3000/milestones/1 \ - -H "X-Admin-Key: secret" + -H "Authorization: Bearer " ``` ### Belohnungen @@ -168,29 +230,29 @@ curl http://localhost:3000/rewards curl http://localhost:3000/milestones/1/rewards ``` -`POST /rewards` erstellt eine Belohnung. Admin-Key erforderlich. +`POST /rewards` erstellt eine Belohnung. Admin-JWT erforderlich. ```bash curl -X POST http://localhost:3000/rewards \ -H "Content-Type: application/json" \ - -H "X-Admin-Key: secret" \ + -H "Authorization: Bearer " \ -d "{\"milestone_id\":1,\"name\":\"Beta Hat\",\"description\":\"Cosmetic launch hat\",\"image_url\":\"https://example.com/rewards/beta-hat.png\"}" ``` -`PUT /rewards/{id}` aktualisiert beliebige Teilfelder. Admin-Key erforderlich. +`PUT /rewards/{id}` aktualisiert beliebige Teilfelder. Admin-JWT erforderlich. ```bash curl -X PUT http://localhost:3000/rewards/1 \ -H "Content-Type: application/json" \ - -H "X-Admin-Key: secret" \ + -H "Authorization: Bearer " \ -d "{\"description\":\"Updated reward description\"}" ``` -`DELETE /rewards/{id}` loescht eine Belohnung. Admin-Key erforderlich. +`DELETE /rewards/{id}` loescht eine Belohnung. Admin-JWT erforderlich. ```bash curl -X DELETE http://localhost:3000/rewards/1 \ - -H "X-Admin-Key: secret" + -H "Authorization: Bearer " ``` ## Statuscodes @@ -198,6 +260,6 @@ curl -X DELETE http://localhost:3000/rewards/1 \ - `200`: Erfolgreiche Abfrage, Aktualisierung oder Loeschung - `201`: Ressource erstellt - `400`: Ungueltige Eingaben oder nicht existierende Fremdschluessel -- `401`: Fehlender oder falscher Admin-Key +- `401`: Fehlendes, ungueltiges oder abgelaufenes JWT bzw. falsche Login-Daten - `404`: Ressource oder Route nicht gefunden - `409`: Konflikt, z. B. doppelte E-Mail, doppelter Benutzername oder doppelte Nutzer-Plattform-Kombination diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 13a8f86..0000000 --- a/package-lock.json +++ /dev/null @@ -1,1282 +0,0 @@ -{ - "name": "linux-distro-roguelite-promotion", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "linux-distro-roguelite-promotion", - "version": "1.0.0", - "dependencies": { - "better-sqlite3": "^12.11.1", - "cors": "^2.8.5", - "express": "^4.21.2" - } - }, - "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/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/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/better-sqlite3": { - "version": "12.11.1", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.11.1.tgz", - "integrity": "sha512-dq9AtApgg5PGFtBzPFSBl3HZQjHok5gaQCM6zh2Yk0aSmDCs1CbnVI8/HgASQkNKsWFpseIO9beg5xxpYhbIfA==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "bindings": "^1.5.0", - "prebuild-install": "^7.1.1" - }, - "engines": { - "node": "20.x || 22.x || 23.x || 24.x || 25.x || 26.x" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "license": "MIT", - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "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/body-parser": { - "version": "1.20.5", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", - "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", - "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.15.1", - "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/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/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-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/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "license": "ISC" - }, - "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/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/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/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "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/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/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/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-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/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "license": "(MIT OR WTFPL)", - "engines": { - "node": ">=6" - } - }, - "node_modules/express": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz", - "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==", - "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.12", - "proxy-addr": "~2.0.7", - "qs": "~6.15.1", - "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/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "license": "MIT" - }, - "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/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/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/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/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "license": "MIT" - }, - "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/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/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/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/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" - }, - "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/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/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "license": "MIT" - }, - "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/napi-build-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", - "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", - "license": "MIT" - }, - "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/node-abi": { - "version": "3.94.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.94.0.tgz", - "integrity": "sha512-W5ZNO5KRPB5TkYmGVD9F6YqhsglXJzE6etpbmT+f6EQElhiX/UTG551cnsRGvLG3fyZEg9HwaDmNmj5nwJ4z9g==", - "license": "MIT", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "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/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/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-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/prebuild-install": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", - "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", - "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", - "license": "MIT", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^2.0.0", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/pump": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", - "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/qs": { - "version": "6.15.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", - "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", - "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/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "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/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/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/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/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/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "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/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "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": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "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/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/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tar-fs": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.5.tgz", - "integrity": "sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw==", - "license": "MIT", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "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/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/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "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/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/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/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/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" - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 6bdae19..0000000 --- a/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "linux-distro-roguelite-promotion", - "version": "1.0.0", - "description": "REST API for a free game pre-register page.", - "main": "src/app.js", - "scripts": { - "start": "node src/app.js", - "dev": "node --watch src/app.js" - }, - "dependencies": { - "better-sqlite3": "^12.11.1", - "cors": "^2.8.5", - "express": "^4.21.2" - } -} diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..8e4663b --- /dev/null +++ b/pom.xml @@ -0,0 +1,107 @@ + + + 4.0.0 + + dev.frederik + linux-distro-roguelite-promotion + 1.0.0-SNAPSHOT + + + 3.14.0 + 21 + UTF-8 + UTF-8 + quarkus-bom + io.quarkus.platform + 3.37.1 + true + 3.5.3 + + + + + + ${quarkus.platform.group-id} + ${quarkus.platform.artifact-id} + ${quarkus.platform.version} + pom + import + + + + + + + io.quarkus + quarkus-rest-jackson + + + io.quarkus + quarkus-agroal + + + io.quarkus + quarkus-jdbc-postgresql + + + io.quarkus + quarkus-smallrye-jwt + + + io.quarkus + quarkus-smallrye-jwt-build + + + io.quarkus + quarkus-smallrye-openapi + + + io.quarkus + quarkus-junit + test + + + io.rest-assured + rest-assured + test + + + + + + + ${quarkus.platform.group-id} + quarkus-maven-plugin + ${quarkus.platform.version} + true + + + + build + generate-code + generate-code-tests + + + + + + maven-compiler-plugin + ${compiler-plugin.version} + + true + + + + maven-surefire-plugin + ${surefire-plugin.version} + + + org.jboss.logmanager.LogManager + + + + + + diff --git a/src/app.js b/src/app.js deleted file mode 100644 index 7672440..0000000 --- a/src/app.js +++ /dev/null @@ -1,45 +0,0 @@ -const express = require("express"); -const cors = require("cors"); -const { initializeDatabase } = require("./db"); - -const usersRouter = require("./routes/users"); -const platformsRouter = require("./routes/platforms"); -const registrationsRouter = require("./routes/registrations"); -const milestonesRouter = require("./routes/milestones"); -const rewardsRouter = require("./routes/rewards"); - -initializeDatabase(); - -const app = express(); - -app.use(cors()); -app.use(express.json()); - -app.get("/", (req, res) => { - res.json({ message: "Pre-registration API is running." }); -}); - -app.use("/users", usersRouter); -app.use("/platforms", platformsRouter); -app.use("/registrations", registrationsRouter); -app.use("/milestones", milestonesRouter); -app.use("/rewards", rewardsRouter); - -app.use((req, res) => { - res.status(404).json({ error: "Route not found." }); -}); - -app.use((err, req, res, next) => { - if (err instanceof SyntaxError && err.status === 400 && "body" in err) { - return res.status(400).json({ error: "Invalid JSON body." }); - } - - console.error(err); - res.status(500).json({ error: "Internal server error." }); -}); - -const port = process.env.PORT || 3000; - -app.listen(port, () => { - console.log(`Pre-registration API listening on port ${port}`); -}); diff --git a/src/db.js b/src/db.js deleted file mode 100644 index 1211992..0000000 --- a/src/db.js +++ /dev/null @@ -1,111 +0,0 @@ -const path = require("path"); -const Database = require("better-sqlite3"); - -const dbPath = path.join(__dirname, "..", "database.sqlite"); -const db = new Database(dbPath); - -db.pragma("foreign_keys = ON"); - -function boolToInt(value) { - return value ? 1 : 0; -} - -function createSchema() { - db.exec(` - CREATE TABLE IF NOT EXISTS users ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - username TEXT UNIQUE NOT NULL, - email TEXT UNIQUE NOT NULL, - newsletter_optin INTEGER NOT NULL DEFAULT 0, - created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP - ); - - CREATE TABLE IF NOT EXISTS platforms ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - name TEXT UNIQUE NOT NULL - ); - - CREATE TABLE IF NOT EXISTS registrations ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - user_id INTEGER NOT NULL, - platform_id INTEGER NOT NULL, - created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, - FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, - FOREIGN KEY (platform_id) REFERENCES platforms(id), - UNIQUE (user_id, platform_id) - ); - - CREATE TABLE IF NOT EXISTS milestones ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - title TEXT NOT NULL, - target_count INTEGER NOT NULL, - reached INTEGER NOT NULL DEFAULT 0 - ); - - CREATE TABLE IF NOT EXISTS rewards ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - milestone_id INTEGER NOT NULL, - name TEXT NOT NULL, - description TEXT, - image_url TEXT, - FOREIGN KEY (milestone_id) REFERENCES milestones(id) ON DELETE CASCADE - ); - `); -} - -function seedDatabase() { - const platforms = ["PC", "PlayStation", "Xbox", "Nintendo Switch", "Mobile"]; - const insertPlatform = db.prepare("INSERT OR IGNORE INTO platforms (name) VALUES (?)"); - platforms.forEach((platform) => insertPlatform.run(platform)); - - // Seed example milestones only when the table is empty to avoid duplicate demo data. - const milestoneCount = db.prepare("SELECT COUNT(*) AS count FROM milestones").get().count; - if (milestoneCount === 0) { - const insertMilestone = db.prepare( - "INSERT INTO milestones (title, target_count, reached) VALUES (?, ?, 0)" - ); - const insertReward = db.prepare( - "INSERT INTO rewards (milestone_id, name, description, image_url) VALUES (?, ?, ?, ?)" - ); - - const first = insertMilestone.run("1,000 community registrations", 1000); - insertReward.run( - first.lastInsertRowid, - "Founder Banner", - "Exclusive in-game profile banner for early supporters.", - "https://example.com/rewards/founder-banner.png" - ); - - const second = insertMilestone.run("5,000 community registrations", 5000); - insertReward.run( - second.lastInsertRowid, - "Launch Loot Crate", - "Free cosmetic crate unlocked for all players at launch.", - "https://example.com/rewards/launch-loot-crate.png" - ); - } -} - -function initializeDatabase() { - createSchema(); - seedDatabase(); -} - -function getRegistrationCount() { - return db.prepare("SELECT COUNT(*) AS count FROM registrations").get().count; -} - -function updateReachedMilestones() { - const currentCount = getRegistrationCount(); - db.prepare( - "UPDATE milestones SET reached = 1 WHERE reached = 0 AND target_count <= ?" - ).run(currentCount); -} - -module.exports = { - db, - initializeDatabase, - getRegistrationCount, - updateReachedMilestones, - boolToInt -}; diff --git a/src/main/java/dev/frederik/promotion/ApiException.java b/src/main/java/dev/frederik/promotion/ApiException.java new file mode 100644 index 0000000..326a7be --- /dev/null +++ b/src/main/java/dev/frederik/promotion/ApiException.java @@ -0,0 +1,14 @@ +package dev.frederik.promotion; + +public class ApiException extends RuntimeException { + private final int status; + + public ApiException(int status, String message) { + super(message); + this.status = status; + } + + public int status() { + return status; + } +} diff --git a/src/main/java/dev/frederik/promotion/ApiExceptionMapper.java b/src/main/java/dev/frederik/promotion/ApiExceptionMapper.java new file mode 100644 index 0000000..97419fd --- /dev/null +++ b/src/main/java/dev/frederik/promotion/ApiExceptionMapper.java @@ -0,0 +1,17 @@ +package dev.frederik.promotion; + +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.ext.ExceptionMapper; +import jakarta.ws.rs.ext.Provider; + +import java.util.Map; + +@Provider +public class ApiExceptionMapper implements ExceptionMapper { + @Override + public Response toResponse(ApiException exception) { + return Response.status(exception.status()) + .entity(Map.of("error", exception.getMessage())) + .build(); + } +} diff --git a/src/main/java/dev/frederik/promotion/AuthResource.java b/src/main/java/dev/frederik/promotion/AuthResource.java new file mode 100644 index 0000000..77c77ed --- /dev/null +++ b/src/main/java/dev/frederik/promotion/AuthResource.java @@ -0,0 +1,144 @@ +package dev.frederik.promotion; + +import com.fasterxml.jackson.databind.JsonNode; +import io.smallrye.jwt.build.Jwt; +import jakarta.annotation.security.RolesAllowed; +import jakarta.annotation.security.PermitAll; +import jakarta.inject.Inject; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import org.eclipse.microprofile.config.inject.ConfigProperty; +import org.eclipse.microprofile.jwt.JsonWebToken; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.time.Duration; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; + +@Path("/auth") +@Consumes(MediaType.APPLICATION_JSON) +@Produces(MediaType.APPLICATION_JSON) +public class AuthResource { + private static final String ISSUER = "https://kernel-panic.local/issuer"; + + private final DatabaseService database; + private final String adminUsername; + private final String adminPassword; + private final JsonWebToken jwt; + + @Inject + public AuthResource( + DatabaseService database, + @ConfigProperty(name = "auth.admin.username") String adminUsername, + @ConfigProperty(name = "auth.admin.password") String adminPassword, + JsonWebToken jwt) { + this.database = database; + this.adminUsername = adminUsername; + this.adminPassword = adminPassword; + this.jwt = jwt; + } + + @POST + @PermitAll + @Path("/login") + public Response login(JsonNode body) { + String username = readText(body, "username", "username is required."); + String password = readOptionalText(body, "password"); + if (password != null && secureEquals(username, adminUsername) && secureEquals(password, adminPassword)) { + return Response.ok(tokenResponse(username, Set.of("User", "Admin"), null)).build(); + } + + String email = readText(body, "email", "email is required."); + Map user = database.findOne( + "SELECT id, username, email FROM users WHERE username = ? AND email = ?", + username, + email); + if (user == null) { + throw new ApiException(401, "Invalid username or email."); + } + + return Response.ok(tokenResponse(username, Set.of("User"), ((Number) user.get("id")).longValue())).build(); + } + + @GET + @Path("/me") + @RolesAllowed({"User", "Admin"}) + public Map me() { + Map response = new LinkedHashMap<>(); + response.put("username", jwt.getName()); + response.put("groups", jwt.getGroups()); + response.put("user_id", jwt.getClaim("user_id")); + return response; + } + + @GET + @Path("/game-details") + @RolesAllowed({"User", "Admin"}) + public Map gameDetails() { + Map response = new LinkedHashMap<>(); + response.put("title", "Authenticated build notes"); + response.put("unlocked_after_registration", true); + response.put("available_starting_distros", Set.of("Ubuntu", "Fedora", "Mint")); + response.put("starting_languages", Set.of("Python", "JavaScript", "Rust", "Java")); + response.put("hidden_enemies", Set.of("Telemetry Collector", "DRM Guardian", "Blue Screen", "Walled Garden")); + response.put("economy", Map.of( + "Bandwidth", "earned through play and used for pulls", + "Entropy", "banner pull currency", + "Bits", "run-only shop currency", + "Compute Credits", "premium currency for pulls and cosmetics")); + response.put("developer_note", "Registered players can preview this intel before launch."); + return response; + } + + private Map tokenResponse(String username, Set groups, Long userId) { + var builder = Jwt.upn(username) + .issuer(ISSUER) + .groups(groups) + .expiresIn(Duration.ofHours(2)); + if (userId != null) { + builder.claim("user_id", userId); + } + String token = builder.sign(); + + Map response = new LinkedHashMap<>(); + response.put("token_type", "Bearer"); + response.put("access_token", token); + response.put("expires_in", 7200); + response.put("groups", groups); + response.put("user_id", userId); + return response; + } + + private String readText(JsonNode body, String field, String message) { + if (body == null || body.isNull() || !body.has(field) || body.get(field).isNull()) { + throw new ApiException(400, message); + } + if (!body.get(field).isTextual() || body.get(field).asText().isBlank()) { + throw new ApiException(400, message); + } + return body.get(field).asText().trim(); + } + + private String readOptionalText(JsonNode body, String field) { + if (body == null || body.isNull() || !body.has(field) || body.get(field).isNull()) { + return null; + } + if (!body.get(field).isTextual() || body.get(field).asText().isBlank()) { + return null; + } + return body.get(field).asText().trim(); + } + + private boolean secureEquals(String first, String second) { + return MessageDigest.isEqual( + first.getBytes(StandardCharsets.UTF_8), + second.getBytes(StandardCharsets.UTF_8)); + } +} diff --git a/src/main/java/dev/frederik/promotion/DatabaseService.java b/src/main/java/dev/frederik/promotion/DatabaseService.java new file mode 100644 index 0000000..a576bb0 --- /dev/null +++ b/src/main/java/dev/frederik/promotion/DatabaseService.java @@ -0,0 +1,197 @@ +package dev.frederik.promotion; + +import io.quarkus.runtime.StartupEvent; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.event.Observes; +import jakarta.inject.Inject; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +@ApplicationScoped +public class DatabaseService { + private final DataSource dataSource; + + @Inject + public DatabaseService(DataSource dataSource) { + this.dataSource = dataSource; + } + + void initialize(@Observes StartupEvent event) { + try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + statement.execute(""" + CREATE TABLE IF NOT EXISTS users ( + id BIGSERIAL PRIMARY KEY, + username VARCHAR(120) UNIQUE NOT NULL, + email VARCHAR(255) UNIQUE NOT NULL, + newsletter_optin BOOLEAN NOT NULL DEFAULT FALSE, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP + ) + """); + statement.execute(""" + CREATE TABLE IF NOT EXISTS platforms ( + id BIGSERIAL PRIMARY KEY, + name VARCHAR(80) UNIQUE NOT NULL + ) + """); + statement.execute(""" + CREATE TABLE IF NOT EXISTS registrations ( + id BIGSERIAL PRIMARY KEY, + user_id BIGINT NOT NULL, + platform_id BIGINT NOT NULL, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, + FOREIGN KEY (platform_id) REFERENCES platforms(id) ON DELETE RESTRICT, + UNIQUE (user_id, platform_id) + ) + """); + statement.execute(""" + CREATE TABLE IF NOT EXISTS milestones ( + id BIGSERIAL PRIMARY KEY, + title VARCHAR(180) NOT NULL, + target_count INTEGER NOT NULL CHECK (target_count > 0), + reached BOOLEAN NOT NULL DEFAULT FALSE + ) + """); + statement.execute(""" + CREATE TABLE IF NOT EXISTS rewards ( + id BIGSERIAL PRIMARY KEY, + milestone_id BIGINT NOT NULL, + name VARCHAR(160) NOT NULL, + description TEXT, + image_url VARCHAR(500), + FOREIGN KEY (milestone_id) REFERENCES milestones(id) ON DELETE CASCADE + ) + """); + seed(connection); + } catch (SQLException exception) { + throw new IllegalStateException("Could not initialize database.", exception); + } + } + + private void seed(Connection connection) throws SQLException { + List platforms = List.of("Windows", "Linux", "Mobile (Android)"); + try (PreparedStatement insert = connection.prepareStatement("INSERT INTO platforms (name) VALUES (?) ON CONFLICT (name) DO NOTHING")) { + for (String platform : platforms) { + insert.setString(1, platform); + insert.executeUpdate(); + } + } + + if (count("SELECT COUNT(*) FROM milestones") > 0) { + return; + } + + long firstId = insertAndReturnId(connection, + "INSERT INTO milestones (title, target_count, reached) VALUES (?, ?, FALSE)", + "1,000 community registrations", 1000); + execute(connection, + "INSERT INTO rewards (milestone_id, name, description, image_url) VALUES (?, ?, ?, ?)", + firstId, + "Founder Banner", + "Exclusive in-game profile banner for early supporters.", + "https://example.com/rewards/founder-banner.png"); + + long secondId = insertAndReturnId(connection, + "INSERT INTO milestones (title, target_count, reached) VALUES (?, ?, FALSE)", + "5,000 community registrations", 5000); + execute(connection, + "INSERT INTO rewards (milestone_id, name, description, image_url) VALUES (?, ?, ?, ?)", + secondId, + "Launch Loot Crate", + "Free cosmetic crate unlocked for all players at launch.", + "https://example.com/rewards/launch-loot-crate.png"); + } + + public List> query(String sql, Object... params) { + try (Connection connection = dataSource.getConnection(); PreparedStatement statement = prepare(connection, sql, params)) { + try (ResultSet resultSet = statement.executeQuery()) { + List> rows = new ArrayList<>(); + int columnCount = resultSet.getMetaData().getColumnCount(); + while (resultSet.next()) { + Map row = new LinkedHashMap<>(); + for (int i = 1; i <= columnCount; i++) { + row.put(resultSet.getMetaData().getColumnLabel(i), resultSet.getObject(i)); + } + rows.add(row); + } + return rows; + } + } catch (SQLException exception) { + throw new IllegalStateException(exception); + } + } + + public Map findOne(String sql, Object... params) { + List> rows = query(sql, params); + return rows.isEmpty() ? null : rows.get(0); + } + + public long count(String sql, Object... params) { + Map row = findOne(sql, params); + return ((Number) row.values().iterator().next()).longValue(); + } + + public long insertAndReturnId(String sql, Object... params) { + try (Connection connection = dataSource.getConnection()) { + return insertAndReturnId(connection, sql, params); + } catch (SQLException exception) { + throw mapDatabaseException(exception, "Resource conflict."); + } + } + + public int execute(String sql, Object... params) { + try (Connection connection = dataSource.getConnection()) { + return execute(connection, sql, params); + } catch (SQLException exception) { + throw mapDatabaseException(exception, "Resource conflict."); + } + } + + public long registrationCount() { + return count("SELECT COUNT(*) FROM registrations"); + } + + public void updateReachedMilestones() { + execute("UPDATE milestones SET reached = TRUE WHERE reached = FALSE AND target_count <= ?", registrationCount()); + } + + public RuntimeException mapDatabaseException(SQLException exception, String conflictMessage) { + if ("23505".equals(exception.getSQLState())) { + return new ApiException(409, conflictMessage); + } + if ("23503".equals(exception.getSQLState())) { + return new ApiException(400, "Referenced resource does not exist."); + } + return new IllegalStateException(exception); + } + + private static long insertAndReturnId(Connection connection, String sql, Object... params) throws SQLException { + try (PreparedStatement statement = prepare(connection, sql + " RETURNING id", params); + ResultSet resultSet = statement.executeQuery()) { + return resultSet.next() ? resultSet.getLong(1) : 0; + } + } + + private static int execute(Connection connection, String sql, Object... params) throws SQLException { + try (PreparedStatement statement = prepare(connection, sql, params)) { + return statement.executeUpdate(); + } + } + + private static PreparedStatement prepare(Connection connection, String sql, Object... params) throws SQLException { + PreparedStatement statement = connection.prepareStatement(sql); + for (int i = 0; i < params.length; i++) { + statement.setObject(i + 1, params[i]); + } + return statement; + } +} diff --git a/src/main/java/dev/frederik/promotion/GenericExceptionMapper.java b/src/main/java/dev/frederik/promotion/GenericExceptionMapper.java new file mode 100644 index 0000000..a9583b9 --- /dev/null +++ b/src/main/java/dev/frederik/promotion/GenericExceptionMapper.java @@ -0,0 +1,29 @@ +package dev.frederik.promotion; + +import com.fasterxml.jackson.core.JsonProcessingException; +import jakarta.ws.rs.ClientErrorException; +import jakarta.ws.rs.NotFoundException; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.ext.ExceptionMapper; +import jakarta.ws.rs.ext.Provider; + +import java.util.Map; + +@Provider +public class GenericExceptionMapper implements ExceptionMapper { + @Override + public Response toResponse(Throwable exception) { + if (exception instanceof NotFoundException) { + return Response.status(404).entity(Map.of("error", "Route not found.")).build(); + } + if (exception instanceof ClientErrorException clientErrorException) { + return Response.status(clientErrorException.getResponse().getStatus()) + .entity(Map.of("error", clientErrorException.getMessage())) + .build(); + } + if (exception instanceof JsonProcessingException) { + return Response.status(400).entity(Map.of("error", "Invalid JSON body.")).build(); + } + return Response.status(500).entity(Map.of("error", "Internal server error.")).build(); + } +} diff --git a/src/main/java/dev/frederik/promotion/PromotionResource.java b/src/main/java/dev/frederik/promotion/PromotionResource.java new file mode 100644 index 0000000..d3736fb --- /dev/null +++ b/src/main/java/dev/frederik/promotion/PromotionResource.java @@ -0,0 +1,407 @@ +package dev.frederik.promotion; + +import com.fasterxml.jackson.databind.JsonNode; +import jakarta.annotation.security.RolesAllowed; +import jakarta.inject.Inject; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +@Path("/") +@Consumes(MediaType.APPLICATION_JSON) +@Produces(MediaType.APPLICATION_JSON) +public class PromotionResource { + private final DatabaseService database; + + @Inject + public PromotionResource(DatabaseService database) { + this.database = database; + } + + @GET + @Path("/api/health") + public Map health() { + return Map.of("message", "Pre-registration API is running."); + } + + @POST + @Path("/users") + public Response createUser(JsonNode body) { + String username = Validation.requiredText(body, "username", "username is required."); + String email = Validation.requiredText(body, "email", "A valid email is required."); + Validation.requireEmail(email); + boolean newsletterOptin = Validation.optionalBoolean(body, "newsletter_optin", false); + + long id; + try { + id = database.insertAndReturnId( + "INSERT INTO users (username, email, newsletter_optin) VALUES (?, ?, ?)", + username, email, newsletterOptin); + } catch (RuntimeException exception) { + throw mapConflict(exception, "username or email already exists."); + } + return Response.status(Response.Status.CREATED).entity(userById(id)).build(); + } + + @GET + @Path("/users/{id}") + public Map getUser(@PathParam("id") String rawId) { + long id = Validation.parseId(rawId, "Invalid user id."); + Map user = userByIdOrNull(id); + if (user == null) { + throw new ApiException(404, "User not found."); + } + return user; + } + + @PUT + @Path("/users/{id}") + public Map updateUser(@PathParam("id") String rawId, JsonNode body) { + long id = Validation.parseId(rawId, "Invalid user id."); + requireExists("SELECT id FROM users WHERE id = ?", id, "User not found."); + + List updates = new ArrayList<>(); + List params = new ArrayList<>(); + if (body.has("username")) { + String username = Validation.requiredText(body, "username", "username must not be empty."); + updates.add("username = ?"); + params.add(username); + } + if (body.has("email")) { + String email = Validation.requiredText(body, "email", "A valid email is required."); + Validation.requireEmail(email); + updates.add("email = ?"); + params.add(email); + } + if (body.has("newsletter_optin")) { + updates.add("newsletter_optin = ?"); + params.add(Validation.optionalBoolean(body, "newsletter_optin", false)); + } + requireUpdates(updates); + params.add(id); + + try { + database.execute("UPDATE users SET " + String.join(", ", updates) + " WHERE id = ?", params.toArray()); + } catch (RuntimeException exception) { + throw mapConflict(exception, "username or email already exists."); + } + return userById(id); + } + + @DELETE + @Path("/users/{id}") + public Map deleteUser(@PathParam("id") String rawId) { + long id = Validation.parseId(rawId, "Invalid user id."); + if (database.execute("DELETE FROM users WHERE id = ?", id) == 0) { + throw new ApiException(404, "User not found."); + } + return Map.of("message", "User deleted."); + } + + @GET + @Path("/users/{id}/registrations") + public List> userRegistrations(@PathParam("id") String rawId) { + long id = Validation.parseId(rawId, "Invalid user id."); + requireExists("SELECT id FROM users WHERE id = ?", id, "User not found."); + return database.query(""" + SELECT registrations.id, registrations.user_id, registrations.platform_id, + platforms.name AS platform_name, registrations.created_at + FROM registrations + JOIN platforms ON platforms.id = registrations.platform_id + WHERE registrations.user_id = ? + ORDER BY registrations.id + """, id); + } + + @GET + @Path("/platforms") + public List> platforms() { + return database.query(""" + SELECT * + FROM platforms + WHERE name IN ('Windows', 'Linux', 'Mobile (Android)') + ORDER BY CASE name + WHEN 'Windows' THEN 1 + WHEN 'Linux' THEN 2 + WHEN 'Mobile (Android)' THEN 3 + ELSE 4 + END + """); + } + + @GET + @Path("/platforms/{id}") + public Map platform(@PathParam("id") String rawId) { + long id = Validation.parseId(rawId, "Invalid platform id."); + Map platform = database.findOne("SELECT * FROM platforms WHERE id = ?", id); + if (platform == null) { + throw new ApiException(404, "Platform not found."); + } + return platform; + } + + @POST + @Path("/registrations") + public Response createRegistration(JsonNode body) { + long userId = Validation.requiredPositiveLong(body, "user_id", "user_id is required."); + long platformId = Validation.requiredPositiveLong(body, "platform_id", "platform_id is required."); + requireExists("SELECT id FROM users WHERE id = ?", userId, "User does not exist.", 400); + requireExists("SELECT id FROM platforms WHERE id = ?", platformId, "Platform does not exist.", 400); + + long id; + try { + id = database.insertAndReturnId( + "INSERT INTO registrations (user_id, platform_id) VALUES (?, ?)", + userId, platformId); + } catch (RuntimeException exception) { + throw mapConflict(exception, "User is already registered for this platform."); + } + + database.updateReachedMilestones(); + return Response.status(Response.Status.CREATED) + .entity(database.findOne("SELECT * FROM registrations WHERE id = ?", id)) + .build(); + } + + @GET + @Path("/registrations/count") + public Map registrationCount() { + return Map.of("count", database.registrationCount()); + } + + @DELETE + @Path("/registrations/{id}") + public Map deleteRegistration(@PathParam("id") String rawId) { + long id = Validation.parseId(rawId, "Invalid registration id."); + if (database.execute("DELETE FROM registrations WHERE id = ?", id) == 0) { + throw new ApiException(404, "Registration not found."); + } + return Map.of("message", "Registration deleted."); + } + + @GET + @Path("/milestones") + public List> milestones() { + long count = database.registrationCount(); + return database.query("SELECT * FROM milestones ORDER BY target_count, id").stream() + .map(row -> milestoneResponse(row, count)) + .toList(); + } + + @GET + @Path("/milestones/{id}/rewards") + public List> milestoneRewards(@PathParam("id") String rawId) { + long id = Validation.parseId(rawId, "Invalid milestone id."); + requireExists("SELECT id FROM milestones WHERE id = ?", id, "Milestone not found."); + return database.query("SELECT * FROM rewards WHERE milestone_id = ? ORDER BY id", id); + } + + @POST + @Path("/milestones") + @RolesAllowed("Admin") + public Response createMilestone(JsonNode body) { + String title = Validation.requiredText(body, "title", "title is required."); + long targetCount = Validation.requiredPositiveLong(body, "target_count", "target_count must be a positive integer."); + long currentCount = database.registrationCount(); + long id = database.insertAndReturnId( + "INSERT INTO milestones (title, target_count, reached) VALUES (?, ?, ?)", + title, targetCount, currentCount >= targetCount); + return Response.status(Response.Status.CREATED) + .entity(milestoneResponse(database.findOne("SELECT * FROM milestones WHERE id = ?", id), currentCount)) + .build(); + } + + @PUT + @Path("/milestones/{id}") + @RolesAllowed("Admin") + public Map updateMilestone( + @PathParam("id") String rawId, + JsonNode body) { + long id = Validation.parseId(rawId, "Invalid milestone id."); + requireExists("SELECT id FROM milestones WHERE id = ?", id, "Milestone not found."); + + List updates = new ArrayList<>(); + List params = new ArrayList<>(); + if (body.has("title")) { + updates.add("title = ?"); + params.add(Validation.requiredText(body, "title", "title must not be empty.")); + } + if (body.has("target_count")) { + updates.add("target_count = ?"); + params.add(Validation.requiredPositiveLong(body, "target_count", "target_count must be a positive integer.")); + } + if (body.has("reached")) { + updates.add("reached = ?"); + params.add(Validation.optionalBoolean(body, "reached", false)); + } + requireUpdates(updates); + params.add(id); + database.execute("UPDATE milestones SET " + String.join(", ", updates) + " WHERE id = ?", params.toArray()); + + long currentCount = database.registrationCount(); + return milestoneResponse(database.findOne("SELECT * FROM milestones WHERE id = ?", id), currentCount); + } + + @DELETE + @Path("/milestones/{id}") + @RolesAllowed("Admin") + public Map deleteMilestone( + @PathParam("id") String rawId) { + long id = Validation.parseId(rawId, "Invalid milestone id."); + if (database.execute("DELETE FROM milestones WHERE id = ?", id) == 0) { + throw new ApiException(404, "Milestone not found."); + } + return Map.of("message", "Milestone deleted."); + } + + @GET + @Path("/rewards") + public List> rewards() { + return database.query("SELECT * FROM rewards ORDER BY id"); + } + + @GET + @Path("/rewards/milestone/{milestoneId}") + public List> rewardsByMilestone(@PathParam("milestoneId") String rawId) { + long milestoneId = Validation.parseId(rawId, "Invalid milestone id."); + requireExists("SELECT id FROM milestones WHERE id = ?", milestoneId, "Milestone not found."); + return database.query("SELECT * FROM rewards WHERE milestone_id = ? ORDER BY id", milestoneId); + } + + @POST + @Path("/rewards") + @RolesAllowed("Admin") + public Response createReward(JsonNode body) { + String name = Validation.requiredText(body, "name", "name is required."); + String description = Validation.optionalText(body, "description"); + String imageUrl = Validation.optionalText(body, "image_url"); + long milestoneId = Validation.requiredPositiveLong(body, "milestone_id", "milestone_id must be a positive integer."); + requireExists("SELECT id FROM milestones WHERE id = ?", milestoneId, "Milestone does not exist.", 400); + + long id; + try { + id = database.insertAndReturnId( + "INSERT INTO rewards (milestone_id, name, description, image_url) VALUES (?, ?, ?, ?)", + milestoneId, name, description, imageUrl); + } catch (RuntimeException exception) { + throw mapConflict(exception, "Reward conflict."); + } + return Response.status(Response.Status.CREATED) + .entity(database.findOne("SELECT * FROM rewards WHERE id = ?", id)) + .build(); + } + + @PUT + @Path("/rewards/{id}") + @RolesAllowed("Admin") + public Map updateReward( + @PathParam("id") String rawId, + JsonNode body) { + long id = Validation.parseId(rawId, "Invalid reward id."); + requireExists("SELECT id FROM rewards WHERE id = ?", id, "Reward not found."); + + List updates = new ArrayList<>(); + List params = new ArrayList<>(); + if (body.has("name")) { + updates.add("name = ?"); + params.add(Validation.requiredText(body, "name", "name must not be empty.")); + } + if (body.has("description")) { + updates.add("description = ?"); + params.add(Validation.optionalText(body, "description")); + } + if (body.has("image_url")) { + updates.add("image_url = ?"); + params.add(Validation.optionalText(body, "image_url")); + } + if (body.has("milestone_id")) { + long milestoneId = Validation.requiredPositiveLong(body, "milestone_id", "milestone_id must be a positive integer."); + requireExists("SELECT id FROM milestones WHERE id = ?", milestoneId, "Milestone does not exist.", 400); + updates.add("milestone_id = ?"); + params.add(milestoneId); + } + requireUpdates(updates); + params.add(id); + database.execute("UPDATE rewards SET " + String.join(", ", updates) + " WHERE id = ?", params.toArray()); + return database.findOne("SELECT * FROM rewards WHERE id = ?", id); + } + + @DELETE + @Path("/rewards/{id}") + @RolesAllowed("Admin") + public Map deleteReward( + @PathParam("id") String rawId) { + long id = Validation.parseId(rawId, "Invalid reward id."); + if (database.execute("DELETE FROM rewards WHERE id = ?", id) == 0) { + throw new ApiException(404, "Reward not found."); + } + return Map.of("message", "Reward deleted."); + } + + private Map userById(long id) { + Map user = userByIdOrNull(id); + if (user == null) { + throw new ApiException(404, "User not found."); + } + return user; + } + + private Map userByIdOrNull(long id) { + Map user = database.findOne("SELECT * FROM users WHERE id = ?", id); + if (user != null) { + user.put("newsletter_optin", intToBool(user.get("newsletter_optin"))); + } + return user; + } + + private Map milestoneResponse(Map milestone, long currentCount) { + Map response = new LinkedHashMap<>(milestone); + long targetCount = ((Number) response.get("target_count")).longValue(); + response.put("reached", intToBool(response.get("reached"))); + response.put("current_count", currentCount); + response.put("progress", Math.min(100, Math.round((currentCount / (double) targetCount) * 100))); + return response; + } + + private void requireExists(String sql, long id, String message) { + requireExists(sql, id, message, 404); + } + + private void requireExists(String sql, long id, String message, int status) { + if (database.findOne(sql, id) == null) { + throw new ApiException(status, message); + } + } + + private void requireUpdates(List updates) { + if (updates.isEmpty()) { + throw new ApiException(400, "At least one updatable field is required."); + } + } + + private RuntimeException mapConflict(RuntimeException exception, String message) { + if (exception instanceof ApiException apiException && apiException.status() == 409) { + return new ApiException(409, message); + } + return exception; + } + + private boolean intToBool(Object value) { + if (value instanceof Boolean booleanValue) { + return booleanValue; + } + return ((Number) value).intValue() != 0; + } +} diff --git a/src/main/java/dev/frederik/promotion/SecureResource.java b/src/main/java/dev/frederik/promotion/SecureResource.java new file mode 100644 index 0000000..5a6b911 --- /dev/null +++ b/src/main/java/dev/frederik/promotion/SecureResource.java @@ -0,0 +1,21 @@ +package dev.frederik.promotion; + +import jakarta.annotation.security.RolesAllowed; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + +import java.util.Map; + +@Path("/secure") +@Produces(MediaType.APPLICATION_JSON) +public class SecureResource { + @GET + @Path("/data") + @RolesAllowed("Admin") + public Response getSecureData() { + return Response.ok(Map.of("message", "This is protected data.")).build(); + } +} diff --git a/src/main/java/dev/frederik/promotion/Validation.java b/src/main/java/dev/frederik/promotion/Validation.java new file mode 100644 index 0000000..99b70af --- /dev/null +++ b/src/main/java/dev/frederik/promotion/Validation.java @@ -0,0 +1,76 @@ +package dev.frederik.promotion; + +import com.fasterxml.jackson.databind.JsonNode; + +import java.util.regex.Pattern; + +final class Validation { + private static final Pattern EMAIL_PATTERN = Pattern.compile("^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$"); + + private Validation() { + } + + static String optionalText(JsonNode body, String field) { + requireBody(body); + JsonNode node = body.get(field); + if (node == null || node.isNull()) { + return null; + } + if (!node.isTextual()) { + throw new ApiException(400, field + " must be a string or null."); + } + return node.asText().trim(); + } + + static String requiredText(JsonNode body, String field, String message) { + String value = optionalText(body, field); + if (value == null || value.isBlank()) { + throw new ApiException(400, message); + } + return value; + } + + static boolean optionalBoolean(JsonNode body, String field, boolean defaultValue) { + requireBody(body); + JsonNode node = body.get(field); + if (node == null || node.isNull()) { + return defaultValue; + } + if (!node.isBoolean()) { + throw new ApiException(400, field + " must be a boolean."); + } + return node.asBoolean(); + } + + static long requiredPositiveLong(JsonNode body, String field, String message) { + requireBody(body); + JsonNode node = body.get(field); + if (node == null || !node.isIntegralNumber() || node.asLong() <= 0) { + throw new ApiException(400, message); + } + return node.asLong(); + } + + static long parseId(String value, String message) { + try { + long id = Long.parseLong(value); + if (id > 0) { + return id; + } + } catch (NumberFormatException ignored) { + } + throw new ApiException(400, message); + } + + static void requireEmail(String email) { + if (email == null || email.isBlank() || !EMAIL_PATTERN.matcher(email).matches()) { + throw new ApiException(400, "A valid email is required."); + } + } + + private static void requireBody(JsonNode body) { + if (body == null || body.isNull() || !body.isObject()) { + throw new ApiException(400, "Invalid JSON body."); + } + } +} diff --git a/src/main/resources/META-INF/resources/app.js b/src/main/resources/META-INF/resources/app.js new file mode 100644 index 0000000..fe51429 --- /dev/null +++ b/src/main/resources/META-INF/resources/app.js @@ -0,0 +1,64 @@ +const milestoneList = document.querySelector("#milestone-list"); +const registrationCount = document.querySelector("#registration-count"); +const platformCount = document.querySelector("#platform-count"); +const rewardCount = document.querySelector("#reward-count"); + +async function requestJson(url, options = {}) { + const response = await fetch(url, { + headers: { + "Content-Type": "application/json", + ...(options.headers || {}) + }, + ...options + }); + const data = await response.json(); + + if (!response.ok) { + throw new Error(data.error || "Request failed."); + } + + return data; +} + +function renderMilestones(milestones) { + milestoneList.innerHTML = ""; + milestones.forEach((milestone) => { + const card = document.createElement("article"); + card.className = "milestone-card"; + card.innerHTML = ` +

${milestone.title}

+
+
+
+
+ ${milestone.current_count} / ${milestone.target_count} + ${milestone.reached ? "unlocked" : `${milestone.progress}%`} +
+ `; + milestoneList.appendChild(card); + }); +} + +async function refreshStats() { + const [count, milestones, rewards] = await Promise.all([ + requestJson("/registrations/count"), + requestJson("/milestones"), + requestJson("/rewards") + ]); + + registrationCount.textContent = count.count; + rewardCount.textContent = rewards.length; + renderMilestones(milestones); +} + +async function loadPageData() { + try { + const platforms = await requestJson("/platforms"); + platformCount.textContent = platforms.length; + await refreshStats(); + } catch (error) { + milestoneList.innerHTML = `

Connection failed

${error.message}

`; + } +} + +loadPageData(); diff --git a/src/main/resources/META-INF/resources/assets/combat-field.png b/src/main/resources/META-INF/resources/assets/combat-field.png new file mode 100644 index 0000000000000000000000000000000000000000..c46b8d98a1a9dd4b8030ceafa10dc511e4c031e7 GIT binary patch literal 71795 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 BCyM|8 literal 0 HcmV?d00001 diff --git a/src/main/resources/META-INF/resources/assets/gacha-banner.png b/src/main/resources/META-INF/resources/assets/gacha-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..a619e9a38350c41c18fc98a458dcf609df9c90cf GIT binary patch literal 106018 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�l_wF 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

*| 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/META-INF/resources/assets/run-config.png b/src/main/resources/META-INF/resources/assets/run-config.png new file mode 100644 index 0000000000000000000000000000000000000000..67c590a927f44557881a4e50e891c73fba9c841f GIT binary patch literal 93520 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 l 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 z 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/META-INF/resources/index.html b/src/main/resources/META-INF/resources/index.html new file mode 100644 index 0000000..ee9ab59 --- /dev/null +++ b/src/main/resources/META-INF/resources/index.html @@ -0,0 +1,207 @@ + + + + + + Kernel Panic - Pre-Register + + + +

+ +
+
+
+

free-to-play roguelike deck-builder / gacha

+

Kernel Panic

+

+ Collect Linux distributions as gacha characters and fight through a dying + mainframe with programming languages as damage types. +

+

+ Slay the Spire meets a gacha collection game, wrapped in a terminal + aesthetic every developer recognizes on sight. +

+ +
+ +
+ Kernel Panic main menu with terminal commands and a neofetch-style Ubuntu panel +
actual game screen / tty1 main menu
+
+
+ +
+

+ Kernel Panic turns developer culture into combat. Arch breaks after updates, + Debian refuses to die, Gentoo compiles for three turns, Rust never misses, + C hits hard enough to crash you, and JavaScript rolls damage like a type + coercion bug. +

+
+ +
+
+

what players do

+

Three loops, one dying mainframe

+
+
+
+ ./fight +

Fight

+

Turn-based card combat against zombie processes, memory leaks, DRM guardians, telemetry collectors, and OS-flavored bosses.

+
    +
  • Endless waves escalate until you die.
  • +
  • High-score chase instead of a fixed ending.
  • +
  • Programming languages define damage behavior.
  • +
+
+
+ apt install cards +

Build

+

Between waves, shop at the Repository to install cards, upgrade your deck, or buy stat boosts.

+
    +
  • Choose two languages before each run.
  • +
  • Add distro-exclusive cards to the pool.
  • +
  • Turn unstable dependencies into combos.
  • +
+
+
+ curl gacha.sh | sh +

Collect

+

Pull new distros and Packages, then convert duplicates into upgrade currency so no pull is wasted.

+
    +
  • Distros unlock languages and playstyles.
  • +
  • Packages include tools like htop and nginx.
  • +
  • All power stays earnable through play.
  • +
+
+
+
+ +
+
+

actual game screens

+

Not a reskin. It looks like this.

+
+
+
+ Combat screen showing Ubuntu, executable JavaScript cards, enemy processes, and terminal-style turn data +
combat / JavaScript cards vs zombie_process
+
+
+ Gacha banner screen with Ubuntu, Fedora, and Mint ASCII art and entropy pull currency +
gacha / curl gacha.sh | sh
+
+
+ Run configuration screen where Ubuntu, Fedora, and Mint distros can be selected before booting a run +
run setup / choose distro packages
+
+
+
+ +
+
+

gacha roster

+

Distros with reputations as mechanics

+
+
+
+ SSR +

Arch

+

Elitist glass cannon. Huge tempo, fragile stability, and cards that can literally break after updates.

+
+
+ SR +

Debian

+

Unkillable grandmother. Two patches behind, never crashes, and quietly wins fights by outlasting everything.

+
+
+ SSR +

Gentoo

+

Spends three turns compiling. If she survives, she becomes the strongest unit on the board.

+
+
+
+ +
+
+

damage types

+

Languages are your weapons

+
+
+
CMassive damage, non-zero chance to segfault your own run.
+
RustReliable, precise, never misses, refuses unsafe plays.
+
JavaScriptWildly random output because of course it is.
+
HaskellDoes nothing until it suddenly does everything at once.
+
+
+ +
+
+ 0 + registered platform installs +
+
+ 3 + launch platforms +
+
+ 2 + known rewards +
+
+ +
+
+

community unlocks

+

Shared launch rewards

+
+
+
+ +
+
+

business model

+

Free-to-play without selling raw strength

+
+
+
+

Compute Credits

+

Premium currency converts to pull currency for banners and cosmetics, not direct stat purchases.

+
+
+

Bandwidth and Commits

+

Separate free grind and duplicate-conversion economies keep progression readable and fair.

+
+
+

Bits

+

Run-only shop currency powers Repository decisions without polluting the collection economy.

+
+
+
+
+ +
+ daily seed: mainframe_decay + shutdown -h now disabled during combat +
+ + + + diff --git a/src/main/resources/META-INF/resources/styles.css b/src/main/resources/META-INF/resources/styles.css new file mode 100644 index 0000000..afce443 --- /dev/null +++ b/src/main/resources/META-INF/resources/styles.css @@ -0,0 +1,691 @@ +:root { + --bg: #010806; + --panel: #04120c; + --panel-strong: #071d12; + --line: #123a25; + --text: #d8f5df; + --muted: #8ca997; + --dim: #245f3a; + --green: #4cff8d; + --green-deep: #0e6b3a; + --orange: #ff8a1f; + --orange-dark: #b94908; + --danger: #ff5a1f; + --cyan: #4cc9ff; + --violet: #c77dff; + --yellow: #f7d154; + --shadow: rgba(76, 255, 141, 0.18); +} + +* { + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; +} + +body { + margin: 0; + min-height: 100vh; + background: + linear-gradient(rgba(76, 255, 141, 0.025) 1px, transparent 1px), + radial-gradient(circle at 70% 18%, rgba(255, 138, 31, 0.08), transparent 26rem), + radial-gradient(circle at 12% 78%, rgba(76, 201, 255, 0.06), transparent 22rem), + var(--bg); + background-size: 100% 18px, auto, auto; + color: var(--text); + font-family: "Consolas", "SFMono-Regular", "Roboto Mono", monospace; + line-height: 1.5; +} + +a { + color: inherit; + text-decoration: none; +} + +.site-header, +.site-footer { + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; + border-color: var(--line); + color: var(--muted); +} + +.site-header { + position: sticky; + top: 0; + z-index: 10; + padding: 1rem clamp(1rem, 4vw, 3rem); + border-bottom: 1px solid var(--line); + background: rgba(1, 8, 6, 0.92); + backdrop-filter: blur(12px); +} + +.brand { + display: inline-flex; + align-items: center; + gap: 0.65rem; + color: var(--green); + font-weight: 800; + text-transform: uppercase; +} + +.brand-mark { + display: grid; + width: 2rem; + height: 2rem; + place-items: center; + border: 1px solid var(--green); + background: var(--panel-strong); + color: var(--green); +} + +.nav { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + gap: 0.45rem 1.1rem; + font-size: 0.92rem; +} + +.nav a:hover, +.nav a:focus-visible { + color: var(--green); +} + +main { + overflow: hidden; +} + +.hero { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(20rem, 32rem); + gap: clamp(2rem, 5vw, 5rem); + align-items: center; + min-height: calc(100vh - 4.2rem); + padding: clamp(3rem, 7vw, 6rem) clamp(1rem, 5vw, 5rem); + border-bottom: 1px solid var(--line); +} + +.hero h1, +.section-heading h2 { + margin: 0; + color: var(--green); + font-weight: 900; + text-transform: uppercase; +} + +.hero h1 { + max-width: 12ch; + font-size: clamp(3.1rem, 8vw, 7.2rem); + line-height: 0.92; +} + +.hero-text, +.hero-subtext { + max-width: 43rem; + margin: 1.35rem 0 0; + color: var(--muted); + font-size: clamp(1rem, 1.5vw, 1.18rem); +} + +.hero-subtext { + margin-top: 0.8rem; + color: var(--text); +} + +.eyebrow { + margin: 0 0 0.8rem; + color: var(--orange); + font-size: 0.82rem; + font-weight: 800; + text-transform: uppercase; +} + +.hero-actions { + display: flex; + flex-wrap: wrap; + gap: 0.8rem; + margin-top: 2rem; +} + +.button { + display: inline-flex; + min-height: 2.9rem; + align-items: center; + justify-content: center; + border: 1px solid; + border-radius: 6px; + padding: 0.8rem 1.1rem; + font: inherit; + font-weight: 800; + cursor: pointer; +} + +.button.primary { + border-color: var(--green); + background: var(--green); + color: #001007; + box-shadow: 0 0 28px var(--shadow); +} + +.button.secondary { + border-color: var(--orange-dark); + background: transparent; + color: var(--orange); +} + +.button:hover, +.button:focus-visible { + transform: translateY(-1px); +} + +.game-shot, +.register-form, +.auth-form, +.auth-session, +.milestone-card, +.intel-grid article, +.loop-grid article, +.distro-profile, +.language-grid article, +.private-intel-grid article { + border: 1px solid var(--line); + border-radius: 8px; + background: rgba(4, 18, 12, 0.88); +} + +.game-shot { + position: relative; + overflow: hidden; + margin: 0; + padding: 0.55rem; + background: #020805; + box-shadow: 0 0 0 1px rgba(76, 255, 141, 0.06), 0 24px 80px rgba(0, 0, 0, 0.45); +} + +.game-shot img { + display: block; + width: 100%; + height: auto; + border: 1px solid rgba(76, 255, 141, 0.16); + border-radius: 4px; +} + +.hero-shot img { + aspect-ratio: 16 / 9; + object-fit: cover; + object-position: center; +} + +.game-shot figcaption { + display: flex; + justify-content: space-between; + gap: 1rem; + padding: 0.6rem 0.15rem 0.1rem; + color: var(--muted); + font-size: 0.82rem; +} + +.rarity { + width: fit-content; + border: 1px solid var(--yellow); + border-radius: 999px; + padding: 0.1rem 0.45rem; + color: var(--yellow); + font-size: 0.74rem; + font-weight: 900; +} + +.rarity.hostile { + border-color: var(--danger); + color: var(--danger); +} + +.register-section, +.register-page, +.auth-section, +.auth-page, +.private-intel-section, +.milestones-section, +.intel-section, +.game-section, +.distros-section, +.languages-section, +.screens-section { + padding: clamp(3rem, 7vw, 5.5rem) clamp(1rem, 5vw, 5rem); +} + +.pitch-band { + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); + padding: clamp(1.4rem, 4vw, 2.4rem) clamp(1rem, 5vw, 5rem); + background: #020b07; +} + +.pitch-band p { + max-width: 86rem; + margin: 0; + color: var(--text); + font-size: clamp(1.05rem, 2vw, 1.45rem); + line-height: 1.55; +} + +.section-heading { + max-width: 64rem; + margin-bottom: 1.4rem; +} + +.section-heading h2 { + font-size: clamp(2rem, 4vw, 4rem); +} + +.register-form { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 1rem; + max-width: 58rem; + padding: clamp(1rem, 2vw, 1.5rem); +} + +.auth-grid { + display: grid; + grid-template-columns: minmax(0, 40rem) minmax(16rem, 1fr); + gap: 1rem; + align-items: stretch; +} + +.auth-page, +.register-page { + min-height: 52vh; + border-bottom: 1px solid var(--line); +} + +.auth-form { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 1rem; + padding: clamp(1rem, 2vw, 1.5rem); +} + +.auth-actions { + display: flex; + flex-wrap: wrap; + gap: 0.8rem; +} + +.auth-session { + display: grid; + align-content: center; + gap: 0.7rem; + min-height: 10rem; + padding: clamp(1rem, 2vw, 1.5rem); +} + +.auth-session strong { + color: var(--green); + font-size: clamp(1.2rem, 3vw, 2rem); + overflow-wrap: anywhere; +} + +.terminal-label { + color: var(--orange); + font-size: 0.78rem; + font-weight: 900; + text-transform: uppercase; +} + +.private-intel-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 1rem; +} + +.private-intel-grid article { + padding: 1rem; +} + +.private-intel-grid .wide { + grid-column: 1 / -1; +} + +.private-intel-grid h3 { + margin: 0 0 0.7rem; + color: var(--text); +} + +.private-intel-grid p { + margin: 0; + color: var(--muted); +} + +label, +fieldset { + min-width: 0; +} + +label, +legend { + color: var(--muted); + font-size: 0.9rem; + font-weight: 700; +} + +input { + width: 100%; + min-height: 2.8rem; + margin-top: 0.45rem; + border: 1px solid var(--line); + border-radius: 6px; + background: #010b07; + color: var(--green); + font: inherit; + padding: 0.65rem 0.75rem; +} + +input:focus { + outline: 2px solid var(--orange); + outline-offset: 2px; +} + +fieldset { + grid-column: 1 / -1; + margin: 0; + border: 1px solid var(--line); + border-radius: 6px; + padding: 0.85rem; +} + +.platform-list { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); + gap: 0.6rem; +} + +.platform-option { + display: flex; + align-items: center; + gap: 0.55rem; + min-height: 2.5rem; + border: 1px solid var(--line); + border-radius: 6px; + padding: 0.55rem 0.65rem; + background: #020d08; + color: var(--text); +} + +.platform-option input, +.checkbox-row input { + width: 1rem; + min-height: 1rem; + margin: 0; + accent-color: var(--green); +} + +.checkbox-row { + grid-column: 1 / -1; + display: flex; + align-items: center; + gap: 0.65rem; +} + +.form-submit { + width: fit-content; +} + +.form-message { + align-self: center; + margin: 0; + color: var(--green); +} + +.form-message.error { + color: var(--danger); +} + +.stats-band { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 1px; + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); + background: var(--line); +} + +.stats-band div { + padding: clamp(1.2rem, 3vw, 2rem) clamp(1rem, 4vw, 3rem); + background: #020b07; +} + +.stat-value { + display: block; + color: var(--green); + font-size: clamp(2rem, 5vw, 4.5rem); + font-weight: 900; + line-height: 1; +} + +.stat-label { + color: var(--muted); + font-size: 0.9rem; +} + +.milestone-list { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); + gap: 1rem; +} + +.loop-grid, +.distro-grid, +.language-grid, +.screens-grid { + display: grid; + gap: 1rem; +} + +.loop-grid { + grid-template-columns: repeat(3, minmax(0, 1fr)); +} + +.loop-grid article { + padding: 1rem; +} + +.loop-command { + display: inline-flex; + max-width: 100%; + margin-bottom: 0.9rem; + border: 1px solid var(--dim); + border-radius: 999px; + padding: 0.28rem 0.55rem; + color: var(--cyan); + font-size: 0.78rem; + font-weight: 800; + overflow-wrap: anywhere; +} + +.loop-grid h3, +.distro-profile h3, +.language-grid strong { + margin: 0 0 0.7rem; + color: var(--text); +} + +.loop-grid p, +.loop-grid li, +.distro-profile p, +.language-grid span { + color: var(--muted); +} + +.loop-grid p, +.distro-profile p { + margin: 0; +} + +.loop-grid ul { + display: grid; + gap: 0.35rem; + margin: 0.9rem 0 0; + padding-left: 1.1rem; +} + +.distro-grid { + grid-template-columns: 1.15fr 1fr 1.15fr; +} + +.distro-profile { + min-height: 16rem; + padding: 1rem; + background: + linear-gradient(145deg, rgba(76, 255, 141, 0.07), transparent 62%), + #04120c; +} + +.distro-profile h3 { + font-size: clamp(1.8rem, 4vw, 3.4rem); + line-height: 1; + text-transform: uppercase; +} + +.distro-profile.arch { + border-color: rgba(76, 201, 255, 0.5); +} + +.distro-profile.debian { + border-color: rgba(199, 125, 255, 0.5); +} + +.distro-profile.gentoo { + border-color: rgba(247, 209, 84, 0.55); +} + +.language-grid { + grid-template-columns: repeat(4, minmax(0, 1fr)); +} + +.language-grid article { + display: grid; + gap: 0.55rem; + min-height: 9rem; + padding: 1rem; +} + +.screens-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + align-items: start; +} + +.screens-grid .wide { + grid-column: 1 / -1; +} + +.language-grid strong { + color: var(--green); + font-size: 1.4rem; +} + +.milestone-card { + padding: 1rem; +} + +.milestone-card h3, +.intel-grid h3 { + margin: 0 0 0.7rem; + color: var(--text); +} + +.progress-track { + height: 0.7rem; + overflow: hidden; + border: 1px solid var(--line); + border-radius: 999px; + background: #010b07; +} + +.progress-fill { + height: 100%; + background: linear-gradient(90deg, var(--green), var(--orange)); +} + +.milestone-meta { + display: flex; + justify-content: space-between; + gap: 1rem; + margin-top: 0.7rem; + color: var(--muted); + font-size: 0.86rem; +} + +.reached { + color: var(--green); +} + +.intel-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 1rem; +} + +.intel-grid article { + padding: 1rem; +} + +.intel-grid p { + margin: 0; + color: var(--muted); +} + +.site-footer { + padding: 1rem clamp(1rem, 4vw, 3rem); + border-top: 1px solid var(--line); + font-size: 0.85rem; +} + +@media (max-width: 860px) { + .hero, + .register-form, + .auth-form, + .auth-grid, + .private-intel-grid, + .intel-grid, + .stats-band, + .loop-grid, + .distro-grid, + .language-grid, + .screens-grid { + grid-template-columns: 1fr; + } + + .hero { + min-height: auto; + } + + .form-submit { + width: 100%; + } +} + +@media (max-width: 560px) { + .site-header, + .site-footer { + align-items: flex-start; + flex-direction: column; + } + + .hero h1 { + font-size: 3.1rem; + } + + .screens-grid .wide { + grid-column: auto; + } + + .private-intel-grid .wide { + grid-column: auto; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..3fbe28c --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,25 @@ +quarkus.http.port=${PORT:3000} +quarkus.http.cors.enabled=true +quarkus.datasource.db-kind=postgresql +quarkus.datasource.username=${DB_USERNAME:postgres} +quarkus.datasource.password=${DB_PASSWORD:postgres} +quarkus.datasource.jdbc.url=${DB_URL:jdbc:postgresql://localhost:5432/linux_distro_roguelite_promotion} +quarkus.datasource.jdbc.max-size=8 +quarkus.log.category."dev.frederik.promotion".level=INFO + +auth.admin.username=${ADMIN_USERNAME:admin} +auth.admin.password=${ADMIN_PASSWORD:admin} + +mp.jwt.verify.publickey.location=publicKey.pem +mp.jwt.verify.issuer=https://kernel-panic.local/issuer +mp.jwt.token.header=Authorization +mp.jwt.token.signed=true +smallrye.jwt.sign.key.location=privateKey.pem +quarkus.smallrye-jwt.enabled=true + +quarkus.swagger-ui.always-include=true +quarkus.swagger-ui.oauth2-redirect-url=/q/oauth2-redirect.html +mp.openapi.extensions.smallrye.security-scheme.name=BearerAuth +mp.openapi.extensions.smallrye.security-scheme.type=HTTP +mp.openapi.extensions.smallrye.security-scheme.scheme=bearer +mp.openapi.extensions.smallrye.security-scheme.bearer-format=JWT diff --git a/src/middleware/adminAuth.js b/src/middleware/adminAuth.js deleted file mode 100644 index 438b8b0..0000000 --- a/src/middleware/adminAuth.js +++ /dev/null @@ -1,12 +0,0 @@ -function requireAdminKey(req, res, next) { - const expectedKey = process.env.ADMIN_KEY; - const providedKey = req.get("X-Admin-Key"); - - if (!expectedKey || providedKey !== expectedKey) { - return res.status(401).json({ error: "Missing or invalid admin key." }); - } - - next(); -} - -module.exports = requireAdminKey; diff --git a/src/routes/milestones.js b/src/routes/milestones.js deleted file mode 100644 index 41d357a..0000000 --- a/src/routes/milestones.js +++ /dev/null @@ -1,112 +0,0 @@ -const express = require("express"); -const { db, boolToInt, getRegistrationCount } = require("../db"); -const requireAdminKey = require("../middleware/adminAuth"); -const { sendError } = require("../utils/errors"); -const { - isBoolean, - isNonEmptyString, - isPositiveInteger, - normalizeString, - parseId -} = require("../utils/validation"); - -const router = express.Router(); - -function serializeMilestone(milestone, currentCount) { - return { - ...milestone, - reached: Boolean(milestone.reached), - current_count: currentCount, - progress: Math.min(100, Math.round((currentCount / milestone.target_count) * 100)) - }; -} - -router.get("/", (req, res) => { - const currentCount = getRegistrationCount(); - const milestones = db.prepare("SELECT * FROM milestones ORDER BY target_count, id").all(); - return res.json(milestones.map((milestone) => serializeMilestone(milestone, currentCount))); -}); - -router.get("/:id/rewards", (req, res) => { - const id = parseId(req.params.id); - if (!id) return sendError(res, 400, "Invalid milestone id."); - - const milestone = db.prepare("SELECT id FROM milestones WHERE id = ?").get(id); - if (!milestone) return sendError(res, 404, "Milestone not found."); - - const rewards = db.prepare("SELECT * FROM rewards WHERE milestone_id = ? ORDER BY id").all(id); - return res.json(rewards); -}); - -router.post("/", requireAdminKey, (req, res) => { - const title = normalizeString(req.body.title); - const targetCount = req.body.target_count; - - if (!isNonEmptyString(title)) return sendError(res, 400, "title is required."); - if (!isPositiveInteger(targetCount)) { - return sendError(res, 400, "target_count must be a positive integer."); - } - - const currentCount = getRegistrationCount(); - const result = db - .prepare("INSERT INTO milestones (title, target_count, reached) VALUES (?, ?, ?)") - .run(title, targetCount, boolToInt(currentCount >= targetCount)); - const milestone = db.prepare("SELECT * FROM milestones WHERE id = ?").get(result.lastInsertRowid); - - return res.status(201).json(serializeMilestone(milestone, currentCount)); -}); - -router.put("/:id", requireAdminKey, (req, res) => { - const id = parseId(req.params.id); - if (!id) return sendError(res, 400, "Invalid milestone id."); - - const existing = db.prepare("SELECT * FROM milestones WHERE id = ?").get(id); - if (!existing) return sendError(res, 404, "Milestone not found."); - - const updates = []; - const values = []; - - if (Object.prototype.hasOwnProperty.call(req.body, "title")) { - const title = normalizeString(req.body.title); - if (!isNonEmptyString(title)) return sendError(res, 400, "title must not be empty."); - updates.push("title = ?"); - values.push(title); - } - - if (Object.prototype.hasOwnProperty.call(req.body, "target_count")) { - if (!isPositiveInteger(req.body.target_count)) { - return sendError(res, 400, "target_count must be a positive integer."); - } - updates.push("target_count = ?"); - values.push(req.body.target_count); - } - - if (Object.prototype.hasOwnProperty.call(req.body, "reached")) { - if (!isBoolean(req.body.reached)) return sendError(res, 400, "reached must be a boolean."); - updates.push("reached = ?"); - values.push(boolToInt(req.body.reached)); - } - - if (updates.length === 0) { - return sendError(res, 400, "At least one updatable field is required."); - } - - values.push(id); - db.prepare(`UPDATE milestones SET ${updates.join(", ")} WHERE id = ?`).run(...values); - - const currentCount = getRegistrationCount(); - const milestone = db.prepare("SELECT * FROM milestones WHERE id = ?").get(id); - return res.json(serializeMilestone(milestone, currentCount)); -}); - -router.delete("/:id", requireAdminKey, (req, res) => { - const id = parseId(req.params.id); - if (!id) return sendError(res, 400, "Invalid milestone id."); - - const result = db.prepare("DELETE FROM milestones WHERE id = ?").run(id); - if (result.changes === 0) return sendError(res, 404, "Milestone not found."); - - return res.json({ message: "Milestone deleted." }); -}); - -module.exports = router; diff --git a/src/routes/platforms.js b/src/routes/platforms.js deleted file mode 100644 index 3cdaba5..0000000 --- a/src/routes/platforms.js +++ /dev/null @@ -1,23 +0,0 @@ -const express = require("express"); -const { db } = require("../db"); -const { sendError } = require("../utils/errors"); -const { parseId } = require("../utils/validation"); - -const router = express.Router(); - -router.get("/", (req, res) => { - const platforms = db.prepare("SELECT * FROM platforms ORDER BY id").all(); - return res.json(platforms); -}); - -router.get("/:id", (req, res) => { - const id = parseId(req.params.id); - if (!id) return sendError(res, 400, "Invalid platform id."); - - const platform = db.prepare("SELECT * FROM platforms WHERE id = ?").get(id); - if (!platform) return sendError(res, 404, "Platform not found."); - - return res.json(platform); -}); - -module.exports = router; diff --git a/src/routes/registrations.js b/src/routes/registrations.js deleted file mode 100644 index 2b1e543..0000000 --- a/src/routes/registrations.js +++ /dev/null @@ -1,54 +0,0 @@ -const express = require("express"); -const { db, getRegistrationCount, updateReachedMilestones } = require("../db"); -const { sendError, mapSqliteError } = require("../utils/errors"); -const { isPositiveInteger, parseId } = require("../utils/validation"); - -const router = express.Router(); - -router.post("/", (req, res) => { - const userId = req.body.user_id; - const platformId = req.body.platform_id; - - if (!isPositiveInteger(userId)) return sendError(res, 400, "user_id is required."); - if (!isPositiveInteger(platformId)) return sendError(res, 400, "platform_id is required."); - - const user = db.prepare("SELECT id FROM users WHERE id = ?").get(userId); - if (!user) return sendError(res, 400, "User does not exist."); - - const platform = db.prepare("SELECT id FROM platforms WHERE id = ?").get(platformId); - if (!platform) return sendError(res, 400, "Platform does not exist."); - - try { - const result = db - .prepare("INSERT INTO registrations (user_id, platform_id) VALUES (?, ?)") - .run(userId, platformId); - - // Every successful registration can unlock one or more community milestones. - updateReachedMilestones(); - - const registration = db - .prepare("SELECT * FROM registrations WHERE id = ?") - .get(result.lastInsertRowid); - return res.status(201).json(registration); - } catch (error) { - const mapped = mapSqliteError(error, "User is already registered for this platform."); - if (mapped) return sendError(res, mapped.status, mapped.message); - throw error; - } -}); - -router.get("/count", (req, res) => { - return res.json({ count: getRegistrationCount() }); -}); - -router.delete("/:id", (req, res) => { - const id = parseId(req.params.id); - if (!id) return sendError(res, 400, "Invalid registration id."); - - const result = db.prepare("DELETE FROM registrations WHERE id = ?").run(id); - if (result.changes === 0) return sendError(res, 404, "Registration not found."); - - return res.json({ message: "Registration deleted." }); -}); - -module.exports = router; diff --git a/src/routes/rewards.js b/src/routes/rewards.js deleted file mode 100644 index 8103980..0000000 --- a/src/routes/rewards.js +++ /dev/null @@ -1,128 +0,0 @@ -const express = require("express"); -const { db } = require("../db"); -const requireAdminKey = require("../middleware/adminAuth"); -const { sendError, mapSqliteError } = require("../utils/errors"); -const { isNonEmptyString, isPositiveInteger, normalizeString, parseId } = require("../utils/validation"); - -const router = express.Router(); - -function validateOptionalString(value, fieldName, res) { - if (value !== null && value !== undefined && typeof value !== "string") { - sendError(res, 400, `${fieldName} must be a string or null.`); - return false; - } - return true; -} - -router.get("/", (req, res) => { - const rewards = db.prepare("SELECT * FROM rewards ORDER BY id").all(); - return res.json(rewards); -}); - -router.get("/milestone/:milestoneId", (req, res) => { - const milestoneId = parseId(req.params.milestoneId); - if (!milestoneId) return sendError(res, 400, "Invalid milestone id."); - - const milestone = db.prepare("SELECT id FROM milestones WHERE id = ?").get(milestoneId); - if (!milestone) return sendError(res, 404, "Milestone not found."); - - const rewards = db - .prepare("SELECT * FROM rewards WHERE milestone_id = ? ORDER BY id") - .all(milestoneId); - return res.json(rewards); -}); - -router.post("/", requireAdminKey, (req, res) => { - const name = normalizeString(req.body.name); - const description = req.body.description == null ? null : normalizeString(req.body.description); - const imageUrl = req.body.image_url == null ? null : normalizeString(req.body.image_url); - const milestoneId = req.body.milestone_id; - - if (!isNonEmptyString(name)) return sendError(res, 400, "name is required."); - if (!validateOptionalString(description, "description", res)) return undefined; - if (!validateOptionalString(imageUrl, "image_url", res)) return undefined; - if (!isPositiveInteger(milestoneId)) { - return sendError(res, 400, "milestone_id must be a positive integer."); - } - - const milestone = db.prepare("SELECT id FROM milestones WHERE id = ?").get(milestoneId); - if (!milestone) return sendError(res, 400, "Milestone does not exist."); - - try { - const result = db - .prepare( - "INSERT INTO rewards (milestone_id, name, description, image_url) VALUES (?, ?, ?, ?)" - ) - .run(milestoneId, name, description, imageUrl); - const reward = db.prepare("SELECT * FROM rewards WHERE id = ?").get(result.lastInsertRowid); - return res.status(201).json(reward); - } catch (error) { - const mapped = mapSqliteError(error, "Reward conflict."); - if (mapped) return sendError(res, mapped.status, mapped.message); - throw error; - } -}); - -router.put("/:id", requireAdminKey, (req, res) => { - const id = parseId(req.params.id); - if (!id) return sendError(res, 400, "Invalid reward id."); - - const existing = db.prepare("SELECT * FROM rewards WHERE id = ?").get(id); - if (!existing) return sendError(res, 404, "Reward not found."); - - const updates = []; - const values = []; - - if (Object.prototype.hasOwnProperty.call(req.body, "name")) { - const name = normalizeString(req.body.name); - if (!isNonEmptyString(name)) return sendError(res, 400, "name must not be empty."); - updates.push("name = ?"); - values.push(name); - } - - if (Object.prototype.hasOwnProperty.call(req.body, "description")) { - const description = req.body.description == null ? null : normalizeString(req.body.description); - if (!validateOptionalString(description, "description", res)) return undefined; - updates.push("description = ?"); - values.push(description); - } - - if (Object.prototype.hasOwnProperty.call(req.body, "image_url")) { - const imageUrl = req.body.image_url == null ? null : normalizeString(req.body.image_url); - if (!validateOptionalString(imageUrl, "image_url", res)) return undefined; - updates.push("image_url = ?"); - values.push(imageUrl); - } - - if (Object.prototype.hasOwnProperty.call(req.body, "milestone_id")) { - if (!isPositiveInteger(req.body.milestone_id)) { - return sendError(res, 400, "milestone_id must be a positive integer."); - } - const milestone = db.prepare("SELECT id FROM milestones WHERE id = ?").get(req.body.milestone_id); - if (!milestone) return sendError(res, 400, "Milestone does not exist."); - updates.push("milestone_id = ?"); - values.push(req.body.milestone_id); - } - - if (updates.length === 0) { - return sendError(res, 400, "At least one updatable field is required."); - } - - values.push(id); - db.prepare(`UPDATE rewards SET ${updates.join(", ")} WHERE id = ?`).run(...values); - - const reward = db.prepare("SELECT * FROM rewards WHERE id = ?").get(id); - return res.json(reward); -}); - -router.delete("/:id", requireAdminKey, (req, res) => { - const id = parseId(req.params.id); - if (!id) return sendError(res, 400, "Invalid reward id."); - - const result = db.prepare("DELETE FROM rewards WHERE id = ?").run(id); - if (result.changes === 0) return sendError(res, 404, "Reward not found."); - - return res.json({ message: "Reward deleted." }); -}); - -module.exports = router; diff --git a/src/routes/users.js b/src/routes/users.js deleted file mode 100644 index adb2869..0000000 --- a/src/routes/users.js +++ /dev/null @@ -1,140 +0,0 @@ -const express = require("express"); -const { db, boolToInt } = require("../db"); -const { sendError, mapSqliteError } = require("../utils/errors"); -const { - isBoolean, - isNonEmptyString, - isValidEmail, - normalizeString, - parseId -} = require("../utils/validation"); - -const router = express.Router(); - -function serializeUser(user) { - return { - ...user, - newsletter_optin: Boolean(user.newsletter_optin) - }; -} - -router.post("/", (req, res) => { - const username = normalizeString(req.body.username); - const email = normalizeString(req.body.email); - const newsletterOptin = req.body.newsletter_optin ?? false; - - if (!isNonEmptyString(username)) { - return sendError(res, 400, "username is required."); - } - - if (!isValidEmail(email)) { - return sendError(res, 400, "A valid email is required."); - } - - if (!isBoolean(newsletterOptin)) { - return sendError(res, 400, "newsletter_optin must be a boolean."); - } - - try { - const result = db - .prepare("INSERT INTO users (username, email, newsletter_optin) VALUES (?, ?, ?)") - .run(username, email, boolToInt(newsletterOptin)); - const user = db.prepare("SELECT * FROM users WHERE id = ?").get(result.lastInsertRowid); - return res.status(201).json(serializeUser(user)); - } catch (error) { - const mapped = mapSqliteError(error, "username or email already exists."); - if (mapped) return sendError(res, mapped.status, mapped.message); - throw error; - } -}); - -router.get("/:id", (req, res) => { - const id = parseId(req.params.id); - if (!id) return sendError(res, 400, "Invalid user id."); - - const user = db.prepare("SELECT * FROM users WHERE id = ?").get(id); - if (!user) return sendError(res, 404, "User not found."); - - return res.json(serializeUser(user)); -}); - -router.put("/:id", (req, res) => { - const id = parseId(req.params.id); - if (!id) return sendError(res, 400, "Invalid user id."); - - const existing = db.prepare("SELECT * FROM users WHERE id = ?").get(id); - if (!existing) return sendError(res, 404, "User not found."); - - const updates = []; - const values = []; - - if (Object.prototype.hasOwnProperty.call(req.body, "username")) { - const username = normalizeString(req.body.username); - if (!isNonEmptyString(username)) return sendError(res, 400, "username must not be empty."); - updates.push("username = ?"); - values.push(username); - } - - if (Object.prototype.hasOwnProperty.call(req.body, "email")) { - const email = normalizeString(req.body.email); - if (!isValidEmail(email)) return sendError(res, 400, "A valid email is required."); - updates.push("email = ?"); - values.push(email); - } - - if (Object.prototype.hasOwnProperty.call(req.body, "newsletter_optin")) { - if (!isBoolean(req.body.newsletter_optin)) { - return sendError(res, 400, "newsletter_optin must be a boolean."); - } - updates.push("newsletter_optin = ?"); - values.push(boolToInt(req.body.newsletter_optin)); - } - - if (updates.length === 0) { - return sendError(res, 400, "At least one updatable field is required."); - } - - try { - values.push(id); - db.prepare(`UPDATE users SET ${updates.join(", ")} WHERE id = ?`).run(...values); - const user = db.prepare("SELECT * FROM users WHERE id = ?").get(id); - return res.json(serializeUser(user)); - } catch (error) { - const mapped = mapSqliteError(error, "username or email already exists."); - if (mapped) return sendError(res, mapped.status, mapped.message); - throw error; - } -}); - -router.delete("/:id", (req, res) => { - const id = parseId(req.params.id); - if (!id) return sendError(res, 400, "Invalid user id."); - - const result = db.prepare("DELETE FROM users WHERE id = ?").run(id); - if (result.changes === 0) return sendError(res, 404, "User not found."); - - return res.json({ message: "User deleted." }); -}); - -router.get("/:id/registrations", (req, res) => { - const id = parseId(req.params.id); - if (!id) return sendError(res, 400, "Invalid user id."); - - const user = db.prepare("SELECT id FROM users WHERE id = ?").get(id); - if (!user) return sendError(res, 404, "User not found."); - - const registrations = db - .prepare( - `SELECT registrations.id, registrations.user_id, registrations.platform_id, - platforms.name AS platform_name, registrations.created_at - FROM registrations - JOIN platforms ON platforms.id = registrations.platform_id - WHERE registrations.user_id = ? - ORDER BY registrations.id` - ) - .all(id); - - return res.json(registrations); -}); - -module.exports = router; diff --git a/src/utils/errors.js b/src/utils/errors.js deleted file mode 100644 index f85861b..0000000 --- a/src/utils/errors.js +++ /dev/null @@ -1,20 +0,0 @@ -function sendError(res, status, message) { - return res.status(status).json({ error: message }); -} - -function mapSqliteError(error, conflictMessage) { - if (error && error.code === "SQLITE_CONSTRAINT_UNIQUE") { - return { status: 409, message: conflictMessage }; - } - - if (error && error.code === "SQLITE_CONSTRAINT_FOREIGNKEY") { - return { status: 400, message: "Referenced resource does not exist." }; - } - - return null; -} - -module.exports = { - sendError, - mapSqliteError -}; diff --git a/src/utils/validation.js b/src/utils/validation.js deleted file mode 100644 index 44d9d71..0000000 --- a/src/utils/validation.js +++ /dev/null @@ -1,35 +0,0 @@ -const EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; - -function isNonEmptyString(value) { - return typeof value === "string" && value.trim().length > 0; -} - -function isValidEmail(value) { - return isNonEmptyString(value) && EMAIL_PATTERN.test(value.trim()); -} - -function isBoolean(value) { - return typeof value === "boolean"; -} - -function isPositiveInteger(value) { - return Number.isInteger(value) && value > 0; -} - -function parseId(value) { - const id = Number(value); - return Number.isInteger(id) && id > 0 ? id : null; -} - -function normalizeString(value) { - return typeof value === "string" ? value.trim() : value; -} - -module.exports = { - isNonEmptyString, - isValidEmail, - isBoolean, - isPositiveInteger, - parseId, - normalizeString -};