From 80ecf19ac521c66cbdfa22d5700767851f7ddf0c Mon Sep 17 00:00:00 2001 From: Joe Uhren Date: Sun, 13 Apr 2025 21:25:24 -0600 Subject: [PATCH] Update all outdated package.json dependencies -Main update is to add support for express v5.x which required some code changes to a few of the public and wallet api routes -Removed the body-parser dependency and replaced with express which now has the same functionaliuty built-in and is no longer necessary to have a dedicated dependency -All dependencies in the package.json have been updated to reference the most up-to-date version numbers --- app.js | 5 +-- lib/nodeapi.js | 107 +++++++++++++++++++++++-------------------------- package.json | 25 ++++++------ 3 files changed, 65 insertions(+), 72 deletions(-) diff --git a/app.js b/app.js index bcaefe5..7fe5c84 100644 --- a/app.js +++ b/app.js @@ -4,7 +4,6 @@ var express = require('express'), favicon = require('serve-favicon'), logger = require('morgan'), cookieParser = require('cookie-parser'), - bodyParser = require('body-parser'), settings = require('./lib/settings'), routes = require('./routes/index'), lib = require('./lib/explorer'), @@ -167,8 +166,8 @@ if (default_favicon != '') app.use(favicon(path.join('./public', default_favicon))); app.use(logger('dev')); -app.use(bodyParser.json()); -app.use(bodyParser.urlencoded({ extended: true })); +app.use(express.json()); +app.use(express.urlencoded({ extended: true })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); diff --git a/lib/nodeapi.js b/lib/nodeapi.js index 0e31ce4..0c4f4a9 100644 --- a/lib/nodeapi.js +++ b/lib/nodeapi.js @@ -6,7 +6,7 @@ module.exports = function() { function express_app() { var app = express(); - app.get('*', hasAccess, function(req, res) { + app.get('/{*splat}', hasAccess, function(req, res) { var method = req.path.substring(1, req.path.length); if ('undefined' != typeof requires_passphrase[method]) { @@ -16,19 +16,17 @@ module.exports = function() { res.send('A wallet passphrase is needed and has not been set.'); } - var query_parameters = req.query; - var params = []; + const query_parameters = req.query; + let params = []; - for (var parameter in query_parameters) { - if (query_parameters.hasOwnProperty(parameter)) { - var param = query_parameters[parameter]; + Object.keys(query_parameters).forEach(function(parameter) { + let param = query_parameters[parameter]; - if (!isNaN(param)) - param = parseFloat(param); + if (!isNaN(param)) + param = parseFloat(param); - params.push(param); - } - } + params.push(param); + }); var command = []; @@ -184,10 +182,10 @@ module.exports = function() { break; case 'getblockhash': - for (var parameter in query_parameters) { - if (query_parameters.hasOwnProperty(parameter) && (parameter == 'height' || parameter == 'index')) + Object.keys(query_parameters).forEach(function(parameter) { + if (parameter == 'height' || parameter == 'index') params.push(parseInt(query_parameters[parameter])); - } + }); var cmd = prepareRpcCommand(settings.api_cmds.getblockhash, params); @@ -196,10 +194,10 @@ module.exports = function() { break; case 'getblock': - for (var parameter in query_parameters) { - if (query_parameters.hasOwnProperty(parameter) && parameter == 'hash') + Object.keys(query_parameters).forEach(function(parameter) { + if (parameter == 'hash') params.push(query_parameters[parameter]); - } + }); var cmd = prepareRpcCommand(settings.api_cmds.getblock, params); @@ -208,14 +206,12 @@ module.exports = function() { break; case 'getrawtransaction': - for (var parameter in query_parameters) { - if (query_parameters.hasOwnProperty(parameter)) { - if (parameter == 'txid') - params.push(query_parameters[parameter]); - else if (parameter == 'decrypt') - params.push(parseInt(query_parameters[parameter])); - } - } + Object.keys(query_parameters).forEach(function(parameter) { + if (parameter == 'txid') + params.push(query_parameters[parameter]); + else if (parameter == 'decrypt') + params.push(parseInt(query_parameters[parameter])); + }); var cmd = prepareRpcCommand(settings.api_cmds.getrawtransaction, params); @@ -224,18 +220,19 @@ module.exports = function() { break; case 'verifymessage': - for (var parameter in query_parameters) { - if (query_parameters.hasOwnProperty(parameter)) { - if (parameter == 'address' || parameter == 'message') - params.push(query_parameters[parameter]); - if (parameter == 'signature') { - var param = decodeURIComponent(query_parameters[parameter]); - while (param.indexOf(" ") > -1) - param = param.replace(" ", "+"); - params.push(param); - } + Object.keys(query_parameters).forEach(function(parameter) { + if (parameter == 'address' || parameter == 'message') + params.push(query_parameters[parameter]); + + if (parameter == 'signature') { + let param = decodeURIComponent(query_parameters[parameter]); + + while (param.indexOf(' ') > -1) + param = param.replace(' ', '+'); + + params.push(param); } - } + }); var cmd = prepareRpcCommand(settings.api_cmds.verifymessage, params); @@ -248,27 +245,25 @@ module.exports = function() { var before_min_conf = true; var address_info = {}; - for (var parameter in query_parameters) { - if (query_parameters.hasOwnProperty(parameter)) { - if (parameter == 'minconf') { - before_min_conf = false; - params.push(address_info); - } - - var param = query_parameters[parameter]; - - if (!isNaN(param)) - param = parseFloat(param); - - if (after_account && before_min_conf) - address_info[parameter] = param; - else - params.push(param); - - if (parameter == 'account') - after_account = true; + Object.keys(query_parameters).forEach(function(parameter) { + if (parameter == 'minconf') { + before_min_conf = false; + params.push(address_info); } - } + + let param = query_parameters[parameter]; + + if (!isNaN(param)) + param = parseFloat(param); + + if (after_account && before_min_conf) + address_info[parameter] = param; + else + params.push(param); + + if (parameter == 'account') + after_account = true; + }); if (before_min_conf) params.push(address_info); diff --git a/package.json b/package.json index 336a5c8..c95b520 100644 --- a/package.json +++ b/package.json @@ -31,26 +31,25 @@ "benchmark": "node ./scripts/benchmark.js" }, "dependencies": { - "async": "^3.2.4", + "async": "^3.2.6", "bad-words": "^4.0.0", - "body-parser": "^1.20.0", - "cookie-parser": "^1.4.6", - "debug": ">=4.3.4", - "express": "^4.21.2", + "cookie-parser": "^1.4.7", + "debug": "^4.4.0", + "express": "^5.1.0", "intl": "^1.2.5", "jsonminify": "^0.4.2", - "mongodb": "^6.1.0", - "mongoose": "^8.0.3", - "morgan": ">=1.10.0", - "postman-request": "^2.88.1-postman.31", - "pug": "~3.0.2", + "mongodb": "^6.15.0", + "mongoose": "^8.13.2", + "morgan": "^1.10.0", + "postman-request": "^2.88.1-postman.42", + "pug": "~3.0.3", "qr-image": "^3.2.0", - "sass": "^1.52.3", + "sass": "^1.86.3", "serve-favicon": "^2.5.0" }, "devDependencies": { "forever": "^4.0.3", - "jasmine": ">=4.2.0", - "pm2": "^5.2.0" + "jasmine": "^5.6.0", + "pm2": "^6.0.5" } } \ No newline at end of file