From ec2a37d6c2d9281eb4ad78b231bed3d8f38fbee3 Mon Sep 17 00:00:00 2001 From: smolgrrr Date: Sat, 18 Nov 2023 00:23:02 +1100 Subject: [PATCH] start pow server work --- server/.gitignore | 2 ++ server/index.ts | 33 +++++++++++++++++++++++++++++++++ server/package.json | 21 +++++++++++++++++++++ server/tsconfig.json | 13 +++++++++++++ 4 files changed, 69 insertions(+) create mode 100644 server/.gitignore create mode 100644 server/index.ts create mode 100644 server/package.json create mode 100644 server/tsconfig.json diff --git a/server/.gitignore b/server/.gitignore new file mode 100644 index 0000000..bbacd7f --- /dev/null +++ b/server/.gitignore @@ -0,0 +1,2 @@ +node_modules +bun.lockb \ No newline at end of file diff --git a/server/index.ts b/server/index.ts new file mode 100644 index 0000000..4832eaf --- /dev/null +++ b/server/index.ts @@ -0,0 +1,33 @@ +import express from 'express'; +import bodyParser from 'body-parser'; +import { minePow } from 'nostr-tools/lib/types/nip13'; + +const app = express(); +const port = 3000; + +// Use body-parser middleware to parse JSON requests +app.use(bodyParser.json()); + +app.post('/powgen', async (req, res) => { + try { + const { unsigned, difficulty } = req.body; + + // Validate input + if (!unsigned || !difficulty) { + return res.status(400).send('Missing unsigned event or difficulty.'); + } + + // Call minePow function to generate PoW + const result = minePow(unsigned, difficulty); + + // Send back the result + res.json(result); + } catch (error) { + console.error('Error generating PoW:', error); + res.status(500).send('Internal server error'); + } +}); + +app.listen(port, () => { + console.log(`Server running at http://localhost:${port}`); +}); diff --git a/server/package.json b/server/package.json new file mode 100644 index 0000000..cc00412 --- /dev/null +++ b/server/package.json @@ -0,0 +1,21 @@ +{ + "name": "server", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "build": "tsc", + "start": "node dist/index.js", + "dev": "tsc && node dist/index.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@types/express": "^4.17.21", + "@types/node": "^20.9.1", + "express": "^4.18.2", + "nostr-tools": "^1.17.0", + "typescript": "^5.2.2" + } +} diff --git a/server/tsconfig.json b/server/tsconfig.json new file mode 100644 index 0000000..3ec7a62 --- /dev/null +++ b/server/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "rootDir": "./", + "outDir": "./dist", + "esModuleInterop": true, + "strict": true, + "skipLibCheck": true + }, + "include": ["src/**/*", "index.ts"], + "exclude": ["node_modules"] +}