From 326caf949ec8622c04b0e3352c5eac5370f161e4 Mon Sep 17 00:00:00 2001
From: Pawel Zelawski <pawel.zelawski@outlook.com>
Date: Thu, 10 Apr 2025 10:50:57 +0200
Subject: feat(server): implement basic backend API

- Added basic Express server setup in `src/server/main.ts`.
- Configured `dotenv` to load environment variables.
- Implemented in-memory storage for session state (pending, success, failed).
- Created `/api/digiid/start` endpoint:
    - Generates session ID and nonce.
    - Constructs callback URL from `PUBLIC_URL`.
    - Determines `unsecure` flag based on URL scheme.
    - Stores initial session state.
    - Generates QR code data URL.
    - Returns `sessionId` and `qrCodeDataUrl`.
    - Includes placeholder for `digiidTs.generateDigiIDUri`.
- Created `/api/digiid/callback` endpoint:
    - Receives address, uri, signature from DigiID app.
    - Parses nonce from received URI.
    - Looks up session by nonce.
    - Reconstructs expected callback URL.
    - Updates session state based on placeholder verification.
    - Includes placeholder for `digiidTs.verifyDigiIDCallback`.
    - Responds 200 OK as per DigiID protocol.
- Created `/api/digiid/status/:sessionId` endpoint:
    - Retrieves and returns session status, address, and error.
- Added address type helper `getDigiByteAddressType` in `src/server/utils.ts` (with placeholder logic for DGA).
- Added `dev:backend` script to `package.json` using `nodemon` and `ts-node/esm`.
- Added `"type": "module"` to `package.json`.
- Installed `@types/dotenv`.
- (Note: Outstanding TypeScript linter errors related to async Express handlers require further investigation).
---
 package-lock.json | 11 +++++++++++
 1 file changed, 11 insertions(+)

(limited to 'package-lock.json')

diff --git a/package-lock.json b/package-lock.json
index 2532abc..76e7a97 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,6 +9,7 @@
       "version": "1.0.0",
       "license": "ISC",
       "devDependencies": {
+        "@types/dotenv": "^6.1.1",
         "@types/express": "^5.0.1",
         "@types/node": "^22.14.0",
         "@types/qrcode": "^1.5.5",
@@ -1528,6 +1529,16 @@
         "@types/node": "*"
       }
     },
+    "node_modules/@types/dotenv": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-6.1.1.tgz",
+      "integrity": "sha512-ftQl3DtBvqHl9L16tpqqzA4YzCSXZfi7g8cQceTz5rOlYtk/IZbFjAv3mLOQlNIgOaylCQWQoBdDQHPgEBJPHg==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
     "node_modules/@types/estree": {
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
-- 
cgit v1.2.3