// ─── install ─── // npm install express body-parser expr-eval const express = require('express'); const bodyParser = require('body-parser'); const { Parser } = require('expr-eval'); const app = express(); app.use(bodyParser.json()); // Only digits, space, operators, decimal point and parentheses: const SAFE_EXPR = /^[0-9+\-*/^().\s]+$/; app.post('/calculate', (req, res) => { const expr = (req.body.expression || '').trim(); // 1) Reject empty or disallowed input if (!expr || !SAFE_EXPR.test(expr)) { return res.status(400).json({ error: 'Invalid characters in expression.' }); } try { // 2) Safely parse & evaluate const parser = new Parser({ operators: { // lock down functions: add: true, subtract: true, multiply: true, divide: true, power: true }}); const result = parser.evaluate(expr); // 3) Return numeric result only if (typeof result !== 'number' || !isFinite(result)) { throw new Error('Non-finite result'); } res.json({ result }); } catch (err) { res.status(400).json({ error: 'Malformed expression.' }); } }); app.listen(3000, () => console.log('Calculator server listening on :3000'));
⏳ Waiting…
⏳ Waiting…
⏳ Waiting…
⏳ Waiting…
⏳ Waiting for launch…