From 52310c9866e48a4056534620cb6a4c8727ff6f2a Mon Sep 17 00:00:00 2001 From: vijayg10 <33152110+vijayg10@users.noreply.github.com> Date: Mon, 1 Apr 2024 14:56:49 +0530 Subject: [PATCH] feat: implement sync test case execution (#252) * feat: added sync option for test case execution * chore: added unit test * chore: update deps and fix lint * chore: update --- package-lock.json | 365 +++++++++++------- package.json | 24 +- .../api_spec.yaml | 11 + .../response_map.json | 14 + src/lib/api-routes/outbound.js | 10 +- src/lib/db/models/mongoDBWrapper.js | 7 +- src/lib/mocking/openApiMockHandler.js | 27 +- src/lib/test-outbound/outbound-initiator.js | 27 +- .../test-outbound/outbound-initiator.test.js | 19 +- 9 files changed, 311 insertions(+), 193 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76c7169c..b8cc29b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,27 +9,27 @@ "version": "17.1.1", "license": "Apache-2.0", "dependencies": { - "@elastic/elasticsearch": "8.12.2", + "@elastic/elasticsearch": "8.13.0", "@hapi/basic": "7.0.2", "@hapi/boom": "10.0.1", "@hapi/good": "9.0.1", - "@hapi/hapi": "21.3.3", + "@hapi/hapi": "21.3.7", "@hapi/inert": "7.1.0", "@hapi/vision": "7.0.3", - "@mojaloop/central-services-logger": "11.2.2", + "@mojaloop/central-services-logger": "11.3.0", "@mojaloop/ml-testing-toolkit-shared-lib": "14.0.1", "@mojaloop/sdk-standard-components": "^17.1.3", "@now-ims/hapi-now-auth": "2.1.0", "@types/socket.io": "3.0.1", - "adm-zip": "0.5.10", + "adm-zip": "0.5.12", "atob": "2.1.2", - "axios": "1.6.7", + "axios": "1.6.8", "chai": "4.4.1", "cookie-parser": "1.4.6", "cookies": "0.9.1", "cors": "2.8.5", "dotenv": "16.4.5", - "express": "4.18.3", + "express": "4.19.2", "express-validator": "7.0.1", "fs": "0.0.1-security", "handlebars": "4.7.8", @@ -42,7 +42,7 @@ "json-rules-engine": "6.5.0", "lodash": "4.17.21", "mongo-uri-builder": "4.0.0", - "mongoose": "8.2.0", + "mongoose": "8.2.4", "multer": "1.4.3", "mustache": "4.2.0", "mv": "2.1.1", @@ -55,14 +55,14 @@ "passport-jwt": "4.0.1", "path": "0.12.7", "postman-collection": "4.4.0", - "postman-sandbox": "4.5.0", + "postman-sandbox": "4.6.1", "rc": "1.2.8", "request": "2.88.2", "request-promise-native": "1.0.8", "request-to-curl": "0.1.6", "selectn": "1.1.2", - "socket.io": "4.7.4", - "socket.io-client": "4.7.4", + "socket.io": "4.7.5", + "socket.io-client": "4.7.5", "uuid": "9.0.1", "uuid4": "2.0.3", "ws": "8.16.0" @@ -73,11 +73,11 @@ "devDependencies": { "@types/jest": "29.5.12", "audit-ci": "6.6.1", - "get-port": "7.0.0", + "get-port": "7.1.0", "jest": "29.7.0", "jest-junit": "16.0.0", "nodemon": "3.1.0", - "npm-check-updates": "16.14.15", + "npm-check-updates": "16.14.18", "nyc": "15.1.0", "parse-strings-in-object": "1.6.0", "pre-commit": "1.2.2", @@ -863,6 +863,8 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, "engines": { "node": ">=0.1.90" } @@ -878,11 +880,11 @@ } }, "node_modules/@elastic/elasticsearch": { - "version": "8.12.2", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.12.2.tgz", - "integrity": "sha512-04NvH3LIgcv1Uwguorfw2WwzC9Lhfsqs9f0L6uq6MrCw0lqe/HOQ6E8vJ6EkHAA15iEfbhtxOtenbZVVcE+mAQ==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.13.0.tgz", + "integrity": "sha512-OAYgzqArPqgDaIJ1yT0RX31YCgr1lleo53zL+36i23PFjHu08CA6Uq+BmBzEV05yEidl+ILPdeSfF3G8hPG/JQ==", "dependencies": { - "@elastic/transport": "^8.4.1", + "@elastic/transport": "^8.4.0", "tslib": "^2.4.0" }, "engines": { @@ -1158,9 +1160,9 @@ "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" }, "node_modules/@hapi/hapi": { - "version": "21.3.3", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.3.tgz", - "integrity": "sha512-6pgwWVl/aSKSNVn86n+mWa06jRqCAKi2adZp/Hti19A0u5x3/6eiKz8UTBPMzfrdGf9WcrYbFBYzWr/qd2s28g==", + "version": "21.3.7", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.7.tgz", + "integrity": "sha512-33J0nreMfqkhY7wwRAZRy+9J+7J4QOH1JtICMjIUmxfaOYSJL/d8JJCtg57SX60944bhlCeu7isb7qyr2jT2oA==", "dependencies": { "@hapi/accept": "^6.0.1", "@hapi/ammo": "^6.0.1", @@ -1883,15 +1885,15 @@ "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" }, "node_modules/@mojaloop/central-services-logger": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@mojaloop/central-services-logger/-/central-services-logger-11.2.2.tgz", - "integrity": "sha512-EMlhCs1CoWG4zQfftOKQmJjlaSxUXfXOdNLZmkPn2t0jrt5fvbkfRWl0Nl0ppSRKRto7BEGYD/8RGLnOdYTtgA==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/@mojaloop/central-services-logger/-/central-services-logger-11.3.0.tgz", + "integrity": "sha512-5OcrTRKJhc6nSdbePwYMM/m6+qnJpkvwV7kY+R1oBqo5gFGBFpBx0Hrf7bg+P2cB/M9P7ZK8MrOq41WFHbWt7Q==", "dependencies": { - "@types/node": "^20.5.7", + "@types/node": "^20.11.30", "parse-strings-in-object": "2.0.0", "rc": "1.2.8", "safe-stable-stringify": "^2.4.3", - "winston": "3.10.0" + "winston": "3.12.0" } }, "node_modules/@mojaloop/central-services-logger/node_modules/parse-strings-in-object": { @@ -2576,9 +2578,12 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.6.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.3.tgz", - "integrity": "sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA==" + "version": "20.11.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", + "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -2586,6 +2591,12 @@ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, + "node_modules/@types/semver-utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/semver-utils/-/semver-utils-1.1.3.tgz", + "integrity": "sha512-T+YwkslhsM+CeuhYUxyAjWm7mJ5am/K10UX40RuA6k6Lc7eGtq8iY2xOzy7Vq0GOqhl/xZl5l2FwURZMTPTUww==", + "dev": true + }, "node_modules/@types/socket.io": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/socket.io/-/socket.io-3.0.1.tgz", @@ -2601,9 +2612,9 @@ "dev": true }, "node_modules/@types/triple-beam": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.3.tgz", - "integrity": "sha512-6tOUG+nVHn0cJbVp25JFayS5UE6+xlbcNF9Lo9mU7U0zk3zeUShZied4YEQZjy1JBF043FSkdXw8YkUJuVtB5g==" + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" }, "node_modules/@types/webidl-conversions": { "version": "7.0.3", @@ -2679,9 +2690,9 @@ "dev": true }, "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.12.tgz", + "integrity": "sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ==", "engines": { "node": ">=6.0" } @@ -3063,9 +3074,9 @@ } }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "node_modules/asynckit": { "version": "0.4.0", @@ -3130,11 +3141,11 @@ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, "node_modules/axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", "dependencies": { - "follow-redirects": "^1.15.4", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -6204,16 +6215,16 @@ "dev": true }, "node_modules/express": { - "version": "4.18.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.3.tgz", - "integrity": "sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -6257,9 +6268,9 @@ } }, "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } @@ -6525,9 +6536,9 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -6943,9 +6954,9 @@ } }, "node_modules/get-port": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.0.0.tgz", - "integrity": "sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz", + "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==", "dev": true, "engines": { "node": ">=16" @@ -9632,16 +9643,27 @@ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, "node_modules/logform": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", - "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", "dependencies": { - "@colors/colors": "1.5.0", + "@colors/colors": "1.6.0", "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/logform/node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "engines": { + "node": ">=0.1.90" } }, "node_modules/long": { @@ -10366,9 +10388,9 @@ } }, "node_modules/mongoose": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.2.0.tgz", - "integrity": "sha512-la93n6zCYRbPS+c5N9oTDAktvREy5OT9OCljp1Tah0y3+p8UPMTAoabWaLZMdzYruOtF9/9GRf6MasaZjiZP1A==", + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.2.4.tgz", + "integrity": "sha512-da/r6zpG+2eAXuhBGUnL6jcBd03zlytoCc5/wq+LyTsmrY9hhPQmSpnugwnfqldtBmUOhB6iMLoV4hNtHRq+ww==", "dependencies": { "bson": "^6.2.0", "kareem": "2.5.1", @@ -10756,11 +10778,12 @@ } }, "node_modules/npm-check-updates": { - "version": "16.14.15", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.15.tgz", - "integrity": "sha512-WH0wJ9j6CP7Azl+LLCxWAYqroT2IX02kRIzgK/fg0rPpMbETgHITWBdOPtrv521xmA3JMgeNsQ62zvVtS/nCmQ==", + "version": "16.14.18", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.18.tgz", + "integrity": "sha512-9iaRe9ohx9ykdbLjPRIYcq1A0RkrPYUx9HmQK1JIXhfxtJCNE/+497H9Z4PGH6GWRALbz5KF+1iZoySK2uSEpQ==", "dev": true, "dependencies": { + "@types/semver-utils": "^1.1.1", "chalk": "^5.3.0", "cli-table3": "^0.6.3", "commander": "^10.0.1", @@ -12225,9 +12248,9 @@ } }, "node_modules/postman-sandbox": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.5.0.tgz", - "integrity": "sha512-2YnaxRpwASH6cIEMm4JK2lIgaZ0i94c7VcsiFddfKb+E8nfz2t+e2s7uJIbj+XbxRkHtI+eWNQI7K8YBkl+nMw==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.6.1.tgz", + "integrity": "sha512-5MVsgCtoL9XCoRvCIkD/AnSI4HVQI/bRew8QkKmvktuRyyu/0x4327tNv9zRfqrsM5uMLdk5AWuCGkc/Nr2kCA==", "dependencies": { "lodash": "4.17.21", "postman-collection": "4.4.0", @@ -13846,9 +13869,9 @@ } }, "node_modules/socket.io": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.4.tgz", - "integrity": "sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", @@ -13891,9 +13914,9 @@ } }, "node_modules/socket.io-client": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.4.tgz", - "integrity": "sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", @@ -15257,6 +15280,11 @@ "node": ">=14.0" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", @@ -15694,11 +15722,11 @@ } }, "node_modules/winston": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.10.0.tgz", - "integrity": "sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.12.0.tgz", + "integrity": "sha512-OwbxKaOlESDi01mC9rkM0dQqQt2I8DAUMRLZ/HpbwvDXm85IryEHgoogy5fziQy38PntgZsLlhAYHz//UPHZ5w==", "dependencies": { - "@colors/colors": "1.5.0", + "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", "is-stream": "^2.0.0", @@ -15708,23 +15736,23 @@ "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" + "winston-transport": "^4.7.0" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz", + "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", "dependencies": { "logform": "^2.3.2", "readable-stream": "^3.6.0", "triple-beam": "^1.3.0" }, "engines": { - "node": ">= 6.4.0" + "node": ">= 12.0.0" } }, "node_modules/winston-transport/node_modules/readable-stream": { @@ -15748,6 +15776,14 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/winston/node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/winston/node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -16615,7 +16651,9 @@ "@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true }, "@dabh/diagnostics": { "version": "2.0.3", @@ -16628,11 +16666,11 @@ } }, "@elastic/elasticsearch": { - "version": "8.12.2", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.12.2.tgz", - "integrity": "sha512-04NvH3LIgcv1Uwguorfw2WwzC9Lhfsqs9f0L6uq6MrCw0lqe/HOQ6E8vJ6EkHAA15iEfbhtxOtenbZVVcE+mAQ==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.13.0.tgz", + "integrity": "sha512-OAYgzqArPqgDaIJ1yT0RX31YCgr1lleo53zL+36i23PFjHu08CA6Uq+BmBzEV05yEidl+ILPdeSfF3G8hPG/JQ==", "requires": { - "@elastic/transport": "^8.4.1", + "@elastic/transport": "^8.4.0", "tslib": "^2.4.0" } }, @@ -16868,9 +16906,9 @@ } }, "@hapi/hapi": { - "version": "21.3.3", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.3.tgz", - "integrity": "sha512-6pgwWVl/aSKSNVn86n+mWa06jRqCAKi2adZp/Hti19A0u5x3/6eiKz8UTBPMzfrdGf9WcrYbFBYzWr/qd2s28g==", + "version": "21.3.7", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.7.tgz", + "integrity": "sha512-33J0nreMfqkhY7wwRAZRy+9J+7J4QOH1JtICMjIUmxfaOYSJL/d8JJCtg57SX60944bhlCeu7isb7qyr2jT2oA==", "requires": { "@hapi/accept": "^6.0.1", "@hapi/ammo": "^6.0.1", @@ -17517,15 +17555,15 @@ "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" }, "@mojaloop/central-services-logger": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@mojaloop/central-services-logger/-/central-services-logger-11.2.2.tgz", - "integrity": "sha512-EMlhCs1CoWG4zQfftOKQmJjlaSxUXfXOdNLZmkPn2t0jrt5fvbkfRWl0Nl0ppSRKRto7BEGYD/8RGLnOdYTtgA==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/@mojaloop/central-services-logger/-/central-services-logger-11.3.0.tgz", + "integrity": "sha512-5OcrTRKJhc6nSdbePwYMM/m6+qnJpkvwV7kY+R1oBqo5gFGBFpBx0Hrf7bg+P2cB/M9P7ZK8MrOq41WFHbWt7Q==", "requires": { - "@types/node": "^20.5.7", + "@types/node": "^20.11.30", "parse-strings-in-object": "2.0.0", "rc": "1.2.8", "safe-stable-stringify": "^2.4.3", - "winston": "3.10.0" + "winston": "3.12.0" }, "dependencies": { "parse-strings-in-object": { @@ -18126,9 +18164,12 @@ "dev": true }, "@types/node": { - "version": "20.6.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.3.tgz", - "integrity": "sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA==" + "version": "20.11.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", + "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", + "requires": { + "undici-types": "~5.26.4" + } }, "@types/normalize-package-data": { "version": "2.4.1", @@ -18136,6 +18177,12 @@ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, + "@types/semver-utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/semver-utils/-/semver-utils-1.1.3.tgz", + "integrity": "sha512-T+YwkslhsM+CeuhYUxyAjWm7mJ5am/K10UX40RuA6k6Lc7eGtq8iY2xOzy7Vq0GOqhl/xZl5l2FwURZMTPTUww==", + "dev": true + }, "@types/socket.io": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/socket.io/-/socket.io-3.0.1.tgz", @@ -18151,9 +18198,9 @@ "dev": true }, "@types/triple-beam": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.3.tgz", - "integrity": "sha512-6tOUG+nVHn0cJbVp25JFayS5UE6+xlbcNF9Lo9mU7U0zk3zeUShZied4YEQZjy1JBF043FSkdXw8YkUJuVtB5g==" + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" }, "@types/webidl-conversions": { "version": "7.0.3", @@ -18218,9 +18265,9 @@ "dev": true }, "adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==" + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.12.tgz", + "integrity": "sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ==" }, "agent-base": { "version": "6.0.2", @@ -18508,9 +18555,9 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" }, "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "asynckit": { "version": "0.4.0", @@ -18554,11 +18601,11 @@ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, "axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", "requires": { - "follow-redirects": "^1.15.4", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -20861,16 +20908,16 @@ "dev": true }, "express": { - "version": "4.18.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.3.tgz", - "integrity": "sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -20899,9 +20946,9 @@ }, "dependencies": { "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" }, "debug": { "version": "2.6.9", @@ -21137,9 +21184,9 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "for-each": { "version": "0.3.3", @@ -21446,9 +21493,9 @@ } }, "get-port": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.0.0.tgz", - "integrity": "sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz", + "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==", "dev": true }, "get-stdin": { @@ -23496,16 +23543,23 @@ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, "logform": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", - "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", "requires": { - "@colors/colors": "1.5.0", + "@colors/colors": "1.6.0", "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", "triple-beam": "^1.3.0" + }, + "dependencies": { + "@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==" + } } }, "long": { @@ -24041,9 +24095,9 @@ } }, "mongoose": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.2.0.tgz", - "integrity": "sha512-la93n6zCYRbPS+c5N9oTDAktvREy5OT9OCljp1Tah0y3+p8UPMTAoabWaLZMdzYruOtF9/9GRf6MasaZjiZP1A==", + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.2.4.tgz", + "integrity": "sha512-da/r6zpG+2eAXuhBGUnL6jcBd03zlytoCc5/wq+LyTsmrY9hhPQmSpnugwnfqldtBmUOhB6iMLoV4hNtHRq+ww==", "requires": { "bson": "^6.2.0", "kareem": "2.5.1", @@ -24348,11 +24402,12 @@ } }, "npm-check-updates": { - "version": "16.14.15", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.15.tgz", - "integrity": "sha512-WH0wJ9j6CP7Azl+LLCxWAYqroT2IX02kRIzgK/fg0rPpMbETgHITWBdOPtrv521xmA3JMgeNsQ62zvVtS/nCmQ==", + "version": "16.14.18", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.18.tgz", + "integrity": "sha512-9iaRe9ohx9ykdbLjPRIYcq1A0RkrPYUx9HmQK1JIXhfxtJCNE/+497H9Z4PGH6GWRALbz5KF+1iZoySK2uSEpQ==", "dev": true, "requires": { + "@types/semver-utils": "^1.1.1", "chalk": "^5.3.0", "cli-table3": "^0.6.3", "commander": "^10.0.1", @@ -25454,9 +25509,9 @@ } }, "postman-sandbox": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.5.0.tgz", - "integrity": "sha512-2YnaxRpwASH6cIEMm4JK2lIgaZ0i94c7VcsiFddfKb+E8nfz2t+e2s7uJIbj+XbxRkHtI+eWNQI7K8YBkl+nMw==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.6.1.tgz", + "integrity": "sha512-5MVsgCtoL9XCoRvCIkD/AnSI4HVQI/bRew8QkKmvktuRyyu/0x4327tNv9zRfqrsM5uMLdk5AWuCGkc/Nr2kCA==", "requires": { "lodash": "4.17.21", "postman-collection": "4.4.0", @@ -26707,9 +26762,9 @@ "devOptional": true }, "socket.io": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.4.tgz", - "integrity": "sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", @@ -26737,9 +26792,9 @@ } }, "socket.io-client": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.4.tgz", - "integrity": "sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", @@ -27781,6 +27836,11 @@ "@fastify/busboy": "^2.0.0" } }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", @@ -28100,11 +28160,11 @@ } }, "winston": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.10.0.tgz", - "integrity": "sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.12.0.tgz", + "integrity": "sha512-OwbxKaOlESDi01mC9rkM0dQqQt2I8DAUMRLZ/HpbwvDXm85IryEHgoogy5fziQy38PntgZsLlhAYHz//UPHZ5w==", "requires": { - "@colors/colors": "1.5.0", + "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", "is-stream": "^2.0.0", @@ -28114,9 +28174,14 @@ "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" + "winston-transport": "^4.7.0" }, "dependencies": { + "@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==" + }, "readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -28138,9 +28203,9 @@ } }, "winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz", + "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", "requires": { "logform": "^2.3.2", "readable-stream": "^3.6.0", diff --git a/package.json b/package.json index 7dcc168b..fd4633e7 100644 --- a/package.json +++ b/package.json @@ -58,27 +58,27 @@ "genexec": "pkg -t node8-win ." }, "dependencies": { - "@elastic/elasticsearch": "8.12.2", + "@elastic/elasticsearch": "8.13.0", "@hapi/basic": "7.0.2", "@hapi/boom": "10.0.1", "@hapi/good": "9.0.1", - "@hapi/hapi": "21.3.3", + "@hapi/hapi": "21.3.7", "@hapi/inert": "7.1.0", "@hapi/vision": "7.0.3", - "@mojaloop/central-services-logger": "11.2.2", + "@mojaloop/central-services-logger": "11.3.0", "@mojaloop/ml-testing-toolkit-shared-lib": "14.0.1", "@mojaloop/sdk-standard-components": "^17.1.3", "@now-ims/hapi-now-auth": "2.1.0", "@types/socket.io": "3.0.1", - "adm-zip": "0.5.10", + "adm-zip": "0.5.12", "atob": "2.1.2", - "axios": "1.6.7", + "axios": "1.6.8", "chai": "4.4.1", "cookie-parser": "1.4.6", "cookies": "0.9.1", "cors": "2.8.5", "dotenv": "16.4.5", - "express": "4.18.3", + "express": "4.19.2", "express-validator": "7.0.1", "fs": "0.0.1-security", "handlebars": "4.7.8", @@ -91,7 +91,7 @@ "json-rules-engine": "6.5.0", "lodash": "4.17.21", "mongo-uri-builder": "4.0.0", - "mongoose": "8.2.0", + "mongoose": "8.2.4", "multer": "1.4.3", "mustache": "4.2.0", "mv": "2.1.1", @@ -104,14 +104,14 @@ "passport-jwt": "4.0.1", "path": "0.12.7", "postman-collection": "4.4.0", - "postman-sandbox": "4.5.0", + "postman-sandbox": "4.6.1", "rc": "1.2.8", "request": "2.88.2", "request-promise-native": "1.0.8", "request-to-curl": "0.1.6", "selectn": "1.1.2", - "socket.io": "4.7.4", - "socket.io-client": "4.7.4", + "socket.io": "4.7.5", + "socket.io-client": "4.7.5", "uuid": "9.0.1", "uuid4": "2.0.3", "ws": "8.16.0" @@ -119,11 +119,11 @@ "devDependencies": { "@types/jest": "29.5.12", "audit-ci": "6.6.1", - "get-port": "7.0.0", + "get-port": "7.1.0", "jest": "29.7.0", "jest-junit": "16.0.0", "nodemon": "3.1.0", - "npm-check-updates": "16.14.15", + "npm-check-updates": "16.14.18", "nyc": "15.1.0", "parse-strings-in-object": "1.6.0", "pre-commit": "1.2.2", diff --git a/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/api_spec.yaml b/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/api_spec.yaml index 63b6243c..fa88082e 100644 --- a/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/api_spec.yaml +++ b/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/api_spec.yaml @@ -73,6 +73,7 @@ paths: backend logic such as party verification, quoted fees assessments etc... tags: - Transfers + operationId: TransfersPost requestBody: description: Transfer request body content: @@ -109,6 +110,7 @@ paths: information on modes of transfer. tags: - Transfers + operationId: TransfersPut requestBody: content: application/json: @@ -134,6 +136,7 @@ paths: for the creation of the transfer. tags: - Transfers + operationId: TransfersGet parameters: - $ref: '#/components/parameters/transferId' responses: @@ -157,6 +160,7 @@ paths: of funds from payer DFSP to payees' DFSP. tags: - BulkTransfers + operationId: BulkTransfersPost requestBody: description: Bulk transfer request body content: @@ -183,6 +187,7 @@ paths: was used for the creation of the bulk transfer. tags: - BulkTransfers + operationId: BulkTransfersGet parameters: - $ref: '#/components/parameters/bulkTransferId' responses: @@ -206,6 +211,7 @@ paths: fascilitate funds transfer from payer DFSP to payees' DFSP. tags: - BulkQuotes + operationId: BulkQuotesPost requestBody: description: Bulk quote request body content: @@ -232,6 +238,7 @@ paths: used for the creation of the bulk quote. tags: - BulkQuotes + operationId: BulkQuotesGet parameters: - $ref: '#/components/parameters/bulkQuoteId' responses: @@ -260,6 +267,7 @@ paths: 2. Transaction Request. This request enables a Payee to request Payer to send electronic funds to the Payee. tags: - RequestToPay + operationId: RequestToPayPost requestBody: description: RequestToPay request body content: @@ -312,6 +320,7 @@ paths: backend logic such as party verification, quoted fees assessments etc... tags: - RequestToPayTransfer + operationId: RequestToPayTransferPost requestBody: description: Request To Pay Transfer request body content: @@ -347,6 +356,7 @@ paths: more information on modes of transfer. tags: - RequestToPayTransferID + operationId: RequestToPayTransferPut requestBody: content: application/json: @@ -375,6 +385,7 @@ paths: Caller DFSP is used as the account source FSP information tags: - Accounts + operationId: AccountsPost requestBody: description: Identities list request body content: diff --git a/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/response_map.json b/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/response_map.json index 1ad829f3..d1847b9e 100644 --- a/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/response_map.json +++ b/spec_files/api_definitions/mojaloop_sdk_outbound_scheme_adapter_1.0/response_map.json @@ -17,5 +17,19 @@ } } } + }, + "/transfers": { + "post": { + "response": { + "bodyOverride": {} + } + } + }, + "/transfers/{transferId}": { + "put": { + "response": { + "bodyOverride": {} + } + } } } \ No newline at end of file diff --git a/src/lib/api-routes/outbound.js b/src/lib/api-routes/outbound.js index cd44a7d3..9ddcfcba 100644 --- a/src/lib/api-routes/outbound.js +++ b/src/lib/api-routes/outbound.js @@ -77,9 +77,13 @@ router.post('/template/:traceID', [ const inputJson = JSON.parse(JSON.stringify(req.body)) // TODO: Change the following value to the dfspId based on the login incase HOSTING_ENABLED const dfspId = req.user ? req.user.dfspId : null - outbound.OutboundSend(inputJson, traceID, dfspId) - - return res.status(200).json({ status: 'OK' }) + if (req.query.sync && req.query.sync === 'true') { + const result = await outbound.OutboundSend(inputJson, traceID, dfspId, true) + return res.status(200).json(result) + } else { + outbound.OutboundSend(inputJson, traceID, dfspId) + return res.status(200).json({ status: 'OK' }) + } } catch (err) { res.status(500).json({ error: err && err.message }) } diff --git a/src/lib/db/models/mongoDBWrapper.js b/src/lib/db/models/mongoDBWrapper.js index dff2d135..2c1fb2a7 100644 --- a/src/lib/db/models/mongoDBWrapper.js +++ b/src/lib/db/models/mongoDBWrapper.js @@ -60,10 +60,9 @@ const models = { }) } -process.on('SIGINT', () => { - mongoose.connection.close(() => { - process.exit(0) - }) +process.on('SIGINT', async () => { + await mongoose.connection.close() + process.exit(0) }) module.exports = { diff --git a/src/lib/mocking/openApiMockHandler.js b/src/lib/mocking/openApiMockHandler.js index ba292a7b..4834b31b 100644 --- a/src/lib/mocking/openApiMockHandler.js +++ b/src/lib/mocking/openApiMockHandler.js @@ -164,17 +164,22 @@ module.exports.handleRequest = async (req, h) => { req.customInfo.negotiatedContentType = versionNegotiationResult.responseContentTypeHeader selectedApi = apis[versionNegotiationResult.negotiatedIndex] } - return selectedApi.openApiBackendObject.handleRequest( - { - method: req.method, - path: req.path, - body: req.payload, - query: req.query, - headers: req.headers - }, - req, - h - ) + try { + return await selectedApi.openApiBackendObject.handleRequest( + { + method: req.method, + path: req.path, + body: req.payload, + query: req.query, + headers: req.headers + }, + req, + h + ) + } catch (err) { + customLogger.logMessage('error', err.message, { request: req }) + return h.response({ error: 'Not Found' }).code(404) + } } const pickApiByMethodPathHostnameAndPrefix = (req) => { diff --git a/src/lib/test-outbound/outbound-initiator.js b/src/lib/test-outbound/outbound-initiator.js index 90f4c2ce..a52091d3 100644 --- a/src/lib/test-outbound/outbound-initiator.js +++ b/src/lib/test-outbound/outbound-initiator.js @@ -65,7 +65,7 @@ const getTracing = (traceID, dfspId) => { return tracing } -const OutboundSend = async (inputTemplate, traceID, dfspId) => { +const OutboundSend = async (inputTemplate, traceID, dfspId, sync = false) => { const totalCounts = getTotalCounts(inputTemplate) const globalConfig = { broadcastOutboundProgressEnabled: true, @@ -98,18 +98,21 @@ const OutboundSend = async (inputTemplate, traceID, dfspId) => { const completedTimeStamp = new Date() const runDurationMs = completedTimeStamp.getTime() - startedTimeStamp.getTime() // Send the total result to client + const runtimeInformation = { + testReportId: inputTemplate.name + '_' + completedTimeStamp.toISOString(), + completedTimeISO: completedTimeStamp.toISOString(), + startedTime: startedTimeStamp.toUTCString(), + completedTime: completedTimeStamp, + completedTimeUTC: completedTimeStamp.toUTCString(), + runDurationMs, + avgResponseTime: 'NA', + totalAssertions: 0, + totalPassedAssertions: 0 + } + if (sync) { + return generateFinalReport(inputTemplate, runtimeInformation) + } if (tracing.outboundID) { - const runtimeInformation = { - testReportId: inputTemplate.name + '_' + completedTimeStamp.toISOString(), - completedTimeISO: completedTimeStamp.toISOString(), - startedTime: startedTimeStamp.toUTCString(), - completedTime: completedTimeStamp, - completedTimeUTC: completedTimeStamp.toUTCString(), - runDurationMs, - avgResponseTime: 'NA', - totalAssertions: 0, - totalPassedAssertions: 0 - } const totalResult = generateFinalReport(inputTemplate, runtimeInformation) if (Config.getSystemConfig().HOSTING_ENABLED) { dbAdapter.upsert('reports', totalResult, { dfspId }) diff --git a/test/unit/lib/test-outbound/outbound-initiator.test.js b/test/unit/lib/test-outbound/outbound-initiator.test.js index 985e3b51..37319a92 100644 --- a/test/unit/lib/test-outbound/outbound-initiator.test.js +++ b/test/unit/lib/test-outbound/outbound-initiator.test.js @@ -1708,7 +1708,24 @@ describe('Outbound Initiator Functions', () => { await OutboundInitiator.OutboundSend(sampleTemplateModified4, '123') expect(spyDbAdapterUpsertReport).toBeCalled() }) - + it('OutboundSend with sync option enabled', async () => { + axios.mockImplementation(() => Promise.resolve({ + status: 200, + statusText: 'OK', + data: {}, + request: { + toCurl: () => '' + } + })) + SpyGetApiDefinitions.mockResolvedValue([{ + specFile: 'spec_files/api_definitions/fspiop_1.0/api_spec.yaml', + type: 'fspiop' + }]) + const syncResp = await OutboundInitiator.OutboundSend(sampleTemplate, 'aabb123aabb', null, true) + expect(syncResp).not.toBeNull + expect(syncResp.test_cases[0]?.requests[0]).toHaveProperty('status') + expect(syncResp.test_cases[0]?.requests[0]).toHaveProperty('response') + }) }) describe('terminateOutbound', () => {