From 68c0e74c5b58a1921484935769e93b5c772ebeca Mon Sep 17 00:00:00 2001 From: "adedotun@flutterwavego.com" Date: Fri, 16 Jan 2026 16:06:34 +0100 Subject: [PATCH 1/6] Node-Forge Update Node-Forge Update --- package-lock.json | 13 +++++++------ package.json | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 83ff3b8..c73538e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "flutterwave-node-v3", - "version": "1.1.10", + "version": "1.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "flutterwave-node-v3", - "version": "1.1.10", + "version": "1.2.0", "license": "MIT", "dependencies": { "axios": "^1.8.4", @@ -15,7 +15,7 @@ "eslint-config-prettier": "^8.6.0", "joi": "^17.8.3", "md5": "^2.3.0", - "node-forge": "1.3.0", + "node-forge": "^1.3.2", "q": "^1.5.1", "sha.js": "^2.4.11", "winston": "^3.8.2" @@ -3656,9 +3656,10 @@ } }, "node_modules/node-forge": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.0.tgz", - "integrity": "sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } diff --git a/package.json b/package.json index b6aa08c..23f0ee6 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "eslint-config-prettier": "^8.6.0", "joi": "^17.8.3", "md5": "^2.3.0", - "node-forge": "1.3.0", + "node-forge": "^1.3.2", "q": "^1.5.1", "sha.js": "^2.4.11", "winston": "^3.8.2" From b44b91a80f8f5c80d215bcbcae30f23febdc9bcd Mon Sep 17 00:00:00 2001 From: "adedotun@flutterwavego.com" Date: Wed, 28 Jan 2026 11:13:09 +0100 Subject: [PATCH 2/6] Coverage Improvment And Dependency Update. Updated Test Files, Added New Test Files. Updated packages with vulnerabilities. --- .../41a907c4-45a9-4ac9-9cda-86b9cfb33510.json | 1 + .../5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json | 1 + .../41a907c4-45a9-4ac9-9cda-86b9cfb33510.json | 1 + .../5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json | 1 + .nyc_output/processinfo/index.json | 1 + coverage/lcov-report/base.css | 224 ++ coverage/lcov-report/block-navigation.js | 87 + coverage/lcov-report/favicon.png | Bin 0 -> 445 bytes coverage/lcov-report/index.html | 356 +++ coverage/lcov-report/lib/index.html | 341 +++ coverage/lcov-report/lib/rave.banks.js.html | 133 + coverage/lcov-report/lib/rave.base.js.html | 577 ++++ .../lib/rave.beneficiaries.js.html | 148 + coverage/lcov-report/lib/rave.bills.js.html | 256 ++ coverage/lcov-report/lib/rave.charge.js.html | 259 ++ coverage/lcov-report/lib/rave.ebills.js.html | 136 + coverage/lcov-report/lib/rave.misc.js.html | 169 ++ .../lcov-report/lib/rave.mobile_money.js.html | 196 ++ coverage/lcov-report/lib/rave.otps.js.html | 148 + .../lcov-report/lib/rave.payment_plan.js.html | 202 ++ .../lcov-report/lib/rave.settlements.js.html | 148 + .../lib/rave.subscriptions.js.html | 187 ++ .../lcov-report/lib/rave.tokenized.js.html | 220 ++ .../lcov-report/lib/rave.transactions.js.html | 199 ++ .../lcov-report/lib/rave.transfers.js.html | 172 ++ coverage/lcov-report/lib/security.js.html | 292 ++ coverage/lcov-report/prettify.css | 1 + coverage/lcov-report/prettify.js | 2 + .../lcov-report/services/banks/index.html | 131 + .../banks/rave.banks-branches.js.html | 136 + .../services/banks/rave.banks-country.js.html | 136 + .../services/beneficiaries/index.html | 161 ++ .../beneficiaries/rave.create.js.html | 121 + .../beneficiaries/rave.delete.js.html | 133 + .../beneficiaries/rave.retrieve.js.html | 121 + .../rave.single.retrieve.js.html | 133 + .../lcov-report/services/bills/index.html | 266 ++ .../bills/rave.amount.to-be-paid.js.html | 133 + .../bills/rave.create-bill.payment.js.html | 121 + .../bills/rave.create-bulk.bills.js.html | 121 + .../rave.create-order-billing-code.js.html | 130 + .../bills/rave.get-bill-payments.js.html | 133 + .../bills/rave.get.bill-categories.js.html | 121 + .../rave.get.bill-payment-agencies.js.html | 121 + .../services/bills/rave.get.status.js.html | 133 + .../rave.products-under-an-agency.js.html | 136 + .../bills/rave.update-bills.order.js.html | 133 + .../services/bills/rave.validate-bill.js.html | 136 + .../services/charge/encryp.js.html | 130 + .../lcov-report/services/charge/index.html | 296 ++ .../services/charge/rave.ach.js.html | 130 + .../services/charge/rave.applepay.js.html | 130 + .../charge/rave.bank.transfer.js.html | 130 + .../services/charge/rave.card.charge.js.html | 151 + .../services/charge/rave.enaira.js.html | 130 + .../services/charge/rave.fawrypay.js.html | 130 + .../services/charge/rave.googlepay.js.html | 130 + .../services/charge/rave.ng-banks.js.html | 121 + .../services/charge/rave.uk-banks.js.html | 130 + .../services/charge/rave.ussd.js.html | 121 + .../services/charge/rave.validate.js.html | 121 + .../services/charge/rave.voucher.js.html | 274 ++ .../lcov-report/services/ebills/index.html | 131 + .../services/ebills/rave.order.js.html | 121 + .../services/ebills/rave.update.js.html | 133 + coverage/lcov-report/services/misc/index.html | 176 ++ .../misc/rave.balances-currency.js.html | 136 + .../services/misc/rave.balances.js.html | 106 + .../services/misc/rave.initiate.bvn.js.html | 121 + .../misc/rave.resolve.account.js.html | 124 + .../services/misc/rave.verify.bvn.js.html | 136 + .../services/mobile-money/index.html | 206 ++ .../mobile-money/rave.francophone.js.html | 130 + .../services/mobile-money/rave.ghana.js.html | 130 + .../services/mobile-money/rave.mpesa.js.html | 121 + .../services/mobile-money/rave.rwanda.js.html | 130 + .../mobile-money/rave.tanzania.js.html | 130 + .../services/mobile-money/rave.uganda.js.html | 130 + .../services/mobile-money/rave.zambia.js.html | 130 + coverage/lcov-report/services/otps/index.html | 131 + .../services/otps/rave.create.js.html | 121 + .../services/otps/rave.validate.js.html | 130 + .../services/payment-plans/index.html | 176 ++ .../payment-plans/rave.cancel.js.html | 133 + .../payment-plans/rave.create.js.html | 121 + .../payment-plans/rave.retrieve.all.js.html | 106 + .../rave.retrieve.single.js.html | 133 + .../payment-plans/rave.update.js.html | 133 + .../services/schema/auxillary.js.html | 595 ++++ .../lcov-report/services/schema/base.js.html | 277 ++ .../lcov-report/services/schema/bill.js.html | 364 +++ .../services/schema/create.js.html | 2557 +++++++++++++++++ .../lcov-report/services/schema/index.html | 161 ++ .../services/settlements/index.html | 131 + .../settlements/rave.retrieve-all.js.html | 121 + .../settlements/rave.retrieve.js.html | 133 + .../services/subscriptions/index.html | 161 ++ .../subscriptions/rave.activate.js.html | 133 + .../subscriptions/rave.cancel.js.html | 133 + .../subscriptions/rave.retrieve.all.js.html | 121 + .../rave.retrieve.single.js.html | 121 + .../services/tokenized-charges/index.html | 176 ++ .../rave.bulk.charge.js.html | 130 + .../tokenized-charges/rave.charge.js.html | 121 + .../rave.retrieve.a.bulk.js.html | 133 + .../rave.retrieve.charge.transactions.js.html | 130 + .../rave.update.tokens.js.html | 133 + .../services/transactions/index.html | 206 ++ .../services/transactions/rave.events.js.html | 136 + .../services/transactions/rave.fee.js.html | 136 + .../services/transactions/rave.refund.js.html | 133 + .../transactions/rave.resend-hooks.js.html | 133 + .../transactions/rave.retrieve.js.html | 121 + .../transactions/rave.verify-by-txref.js.html | 133 + .../services/transactions/rave.verify.js.html | 136 + .../lcov-report/services/transfers/index.html | 191 ++ .../services/transfers/rave.bulk.js.html | 121 + .../services/transfers/rave.fee.js.html | 136 + .../services/transfers/rave.fetch.js.html | 136 + .../services/transfers/rave.initiate.js.html | 121 + .../transfers/rave.retrieve.transfers.js.html | 106 + .../services/transfers/rave.wallet.js.html | 121 + coverage/lcov-report/sort-arrow-sprite.png | Bin 0 -> 138 bytes coverage/lcov-report/sorter.js | 196 ++ coverage/lcov-report/utils/build.js.html | 238 ++ coverage/lcov-report/utils/error.js.html | 142 + coverage/lcov-report/utils/index.html | 176 ++ coverage/lcov-report/utils/logger.js.html | 184 ++ coverage/lcov-report/utils/rave.utils.js.html | 130 + coverage/lcov-report/utils/validator.js.html | 121 + coverage/lcov.info | 2429 ++++++++++++++++ lib/rave.bills.js | 6 +- lib/security.js | 5 +- package-lock.json | 1561 +++++----- package.json | 12 +- services/schema/create.js | 152 +- test/rave.bank.test.js | 116 +- test/rave.base.test.js | 138 + test/rave.beneficiaries.test.js | 179 +- test/rave.bills.test.js | 259 +- test/rave.card.charge.test.js | 132 + test/rave.charge.test.js | 1356 ++++++--- test/rave.ebills.test.js | 103 +- test/rave.misc.test.js | 291 +- test/rave.momo.test.js | 638 +++- test/rave.otp.test.js | 69 +- test/rave.payment-plan.test.js | 353 +-- test/rave.security.test.js | 47 + test/rave.settlements.test.js | 452 +-- test/rave.subscriptions.test.js | 105 +- test/rave.tokenization.test.js | 287 ++ test/rave.transactions.test.js | 272 +- test/rave.transfer.test.js | 658 +---- test/rave.utils.build.test.js | 74 + test/rave.utils.error.test.js | 32 + test/rave.utils.test.js | 28 + ...ards.test.js => rave.virtualcards.test.js} | 0 utils/error.js | 2 +- 158 files changed, 28148 insertions(+), 3505 deletions(-) create mode 100644 .nyc_output/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json create mode 100644 .nyc_output/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json create mode 100644 .nyc_output/processinfo/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json create mode 100644 .nyc_output/processinfo/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json create mode 100644 .nyc_output/processinfo/index.json create mode 100644 coverage/lcov-report/base.css create mode 100644 coverage/lcov-report/block-navigation.js create mode 100644 coverage/lcov-report/favicon.png create mode 100644 coverage/lcov-report/index.html create mode 100644 coverage/lcov-report/lib/index.html create mode 100644 coverage/lcov-report/lib/rave.banks.js.html create mode 100644 coverage/lcov-report/lib/rave.base.js.html create mode 100644 coverage/lcov-report/lib/rave.beneficiaries.js.html create mode 100644 coverage/lcov-report/lib/rave.bills.js.html create mode 100644 coverage/lcov-report/lib/rave.charge.js.html create mode 100644 coverage/lcov-report/lib/rave.ebills.js.html create mode 100644 coverage/lcov-report/lib/rave.misc.js.html create mode 100644 coverage/lcov-report/lib/rave.mobile_money.js.html create mode 100644 coverage/lcov-report/lib/rave.otps.js.html create mode 100644 coverage/lcov-report/lib/rave.payment_plan.js.html create mode 100644 coverage/lcov-report/lib/rave.settlements.js.html create mode 100644 coverage/lcov-report/lib/rave.subscriptions.js.html create mode 100644 coverage/lcov-report/lib/rave.tokenized.js.html create mode 100644 coverage/lcov-report/lib/rave.transactions.js.html create mode 100644 coverage/lcov-report/lib/rave.transfers.js.html create mode 100644 coverage/lcov-report/lib/security.js.html create mode 100644 coverage/lcov-report/prettify.css create mode 100644 coverage/lcov-report/prettify.js create mode 100644 coverage/lcov-report/services/banks/index.html create mode 100644 coverage/lcov-report/services/banks/rave.banks-branches.js.html create mode 100644 coverage/lcov-report/services/banks/rave.banks-country.js.html create mode 100644 coverage/lcov-report/services/beneficiaries/index.html create mode 100644 coverage/lcov-report/services/beneficiaries/rave.create.js.html create mode 100644 coverage/lcov-report/services/beneficiaries/rave.delete.js.html create mode 100644 coverage/lcov-report/services/beneficiaries/rave.retrieve.js.html create mode 100644 coverage/lcov-report/services/beneficiaries/rave.single.retrieve.js.html create mode 100644 coverage/lcov-report/services/bills/index.html create mode 100644 coverage/lcov-report/services/bills/rave.amount.to-be-paid.js.html create mode 100644 coverage/lcov-report/services/bills/rave.create-bill.payment.js.html create mode 100644 coverage/lcov-report/services/bills/rave.create-bulk.bills.js.html create mode 100644 coverage/lcov-report/services/bills/rave.create-order-billing-code.js.html create mode 100644 coverage/lcov-report/services/bills/rave.get-bill-payments.js.html create mode 100644 coverage/lcov-report/services/bills/rave.get.bill-categories.js.html create mode 100644 coverage/lcov-report/services/bills/rave.get.bill-payment-agencies.js.html create mode 100644 coverage/lcov-report/services/bills/rave.get.status.js.html create mode 100644 coverage/lcov-report/services/bills/rave.products-under-an-agency.js.html create mode 100644 coverage/lcov-report/services/bills/rave.update-bills.order.js.html create mode 100644 coverage/lcov-report/services/bills/rave.validate-bill.js.html create mode 100644 coverage/lcov-report/services/charge/encryp.js.html create mode 100644 coverage/lcov-report/services/charge/index.html create mode 100644 coverage/lcov-report/services/charge/rave.ach.js.html create mode 100644 coverage/lcov-report/services/charge/rave.applepay.js.html create mode 100644 coverage/lcov-report/services/charge/rave.bank.transfer.js.html create mode 100644 coverage/lcov-report/services/charge/rave.card.charge.js.html create mode 100644 coverage/lcov-report/services/charge/rave.enaira.js.html create mode 100644 coverage/lcov-report/services/charge/rave.fawrypay.js.html create mode 100644 coverage/lcov-report/services/charge/rave.googlepay.js.html create mode 100644 coverage/lcov-report/services/charge/rave.ng-banks.js.html create mode 100644 coverage/lcov-report/services/charge/rave.uk-banks.js.html create mode 100644 coverage/lcov-report/services/charge/rave.ussd.js.html create mode 100644 coverage/lcov-report/services/charge/rave.validate.js.html create mode 100644 coverage/lcov-report/services/charge/rave.voucher.js.html create mode 100644 coverage/lcov-report/services/ebills/index.html create mode 100644 coverage/lcov-report/services/ebills/rave.order.js.html create mode 100644 coverage/lcov-report/services/ebills/rave.update.js.html create mode 100644 coverage/lcov-report/services/misc/index.html create mode 100644 coverage/lcov-report/services/misc/rave.balances-currency.js.html create mode 100644 coverage/lcov-report/services/misc/rave.balances.js.html create mode 100644 coverage/lcov-report/services/misc/rave.initiate.bvn.js.html create mode 100644 coverage/lcov-report/services/misc/rave.resolve.account.js.html create mode 100644 coverage/lcov-report/services/misc/rave.verify.bvn.js.html create mode 100644 coverage/lcov-report/services/mobile-money/index.html create mode 100644 coverage/lcov-report/services/mobile-money/rave.francophone.js.html create mode 100644 coverage/lcov-report/services/mobile-money/rave.ghana.js.html create mode 100644 coverage/lcov-report/services/mobile-money/rave.mpesa.js.html create mode 100644 coverage/lcov-report/services/mobile-money/rave.rwanda.js.html create mode 100644 coverage/lcov-report/services/mobile-money/rave.tanzania.js.html create mode 100644 coverage/lcov-report/services/mobile-money/rave.uganda.js.html create mode 100644 coverage/lcov-report/services/mobile-money/rave.zambia.js.html create mode 100644 coverage/lcov-report/services/otps/index.html create mode 100644 coverage/lcov-report/services/otps/rave.create.js.html create mode 100644 coverage/lcov-report/services/otps/rave.validate.js.html create mode 100644 coverage/lcov-report/services/payment-plans/index.html create mode 100644 coverage/lcov-report/services/payment-plans/rave.cancel.js.html create mode 100644 coverage/lcov-report/services/payment-plans/rave.create.js.html create mode 100644 coverage/lcov-report/services/payment-plans/rave.retrieve.all.js.html create mode 100644 coverage/lcov-report/services/payment-plans/rave.retrieve.single.js.html create mode 100644 coverage/lcov-report/services/payment-plans/rave.update.js.html create mode 100644 coverage/lcov-report/services/schema/auxillary.js.html create mode 100644 coverage/lcov-report/services/schema/base.js.html create mode 100644 coverage/lcov-report/services/schema/bill.js.html create mode 100644 coverage/lcov-report/services/schema/create.js.html create mode 100644 coverage/lcov-report/services/schema/index.html create mode 100644 coverage/lcov-report/services/settlements/index.html create mode 100644 coverage/lcov-report/services/settlements/rave.retrieve-all.js.html create mode 100644 coverage/lcov-report/services/settlements/rave.retrieve.js.html create mode 100644 coverage/lcov-report/services/subscriptions/index.html create mode 100644 coverage/lcov-report/services/subscriptions/rave.activate.js.html create mode 100644 coverage/lcov-report/services/subscriptions/rave.cancel.js.html create mode 100644 coverage/lcov-report/services/subscriptions/rave.retrieve.all.js.html create mode 100644 coverage/lcov-report/services/subscriptions/rave.retrieve.single.js.html create mode 100644 coverage/lcov-report/services/tokenized-charges/index.html create mode 100644 coverage/lcov-report/services/tokenized-charges/rave.bulk.charge.js.html create mode 100644 coverage/lcov-report/services/tokenized-charges/rave.charge.js.html create mode 100644 coverage/lcov-report/services/tokenized-charges/rave.retrieve.a.bulk.js.html create mode 100644 coverage/lcov-report/services/tokenized-charges/rave.retrieve.charge.transactions.js.html create mode 100644 coverage/lcov-report/services/tokenized-charges/rave.update.tokens.js.html create mode 100644 coverage/lcov-report/services/transactions/index.html create mode 100644 coverage/lcov-report/services/transactions/rave.events.js.html create mode 100644 coverage/lcov-report/services/transactions/rave.fee.js.html create mode 100644 coverage/lcov-report/services/transactions/rave.refund.js.html create mode 100644 coverage/lcov-report/services/transactions/rave.resend-hooks.js.html create mode 100644 coverage/lcov-report/services/transactions/rave.retrieve.js.html create mode 100644 coverage/lcov-report/services/transactions/rave.verify-by-txref.js.html create mode 100644 coverage/lcov-report/services/transactions/rave.verify.js.html create mode 100644 coverage/lcov-report/services/transfers/index.html create mode 100644 coverage/lcov-report/services/transfers/rave.bulk.js.html create mode 100644 coverage/lcov-report/services/transfers/rave.fee.js.html create mode 100644 coverage/lcov-report/services/transfers/rave.fetch.js.html create mode 100644 coverage/lcov-report/services/transfers/rave.initiate.js.html create mode 100644 coverage/lcov-report/services/transfers/rave.retrieve.transfers.js.html create mode 100644 coverage/lcov-report/services/transfers/rave.wallet.js.html create mode 100644 coverage/lcov-report/sort-arrow-sprite.png create mode 100644 coverage/lcov-report/sorter.js create mode 100644 coverage/lcov-report/utils/build.js.html create mode 100644 coverage/lcov-report/utils/error.js.html create mode 100644 coverage/lcov-report/utils/index.html create mode 100644 coverage/lcov-report/utils/logger.js.html create mode 100644 coverage/lcov-report/utils/rave.utils.js.html create mode 100644 coverage/lcov-report/utils/validator.js.html create mode 100644 coverage/lcov.info create mode 100644 test/rave.base.test.js create mode 100644 test/rave.card.charge.test.js create mode 100644 test/rave.security.test.js create mode 100644 test/rave.tokenization.test.js create mode 100644 test/rave.utils.build.test.js create mode 100644 test/rave.utils.error.test.js create mode 100644 test/rave.utils.test.js rename test/{rave.cards.test.js => rave.virtualcards.test.js} (100%) diff --git a/.nyc_output/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json b/.nyc_output/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.nyc_output/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/.nyc_output/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json b/.nyc_output/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json new file mode 100644 index 0000000..1c5bdba --- /dev/null +++ b/.nyc_output/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json @@ -0,0 +1 @@ +{"/Users/erikobatomi/Documents/Node-v3/lib/rave.banks.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.banks.js","statementMap":{"0":{"start":{"line":1,"column":23},"end":{"line":1,"column":71}},"1":{"start":{"line":2,"column":22},"end":{"line":2,"column":69}},"2":{"start":{"line":6,"column":1},"end":{"line":9,"column":2}},"3":{"start":{"line":8,"column":2},"end":{"line":8,"column":40}},"4":{"start":{"line":11,"column":1},"end":{"line":15,"column":2}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":39}},"6":{"start":{"line":17,"column":0},"end":{"line":17,"column":22}}},"fnMap":{"0":{"name":"Bank","decl":{"start":{"line":4,"column":9},"end":{"line":4,"column":13}},"loc":{"start":{"line":4,"column":24},"end":{"line":16,"column":1}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":18}},"loc":{"start":{"line":6,"column":33},"end":{"line":9,"column":2}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":11,"column":16},"end":{"line":11,"column":17}},"loc":{"start":{"line":11,"column":32},"end":{"line":15,"column":2}},"line":11}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":2,"5":1,"6":1},"f":{"0":2,"1":1,"2":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8e27421519108d9f267ac38265b56466d8775a71","contentHash":"3add6eee30f96b26a8386d0eaa79801d37e3d49c5ec43c47928e1b244bfa87d7"},"/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-branches.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-branches.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"50a0a1c8232143f9e01437b50252776da1d671a7","contentHash":"1d30318cf3bf8f5676b738d60967cf3b3734e0b8e494eae8a7cd5798c4521c28"},"/Users/erikobatomi/Documents/Node-v3/utils/validator.js":{"path":"/Users/erikobatomi/Documents/Node-v3/utils/validator.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}},"1":{"start":{"line":2,"column":28},"end":{"line":2,"column":46}},"2":{"start":{"line":4,"column":0},"end":{"line":12,"column":2}},"3":{"start":{"line":5,"column":21},"end":{"line":5,"column":42}},"4":{"start":{"line":6,"column":23},"end":{"line":6,"column":33}},"5":{"start":{"line":8,"column":2},"end":{"line":11,"column":3}},"6":{"start":{"line":9,"column":20},"end":{"line":9,"column":55}},"7":{"start":{"line":9,"column":45},"end":{"line":9,"column":54}},"8":{"start":{"line":10,"column":4},"end":{"line":10,"column":39}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":20},"end":{"line":4,"column":21}},"loc":{"start":{"line":4,"column":38},"end":{"line":12,"column":1}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":38},"end":{"line":9,"column":39}},"loc":{"start":{"line":9,"column":45},"end":{"line":9,"column":54}},"line":9}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":2},"end":{"line":11,"column":3}},"type":"if","locations":[{"start":{"line":8,"column":2},"end":{"line":11,"column":3}},{"start":{"line":8,"column":2},"end":{"line":11,"column":3}}],"line":8}},"s":{"0":1,"1":1,"2":1,"3":109,"4":109,"5":109,"6":26,"7":26,"8":26},"f":{"0":109,"1":26},"b":{"0":[26,83]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"db1abf8ec304359f7e327f6103a6df98c60e9ed5","contentHash":"31eb0815b44cc838c9511ccdf426ae7c9db6cba4f98c6a2d583f806632819183"},"/Users/erikobatomi/Documents/Node-v3/utils/error.js":{"path":"/Users/erikobatomi/Documents/Node-v3/utils/error.js","statementMap":{"0":{"start":{"line":1,"column":21},"end":{"line":1,"column":40}},"1":{"start":{"line":5,"column":4},"end":{"line":5,"column":19}},"2":{"start":{"line":6,"column":4},"end":{"line":6,"column":38}},"3":{"start":{"line":7,"column":4},"end":{"line":7,"column":52}},"4":{"start":{"line":11,"column":24},"end":{"line":17,"column":1}},"5":{"start":{"line":12,"column":2},"end":{"line":16,"column":3}},"6":{"start":{"line":13,"column":4},"end":{"line":13,"column":23}},"7":{"start":{"line":15,"column":4},"end":{"line":15,"column":37}},"8":{"start":{"line":19,"column":0},"end":{"line":19,"column":54}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":2},"end":{"line":4,"column":3}},"loc":{"start":{"line":4,"column":23},"end":{"line":8,"column":3}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":24},"end":{"line":11,"column":25}},"loc":{"start":{"line":11,"column":33},"end":{"line":17,"column":1}},"line":11}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":2},"end":{"line":16,"column":3}},"type":"if","locations":[{"start":{"line":12,"column":2},"end":{"line":16,"column":3}},{"start":{"line":12,"column":2},"end":{"line":16,"column":3}}],"line":12}},"s":{"0":1,"1":28,"2":28,"3":28,"4":1,"5":2,"6":1,"7":1,"8":1},"f":{"0":28,"1":2},"b":{"0":[1,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"65e141a90ee00e4fcec6d7722ff18d151a00defb","contentHash":"0bee953b2ef27c044e7b88c93f2eb43df0f6cc3ee94178f689743a6317c01734"},"/Users/erikobatomi/Documents/Node-v3/utils/logger.js":{"path":"/Users/erikobatomi/Documents/Node-v3/utils/logger.js","statementMap":{"0":{"start":{"line":1,"column":14},"end":{"line":1,"column":30}},"1":{"start":{"line":2,"column":20},"end":{"line":2,"column":46}},"2":{"start":{"line":3,"column":45},"end":{"line":3,"column":63}},"3":{"start":{"line":4,"column":63},"end":{"line":4,"column":69}},"4":{"start":{"line":19,"column":20},"end":{"line":31,"column":2}},"5":{"start":{"line":33,"column":0},"end":{"line":33,"column":43}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"86feb52f77c1d9cdb50087e5436fb21c3be6dfd9","contentHash":"8b78b4b736b3560c1eea2bb6665fd70c46abf1e5607da724830992f17da9b4dc"},"/Users/erikobatomi/Documents/Node-v3/services/schema/base.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/schema/base.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}},"1":{"start":{"line":4,"column":20},"end":{"line":6,"column":2}},"2":{"start":{"line":9,"column":19},"end":{"line":45,"column":2}},"3":{"start":{"line":48,"column":21},"end":{"line":50,"column":2}},"4":{"start":{"line":53,"column":23},"end":{"line":57,"column":2}},"5":{"start":{"line":59,"column":0},"end":{"line":64,"column":2}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b36c727e3ea25dde34051612f9b9e4b90c4d10fc","contentHash":"3bd032e56eece58174d04dcd5b2b4d36fa32b4dd5be6335be7304991092d62a8"},"/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-country.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-country.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":48}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ff1dafca39ffea3b91b1a94af16ca79023354887","contentHash":"42254411defd35716f8a5d7bd84928198c9de40a54930f07ac9535de3341aa3e"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.base.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.base.js","statementMap":{"0":{"start":{"line":1,"column":8},"end":{"line":1,"column":20}},"1":{"start":{"line":2,"column":20},"end":{"line":2,"column":42}},"2":{"start":{"line":3,"column":16},"end":{"line":3,"column":46}},"3":{"start":{"line":4,"column":15},"end":{"line":4,"column":36}},"4":{"start":{"line":6,"column":15},"end":{"line":99,"column":1}},"5":{"start":{"line":7,"column":2},"end":{"line":7,"column":58}},"6":{"start":{"line":8,"column":2},"end":{"line":8,"column":58}},"7":{"start":{"line":10,"column":19},"end":{"line":10,"column":29}},"8":{"start":{"line":11,"column":19},"end":{"line":11,"column":29}},"9":{"start":{"line":12,"column":17},"end":{"line":12,"column":47}},"10":{"start":{"line":15,"column":2},"end":{"line":17,"column":3}},"11":{"start":{"line":16,"column":4},"end":{"line":16,"column":25}},"12":{"start":{"line":19,"column":2},"end":{"line":21,"column":4}},"13":{"start":{"line":20,"column":4},"end":{"line":20,"column":22}},"14":{"start":{"line":23,"column":2},"end":{"line":25,"column":4}},"15":{"start":{"line":24,"column":4},"end":{"line":24,"column":22}},"16":{"start":{"line":27,"column":2},"end":{"line":29,"column":4}},"17":{"start":{"line":28,"column":4},"end":{"line":28,"column":20}},"18":{"start":{"line":31,"column":2},"end":{"line":35,"column":4}},"19":{"start":{"line":32,"column":4},"end":{"line":34,"column":5}},"20":{"start":{"line":33,"column":6},"end":{"line":33,"column":30}},"21":{"start":{"line":37,"column":2},"end":{"line":98,"column":4}},"22":{"start":{"line":38,"column":25},"end":{"line":38,"column":27}},"23":{"start":{"line":39,"column":24},"end":{"line":42,"column":5}},"24":{"start":{"line":43,"column":18},"end":{"line":43,"column":66}},"25":{"start":{"line":44,"column":22},"end":{"line":44,"column":54}},"26":{"start":{"line":45,"column":29},"end":{"line":48,"column":5}},"27":{"start":{"line":51,"column":18},"end":{"line":51,"column":42}},"28":{"start":{"line":54,"column":25},"end":{"line":60,"column":5}},"29":{"start":{"line":63,"column":4},"end":{"line":82,"column":5}},"30":{"start":{"line":64,"column":6},"end":{"line":64,"column":28}},"31":{"start":{"line":65,"column":6},"end":{"line":72,"column":7}},"32":{"start":{"line":66,"column":8},"end":{"line":66,"column":36}},"33":{"start":{"line":67,"column":28},"end":{"line":67,"column":58}},"34":{"start":{"line":68,"column":8},"end":{"line":71,"column":9}},"35":{"start":{"line":69,"column":10},"end":{"line":69,"column":55}},"36":{"start":{"line":70,"column":10},"end":{"line":70,"column":33}},"37":{"start":{"line":75,"column":6},"end":{"line":81,"column":7}},"38":{"start":{"line":77,"column":28},"end":{"line":77,"column":42}},"39":{"start":{"line":78,"column":8},"end":{"line":78,"column":34}},"40":{"start":{"line":79,"column":8},"end":{"line":79,"column":40}},"41":{"start":{"line":80,"column":8},"end":{"line":80,"column":56}},"42":{"start":{"line":85,"column":4},"end":{"line":85,"column":30}},"43":{"start":{"line":86,"column":4},"end":{"line":86,"column":47}},"44":{"start":{"line":87,"column":4},"end":{"line":87,"column":42}},"45":{"start":{"line":88,"column":4},"end":{"line":88,"column":70}},"46":{"start":{"line":89,"column":4},"end":{"line":89,"column":38}},"47":{"start":{"line":90,"column":4},"end":{"line":90,"column":50}},"48":{"start":{"line":92,"column":4},"end":{"line":97,"column":5}},"49":{"start":{"line":93,"column":6},"end":{"line":93,"column":57}},"50":{"start":{"line":94,"column":6},"end":{"line":94,"column":28}},"51":{"start":{"line":96,"column":6},"end":{"line":96,"column":61}},"52":{"start":{"line":101,"column":0},"end":{"line":104,"column":2}},"53":{"start":{"line":102,"column":23},"end":{"line":102,"column":69}},"54":{"start":{"line":103,"column":2},"end":{"line":103,"column":64}},"55":{"start":{"line":106,"column":0},"end":{"line":112,"column":2}},"56":{"start":{"line":107,"column":2},"end":{"line":111,"column":4}},"57":{"start":{"line":114,"column":0},"end":{"line":136,"column":2}},"58":{"start":{"line":115,"column":2},"end":{"line":135,"column":7}},"59":{"start":{"line":117,"column":18},"end":{"line":120,"column":7}},"60":{"start":{"line":122,"column":6},"end":{"line":131,"column":11}},"61":{"start":{"line":125,"column":10},"end":{"line":125,"column":36}},"62":{"start":{"line":128,"column":10},"end":{"line":130,"column":13}},"63":{"start":{"line":129,"column":12},"end":{"line":129,"column":48}},"64":{"start":{"line":134,"column":6},"end":{"line":134,"column":28}},"65":{"start":{"line":138,"column":0},"end":{"line":162,"column":2}},"66":{"start":{"line":139,"column":2},"end":{"line":161,"column":5}},"67":{"start":{"line":140,"column":4},"end":{"line":160,"column":9}},"68":{"start":{"line":142,"column":20},"end":{"line":145,"column":9}},"69":{"start":{"line":147,"column":8},"end":{"line":156,"column":13}},"70":{"start":{"line":150,"column":12},"end":{"line":150,"column":35}},"71":{"start":{"line":153,"column":12},"end":{"line":155,"column":15}},"72":{"start":{"line":154,"column":14},"end":{"line":154,"column":53}},"73":{"start":{"line":159,"column":8},"end":{"line":159,"column":20}},"74":{"start":{"line":164,"column":0},"end":{"line":164,"column":26}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":15},"end":{"line":6,"column":16}},"loc":{"start":{"line":6,"column":60},"end":{"line":99,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":19,"column":22},"end":{"line":19,"column":23}},"loc":{"start":{"line":19,"column":34},"end":{"line":21,"column":3}},"line":19},"2":{"name":"(anonymous_2)","decl":{"start":{"line":23,"column":22},"end":{"line":23,"column":23}},"loc":{"start":{"line":23,"column":34},"end":{"line":25,"column":3}},"line":23},"3":{"name":"(anonymous_3)","decl":{"start":{"line":27,"column":20},"end":{"line":27,"column":21}},"loc":{"start":{"line":27,"column":32},"end":{"line":29,"column":3}},"line":27},"4":{"name":"(anonymous_4)","decl":{"start":{"line":31,"column":20},"end":{"line":31,"column":21}},"loc":{"start":{"line":31,"column":44},"end":{"line":35,"column":3}},"line":31},"5":{"name":"(anonymous_5)","decl":{"start":{"line":37,"column":17},"end":{"line":37,"column":18}},"loc":{"start":{"line":37,"column":52},"end":{"line":98,"column":3}},"line":37},"6":{"name":"(anonymous_6)","decl":{"start":{"line":101,"column":29},"end":{"line":101,"column":30}},"loc":{"start":{"line":101,"column":45},"end":{"line":104,"column":1}},"line":101},"7":{"name":"(anonymous_7)","decl":{"start":{"line":106,"column":38},"end":{"line":106,"column":39}},"loc":{"start":{"line":106,"column":54},"end":{"line":112,"column":1}},"line":106},"8":{"name":"(anonymous_8)","decl":{"start":{"line":114,"column":34},"end":{"line":114,"column":35}},"loc":{"start":{"line":114,"column":73},"end":{"line":136,"column":1}},"line":114},"9":{"name":"(anonymous_9)","decl":{"start":{"line":116,"column":10},"end":{"line":116,"column":11}},"loc":{"start":{"line":116,"column":24},"end":{"line":132,"column":5}},"line":116},"10":{"name":"(anonymous_10)","decl":{"start":{"line":124,"column":14},"end":{"line":124,"column":15}},"loc":{"start":{"line":124,"column":24},"end":{"line":126,"column":9}},"line":124},"11":{"name":"(anonymous_11)","decl":{"start":{"line":127,"column":15},"end":{"line":127,"column":16}},"loc":{"start":{"line":127,"column":24},"end":{"line":131,"column":9}},"line":127},"12":{"name":"(anonymous_12)","decl":{"start":{"line":128,"column":38},"end":{"line":128,"column":39}},"loc":{"start":{"line":128,"column":52},"end":{"line":130,"column":11}},"line":128},"13":{"name":"(anonymous_13)","decl":{"start":{"line":133,"column":11},"end":{"line":133,"column":12}},"loc":{"start":{"line":133,"column":20},"end":{"line":135,"column":5}},"line":133},"14":{"name":"(anonymous_14)","decl":{"start":{"line":138,"column":41},"end":{"line":138,"column":42}},"loc":{"start":{"line":138,"column":70},"end":{"line":162,"column":1}},"line":138},"15":{"name":"(anonymous_15)","decl":{"start":{"line":139,"column":21},"end":{"line":139,"column":22}},"loc":{"start":{"line":139,"column":42},"end":{"line":161,"column":3}},"line":139},"16":{"name":"(anonymous_16)","decl":{"start":{"line":141,"column":12},"end":{"line":141,"column":13}},"loc":{"start":{"line":141,"column":26},"end":{"line":157,"column":7}},"line":141},"17":{"name":"(anonymous_17)","decl":{"start":{"line":149,"column":16},"end":{"line":149,"column":17}},"loc":{"start":{"line":149,"column":26},"end":{"line":151,"column":11}},"line":149},"18":{"name":"(anonymous_18)","decl":{"start":{"line":152,"column":17},"end":{"line":152,"column":18}},"loc":{"start":{"line":152,"column":26},"end":{"line":156,"column":11}},"line":152},"19":{"name":"(anonymous_19)","decl":{"start":{"line":153,"column":40},"end":{"line":153,"column":41}},"loc":{"start":{"line":153,"column":54},"end":{"line":155,"column":13}},"line":153},"20":{"name":"(anonymous_20)","decl":{"start":{"line":158,"column":13},"end":{"line":158,"column":14}},"loc":{"start":{"line":158,"column":22},"end":{"line":160,"column":7}},"line":158}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":2},"end":{"line":17,"column":3}},"type":"if","locations":[{"start":{"line":15,"column":2},"end":{"line":17,"column":3}},{"start":{"line":15,"column":2},"end":{"line":17,"column":3}}],"line":15},"1":{"loc":{"start":{"line":15,"column":6},"end":{"line":15,"column":48}},"type":"binary-expr","locations":[{"start":{"line":15,"column":6},"end":{"line":15,"column":15}},{"start":{"line":15,"column":19},"end":{"line":15,"column":48}}],"line":15},"2":{"loc":{"start":{"line":32,"column":4},"end":{"line":34,"column":5}},"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":34,"column":5}},{"start":{"line":32,"column":4},"end":{"line":34,"column":5}}],"line":32},"3":{"loc":{"start":{"line":41,"column":6},"end":{"line":41,"column":21}},"type":"binary-expr","locations":[{"start":{"line":41,"column":6},"end":{"line":41,"column":12}},{"start":{"line":41,"column":16},"end":{"line":41,"column":21}}],"line":41},"4":{"loc":{"start":{"line":43,"column":18},"end":{"line":43,"column":66}},"type":"cond-expr","locations":[{"start":{"line":43,"column":53},"end":{"line":43,"column":59}},{"start":{"line":43,"column":62},"end":{"line":43,"column":66}}],"line":43},"5":{"loc":{"start":{"line":43,"column":18},"end":{"line":43,"column":50}},"type":"binary-expr","locations":[{"start":{"line":43,"column":18},"end":{"line":43,"column":41}},{"start":{"line":43,"column":45},"end":{"line":43,"column":50}}],"line":43},"6":{"loc":{"start":{"line":44,"column":22},"end":{"line":44,"column":54}},"type":"cond-expr","locations":[{"start":{"line":44,"column":42},"end":{"line":44,"column":46}},{"start":{"line":44,"column":49},"end":{"line":44,"column":54}}],"line":44},"7":{"loc":{"start":{"line":63,"column":4},"end":{"line":82,"column":5}},"type":"if","locations":[{"start":{"line":63,"column":4},"end":{"line":82,"column":5}},{"start":{"line":63,"column":4},"end":{"line":82,"column":5}}],"line":63},"8":{"loc":{"start":{"line":65,"column":6},"end":{"line":72,"column":7}},"type":"if","locations":[{"start":{"line":65,"column":6},"end":{"line":72,"column":7}},{"start":{"line":65,"column":6},"end":{"line":72,"column":7}}],"line":65},"9":{"loc":{"start":{"line":68,"column":8},"end":{"line":71,"column":9}},"type":"if","locations":[{"start":{"line":68,"column":8},"end":{"line":71,"column":9}},{"start":{"line":68,"column":8},"end":{"line":71,"column":9}}],"line":68},"10":{"loc":{"start":{"line":69,"column":21},"end":{"line":69,"column":54}},"type":"cond-expr","locations":[{"start":{"line":69,"column":45},"end":{"line":69,"column":48}},{"start":{"line":69,"column":51},"end":{"line":69,"column":54}}],"line":69},"11":{"loc":{"start":{"line":75,"column":6},"end":{"line":81,"column":7}},"type":"if","locations":[{"start":{"line":75,"column":6},"end":{"line":81,"column":7}},{"start":{"line":75,"column":6},"end":{"line":81,"column":7}}],"line":75},"12":{"loc":{"start":{"line":92,"column":4},"end":{"line":97,"column":5}},"type":"if","locations":[{"start":{"line":92,"column":4},"end":{"line":97,"column":5}},{"start":{"line":92,"column":4},"end":{"line":97,"column":5}}],"line":92},"13":{"loc":{"start":{"line":129,"column":32},"end":{"line":129,"column":46}},"type":"binary-expr","locations":[{"start":{"line":129,"column":32},"end":{"line":129,"column":40}},{"start":{"line":129,"column":44},"end":{"line":129,"column":46}}],"line":129},"14":{"loc":{"start":{"line":154,"column":35},"end":{"line":154,"column":49}},"type":"binary-expr","locations":[{"start":{"line":154,"column":35},"end":{"line":154,"column":43}},{"start":{"line":154,"column":47},"end":{"line":154,"column":49}}],"line":154}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":48,"6":48,"7":48,"8":48,"9":48,"10":48,"11":1,"12":48,"13":4,"14":48,"15":9,"16":48,"17":16,"18":48,"19":1,"20":1,"21":48,"22":7,"23":7,"24":7,"25":7,"26":7,"27":7,"28":7,"29":7,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":6,"38":3,"39":3,"40":3,"41":3,"42":7,"43":7,"44":7,"45":7,"46":7,"47":7,"48":7,"49":3,"50":3,"51":4,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":3,"59":2,"60":2,"61":1,"62":1,"63":1,"64":1,"65":1,"66":4,"67":4,"68":3,"69":3,"70":1,"71":2,"72":2,"73":1,"74":1},"f":{"0":48,"1":4,"2":9,"3":16,"4":1,"5":7,"6":1,"7":1,"8":3,"9":2,"10":1,"11":1,"12":1,"13":1,"14":4,"15":4,"16":3,"17":1,"18":2,"19":2,"20":1},"b":{"0":[1,47],"1":[48,1],"2":[1,0],"3":[7,0],"4":[7,0],"5":[7,1],"6":[7,0],"7":[1,6],"8":[1,0],"9":[1,0],"10":[0,1],"11":[3,3],"12":[3,4],"13":[1,0],"14":[2,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5967ab592d9ab7f6f5c018f804f06b895c789b0a","contentHash":"98002bd1a7200fc014008bf8933d4bdf75f5eb4731eda0f117138d7b7e4d5eeb"},"/Users/erikobatomi/Documents/Node-v3/utils/rave.utils.js":{"path":"/Users/erikobatomi/Documents/Node-v3/utils/rave.utils.js","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":18}},"1":{"start":{"line":4,"column":0},"end":{"line":9,"column":1}},"2":{"start":{"line":5,"column":1},"end":{"line":5,"column":43}},"3":{"start":{"line":6,"column":1},"end":{"line":6,"column":24}},"4":{"start":{"line":7,"column":1},"end":{"line":8,"column":27}},"5":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"6":{"start":{"line":11,"column":0},"end":{"line":13,"column":1}},"7":{"start":{"line":12,"column":1},"end":{"line":12,"column":31}},"8":{"start":{"line":16,"column":0},"end":{"line":16,"column":27}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":23},"end":{"line":4,"column":24}},"loc":{"start":{"line":4,"column":56},"end":{"line":9,"column":1}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":29},"end":{"line":11,"column":30}},"loc":{"start":{"line":11,"column":61},"end":{"line":13,"column":1}},"line":11}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":11},"end":{"line":5,"column":42}},"type":"binary-expr","locations":[{"start":{"line":5,"column":11},"end":{"line":5,"column":18}},{"start":{"line":5,"column":22},"end":{"line":5,"column":42}}],"line":5},"1":{"loc":{"start":{"line":6,"column":9},"end":{"line":6,"column":23}},"type":"binary-expr","locations":[{"start":{"line":6,"column":9},"end":{"line":6,"column":14}},{"start":{"line":6,"column":18},"end":{"line":6,"column":23}}],"line":6},"2":{"loc":{"start":{"line":7,"column":1},"end":{"line":8,"column":27}},"type":"if","locations":[{"start":{"line":7,"column":1},"end":{"line":8,"column":27}},{"start":{"line":7,"column":1},"end":{"line":8,"column":27}}],"line":7},"3":{"loc":{"start":{"line":7,"column":5},"end":{"line":7,"column":42}},"type":"binary-expr","locations":[{"start":{"line":7,"column":5},"end":{"line":7,"column":11}},{"start":{"line":7,"column":15},"end":{"line":7,"column":42}}],"line":7},"4":{"loc":{"start":{"line":12,"column":8},"end":{"line":12,"column":30}},"type":"binary-expr","locations":[{"start":{"line":12,"column":8},"end":{"line":12,"column":13}},{"start":{"line":12,"column":17},"end":{"line":12,"column":30}}],"line":12}},"s":{"0":1,"1":1,"2":98,"3":98,"4":98,"5":1,"6":1,"7":23,"8":1},"f":{"0":98,"1":23},"b":{"0":[98,1],"1":[98,98],"2":[1,97],"3":[98,97],"4":[23,11]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f79366dff4ce1233003cc86ad012bd2e5a39d50f","contentHash":"59684508a6491faba96485b602cf04d565516c7ed626f06807ddd85620d582a7"},"/Users/erikobatomi/Documents/Node-v3/lib/security.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/security.js","statementMap":{"0":{"start":{"line":2,"column":13},"end":{"line":2,"column":30}},"1":{"start":{"line":7,"column":14},"end":{"line":7,"column":28}},"2":{"start":{"line":8,"column":17},"end":{"line":8,"column":28}},"3":{"start":{"line":9,"column":23},"end":{"line":9,"column":41}},"4":{"start":{"line":11,"column":25},"end":{"line":11,"column":55}},"5":{"start":{"line":12,"column":32},"end":{"line":12,"column":60}},"6":{"start":{"line":14,"column":4},"end":{"line":14,"column":48}},"7":{"start":{"line":34,"column":16},"end":{"line":34,"column":37}},"8":{"start":{"line":35,"column":17},"end":{"line":38,"column":5}},"9":{"start":{"line":39,"column":4},"end":{"line":41,"column":7}},"10":{"start":{"line":42,"column":4},"end":{"line":42,"column":58}},"11":{"start":{"line":43,"column":4},"end":{"line":43,"column":20}},"12":{"start":{"line":44,"column":20},"end":{"line":44,"column":33}},"13":{"start":{"line":45,"column":4},"end":{"line":45,"column":53}},"14":{"start":{"line":50,"column":21},"end":{"line":50,"column":38}},"15":{"start":{"line":51,"column":4},"end":{"line":51,"column":22}},"16":{"start":{"line":52,"column":21},"end":{"line":52,"column":23}},"17":{"start":{"line":53,"column":4},"end":{"line":59,"column":11}},"18":{"start":{"line":56,"column":12},"end":{"line":56,"column":47}},"19":{"start":{"line":56,"column":40},"end":{"line":56,"column":47}},"20":{"start":{"line":57,"column":12},"end":{"line":57,"column":35}},"21":{"start":{"line":60,"column":4},"end":{"line":60,"column":25}},"22":{"start":{"line":61,"column":15},"end":{"line":61,"column":83}},"23":{"start":{"line":62,"column":4},"end":{"line":62,"column":16}},"24":{"start":{"line":66,"column":0},"end":{"line":70,"column":1}}},"fnMap":{"0":{"name":"getKey","decl":{"start":{"line":6,"column":9},"end":{"line":6,"column":15}},"loc":{"start":{"line":6,"column":24},"end":{"line":15,"column":1}},"line":6},"1":{"name":"encrypt","decl":{"start":{"line":33,"column":9},"end":{"line":33,"column":16}},"loc":{"start":{"line":33,"column":28},"end":{"line":46,"column":1}},"line":33},"2":{"name":"getIntegrityHash","decl":{"start":{"line":48,"column":9},"end":{"line":48,"column":25}},"loc":{"start":{"line":48,"column":48},"end":{"line":63,"column":1}},"line":48},"3":{"name":"(anonymous_3)","decl":{"start":{"line":54,"column":17},"end":{"line":54,"column":18}},"loc":{"start":{"line":54,"column":31},"end":{"line":59,"column":9}},"line":54}},"branchMap":{"0":{"loc":{"start":{"line":56,"column":12},"end":{"line":56,"column":47}},"type":"if","locations":[{"start":{"line":56,"column":12},"end":{"line":56,"column":47}},{"start":{"line":56,"column":12},"end":{"line":56,"column":47}}],"line":56}},"s":{"0":1,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2,"16":2,"17":2,"18":5,"19":1,"20":4,"21":2,"22":2,"23":2,"24":1},"f":{"0":3,"1":2,"2":2,"3":5},"b":{"0":[1,4]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"0aff5d866b2c6f712776d9bef408bb7d60739b8b","contentHash":"9b837b8b01351ca5365cb59e9741f9831c8aed0bbfac09065601d3727c94ca73"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.beneficiaries.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.beneficiaries.js","statementMap":{"0":{"start":{"line":1,"column":27},"end":{"line":1,"column":75}},"1":{"start":{"line":2,"column":24},"end":{"line":2,"column":72}},"2":{"start":{"line":3,"column":21},"end":{"line":3,"column":71}},"3":{"start":{"line":4,"column":17},"end":{"line":4,"column":74}},"4":{"start":{"line":7,"column":2},"end":{"line":9,"column":4}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":46}},"6":{"start":{"line":11,"column":2},"end":{"line":13,"column":4}},"7":{"start":{"line":12,"column":4},"end":{"line":12,"column":43}},"8":{"start":{"line":14,"column":2},"end":{"line":16,"column":4}},"9":{"start":{"line":15,"column":4},"end":{"line":15,"column":40}},"10":{"start":{"line":17,"column":2},"end":{"line":19,"column":4}},"11":{"start":{"line":18,"column":4},"end":{"line":18,"column":36}},"12":{"start":{"line":21,"column":0},"end":{"line":21,"column":31}}},"fnMap":{"0":{"name":"Beneficiaries","decl":{"start":{"line":6,"column":9},"end":{"line":6,"column":22}},"loc":{"start":{"line":6,"column":33},"end":{"line":20,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":16},"end":{"line":7,"column":17}},"loc":{"start":{"line":7,"column":32},"end":{"line":9,"column":3}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":11,"column":16},"end":{"line":11,"column":17}},"loc":{"start":{"line":11,"column":32},"end":{"line":13,"column":3}},"line":11},"3":{"name":"(anonymous_3)","decl":{"start":{"line":14,"column":19},"end":{"line":14,"column":20}},"loc":{"start":{"line":14,"column":35},"end":{"line":16,"column":3}},"line":14},"4":{"name":"(anonymous_4)","decl":{"start":{"line":17,"column":15},"end":{"line":17,"column":16}},"loc":{"start":{"line":17,"column":31},"end":{"line":19,"column":3}},"line":17}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":4,"5":1,"6":4,"7":1,"8":4,"9":1,"10":4,"11":1,"12":1},"f":{"0":4,"1":1,"2":1,"3":1,"4":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5110aa1a5f57bc5673e0f59f2c252e27b88eb60e","contentHash":"6acfe4f52b58b104883eb433bb7dd0b7b6f959ebf1834df18dd26d4a3dd15b02"},"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.create.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.create.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":30},"end":{"line":3,"column":57}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":74}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1fb127708320941a68788e108733e4451e589771","contentHash":"2f96ea186cd196c51739b26ba4f78a7a37db4abfe4b4db0f65867a6c26749f85"},"/Users/erikobatomi/Documents/Node-v3/services/schema/create.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/schema/create.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}},"1":{"start":{"line":4,"column":22},"end":{"line":16,"column":2}},"2":{"start":{"line":19,"column":25},"end":{"line":50,"column":2}},"3":{"start":{"line":29,"column":6},"end":{"line":30,"column":57}},"4":{"start":{"line":30,"column":8},"end":{"line":30,"column":57}},"5":{"start":{"line":31,"column":6},"end":{"line":31,"column":19}},"6":{"start":{"line":53,"column":26},"end":{"line":59,"column":2}},"7":{"start":{"line":62,"column":26},"end":{"line":73,"column":2}},"8":{"start":{"line":76,"column":28},"end":{"line":90,"column":2}},"9":{"start":{"line":92,"column":24},"end":{"line":126,"column":2}},"10":{"start":{"line":205,"column":25},"end":{"line":265,"column":2}},"11":{"start":{"line":218,"column":6},"end":{"line":219,"column":48}},"12":{"start":{"line":219,"column":8},"end":{"line":219,"column":48}},"13":{"start":{"line":220,"column":6},"end":{"line":220,"column":19}},"14":{"start":{"line":229,"column":6},"end":{"line":230,"column":57}},"15":{"start":{"line":230,"column":8},"end":{"line":230,"column":57}},"16":{"start":{"line":231,"column":6},"end":{"line":231,"column":19}},"17":{"start":{"line":268,"column":21},"end":{"line":312,"column":2}},"18":{"start":{"line":278,"column":6},"end":{"line":279,"column":57}},"19":{"start":{"line":279,"column":8},"end":{"line":279,"column":57}},"20":{"start":{"line":280,"column":6},"end":{"line":280,"column":19}},"21":{"start":{"line":315,"column":27},"end":{"line":340,"column":2}},"22":{"start":{"line":325,"column":6},"end":{"line":326,"column":57}},"23":{"start":{"line":326,"column":8},"end":{"line":326,"column":57}},"24":{"start":{"line":327,"column":6},"end":{"line":327,"column":19}},"25":{"start":{"line":343,"column":19},"end":{"line":515,"column":2}},"26":{"start":{"line":352,"column":6},"end":{"line":353,"column":57}},"27":{"start":{"line":353,"column":8},"end":{"line":353,"column":57}},"28":{"start":{"line":354,"column":6},"end":{"line":354,"column":19}},"29":{"start":{"line":362,"column":22},"end":{"line":362,"column":39}},"30":{"start":{"line":363,"column":22},"end":{"line":363,"column":55}},"31":{"start":{"line":364,"column":8},"end":{"line":366,"column":9}},"32":{"start":{"line":365,"column":10},"end":{"line":365,"column":43}},"33":{"start":{"line":367,"column":8},"end":{"line":367,"column":21}},"34":{"start":{"line":378,"column":24},"end":{"line":378,"column":41}},"35":{"start":{"line":379,"column":24},"end":{"line":379,"column":41}},"36":{"start":{"line":380,"column":10},"end":{"line":382,"column":11}},"37":{"start":{"line":381,"column":12},"end":{"line":381,"column":45}},"38":{"start":{"line":383,"column":10},"end":{"line":383,"column":23}},"39":{"start":{"line":394,"column":26},"end":{"line":394,"column":43}},"40":{"start":{"line":395,"column":26},"end":{"line":395,"column":49}},"41":{"start":{"line":396,"column":12},"end":{"line":398,"column":13}},"42":{"start":{"line":397,"column":14},"end":{"line":397,"column":47}},"43":{"start":{"line":399,"column":12},"end":{"line":399,"column":25}},"44":{"start":{"line":410,"column":28},"end":{"line":410,"column":45}},"45":{"start":{"line":411,"column":28},"end":{"line":411,"column":45}},"46":{"start":{"line":412,"column":14},"end":{"line":414,"column":15}},"47":{"start":{"line":413,"column":16},"end":{"line":413,"column":49}},"48":{"start":{"line":415,"column":14},"end":{"line":415,"column":27}},"49":{"start":{"line":426,"column":30},"end":{"line":426,"column":47}},"50":{"start":{"line":427,"column":30},"end":{"line":427,"column":71}},"51":{"start":{"line":428,"column":16},"end":{"line":430,"column":17}},"52":{"start":{"line":429,"column":18},"end":{"line":429,"column":51}},"53":{"start":{"line":431,"column":16},"end":{"line":431,"column":29}},"54":{"start":{"line":443,"column":32},"end":{"line":443,"column":49}},"55":{"start":{"line":444,"column":32},"end":{"line":444,"column":59}},"56":{"start":{"line":445,"column":18},"end":{"line":447,"column":19}},"57":{"start":{"line":446,"column":20},"end":{"line":446,"column":53}},"58":{"start":{"line":448,"column":18},"end":{"line":448,"column":31}},"59":{"start":{"line":459,"column":34},"end":{"line":459,"column":51}},"60":{"start":{"line":460,"column":34},"end":{"line":460,"column":64}},"61":{"start":{"line":461,"column":20},"end":{"line":463,"column":21}},"62":{"start":{"line":462,"column":22},"end":{"line":462,"column":55}},"63":{"start":{"line":464,"column":20},"end":{"line":464,"column":33}},"64":{"start":{"line":476,"column":36},"end":{"line":476,"column":53}},"65":{"start":{"line":477,"column":36},"end":{"line":477,"column":58}},"66":{"start":{"line":478,"column":22},"end":{"line":480,"column":23}},"67":{"start":{"line":479,"column":24},"end":{"line":479,"column":57}},"68":{"start":{"line":481,"column":22},"end":{"line":481,"column":35}},"69":{"start":{"line":518,"column":19},"end":{"line":528,"column":2}},"70":{"start":{"line":531,"column":21},"end":{"line":534,"column":2}},"71":{"start":{"line":537,"column":25},"end":{"line":549,"column":2}},"72":{"start":{"line":552,"column":23},"end":{"line":717,"column":2}},"73":{"start":{"line":703,"column":12},"end":{"line":704,"column":63}},"74":{"start":{"line":704,"column":14},"end":{"line":704,"column":63}},"75":{"start":{"line":705,"column":12},"end":{"line":705,"column":25}},"76":{"start":{"line":720,"column":31},"end":{"line":726,"column":2}},"77":{"start":{"line":729,"column":33},"end":{"line":741,"column":2}},"78":{"start":{"line":744,"column":20},"end":{"line":763,"column":2}},"79":{"start":{"line":766,"column":25},"end":{"line":790,"column":2}},"80":{"start":{"line":777,"column":6},"end":{"line":778,"column":57}},"81":{"start":{"line":778,"column":8},"end":{"line":778,"column":57}},"82":{"start":{"line":779,"column":6},"end":{"line":779,"column":19}},"83":{"start":{"line":793,"column":29},"end":{"line":802,"column":2}},"84":{"start":{"line":804,"column":0},"end":{"line":824,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":28,"column":12},"end":{"line":28,"column":13}},"loc":{"start":{"line":28,"column":23},"end":{"line":32,"column":5}},"line":28},"1":{"name":"(anonymous_1)","decl":{"start":{"line":217,"column":12},"end":{"line":217,"column":13}},"loc":{"start":{"line":217,"column":23},"end":{"line":221,"column":5}},"line":217},"2":{"name":"(anonymous_2)","decl":{"start":{"line":228,"column":12},"end":{"line":228,"column":13}},"loc":{"start":{"line":228,"column":23},"end":{"line":232,"column":5}},"line":228},"3":{"name":"(anonymous_3)","decl":{"start":{"line":277,"column":12},"end":{"line":277,"column":13}},"loc":{"start":{"line":277,"column":23},"end":{"line":281,"column":5}},"line":277},"4":{"name":"(anonymous_4)","decl":{"start":{"line":324,"column":12},"end":{"line":324,"column":13}},"loc":{"start":{"line":324,"column":23},"end":{"line":328,"column":5}},"line":324},"5":{"name":"(anonymous_5)","decl":{"start":{"line":351,"column":12},"end":{"line":351,"column":13}},"loc":{"start":{"line":351,"column":23},"end":{"line":355,"column":5}},"line":351},"6":{"name":"(anonymous_6)","decl":{"start":{"line":361,"column":14},"end":{"line":361,"column":15}},"loc":{"start":{"line":361,"column":32},"end":{"line":368,"column":7}},"line":361},"7":{"name":"(anonymous_7)","decl":{"start":{"line":377,"column":16},"end":{"line":377,"column":17}},"loc":{"start":{"line":377,"column":34},"end":{"line":384,"column":9}},"line":377},"8":{"name":"(anonymous_8)","decl":{"start":{"line":393,"column":18},"end":{"line":393,"column":19}},"loc":{"start":{"line":393,"column":36},"end":{"line":400,"column":11}},"line":393},"9":{"name":"(anonymous_9)","decl":{"start":{"line":409,"column":20},"end":{"line":409,"column":21}},"loc":{"start":{"line":409,"column":38},"end":{"line":416,"column":13}},"line":409},"10":{"name":"(anonymous_10)","decl":{"start":{"line":425,"column":22},"end":{"line":425,"column":23}},"loc":{"start":{"line":425,"column":40},"end":{"line":432,"column":15}},"line":425},"11":{"name":"(anonymous_11)","decl":{"start":{"line":442,"column":24},"end":{"line":442,"column":25}},"loc":{"start":{"line":442,"column":42},"end":{"line":449,"column":17}},"line":442},"12":{"name":"(anonymous_12)","decl":{"start":{"line":458,"column":26},"end":{"line":458,"column":27}},"loc":{"start":{"line":458,"column":44},"end":{"line":465,"column":19}},"line":458},"13":{"name":"(anonymous_13)","decl":{"start":{"line":475,"column":28},"end":{"line":475,"column":29}},"loc":{"start":{"line":475,"column":46},"end":{"line":482,"column":21}},"line":475},"14":{"name":"(anonymous_14)","decl":{"start":{"line":702,"column":18},"end":{"line":702,"column":19}},"loc":{"start":{"line":702,"column":29},"end":{"line":706,"column":11}},"line":702},"15":{"name":"(anonymous_15)","decl":{"start":{"line":776,"column":12},"end":{"line":776,"column":13}},"loc":{"start":{"line":776,"column":23},"end":{"line":780,"column":5}},"line":776}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":6},"end":{"line":30,"column":57}},"type":"if","locations":[{"start":{"line":29,"column":6},"end":{"line":30,"column":57}},{"start":{"line":29,"column":6},"end":{"line":30,"column":57}}],"line":29},"1":{"loc":{"start":{"line":29,"column":10},"end":{"line":29,"column":42}},"type":"binary-expr","locations":[{"start":{"line":29,"column":10},"end":{"line":29,"column":15}},{"start":{"line":29,"column":19},"end":{"line":29,"column":42}}],"line":29},"2":{"loc":{"start":{"line":218,"column":6},"end":{"line":219,"column":48}},"type":"if","locations":[{"start":{"line":218,"column":6},"end":{"line":219,"column":48}},{"start":{"line":218,"column":6},"end":{"line":219,"column":48}}],"line":218},"3":{"loc":{"start":{"line":218,"column":10},"end":{"line":218,"column":67}},"type":"binary-expr","locations":[{"start":{"line":218,"column":10},"end":{"line":218,"column":24}},{"start":{"line":218,"column":28},"end":{"line":218,"column":45}},{"start":{"line":218,"column":49},"end":{"line":218,"column":67}}],"line":218},"4":{"loc":{"start":{"line":229,"column":6},"end":{"line":230,"column":57}},"type":"if","locations":[{"start":{"line":229,"column":6},"end":{"line":230,"column":57}},{"start":{"line":229,"column":6},"end":{"line":230,"column":57}}],"line":229},"5":{"loc":{"start":{"line":229,"column":10},"end":{"line":229,"column":42}},"type":"binary-expr","locations":[{"start":{"line":229,"column":10},"end":{"line":229,"column":15}},{"start":{"line":229,"column":19},"end":{"line":229,"column":42}}],"line":229},"6":{"loc":{"start":{"line":278,"column":6},"end":{"line":279,"column":57}},"type":"if","locations":[{"start":{"line":278,"column":6},"end":{"line":279,"column":57}},{"start":{"line":278,"column":6},"end":{"line":279,"column":57}}],"line":278},"7":{"loc":{"start":{"line":278,"column":10},"end":{"line":278,"column":42}},"type":"binary-expr","locations":[{"start":{"line":278,"column":10},"end":{"line":278,"column":15}},{"start":{"line":278,"column":19},"end":{"line":278,"column":42}}],"line":278},"8":{"loc":{"start":{"line":325,"column":6},"end":{"line":326,"column":57}},"type":"if","locations":[{"start":{"line":325,"column":6},"end":{"line":326,"column":57}},{"start":{"line":325,"column":6},"end":{"line":326,"column":57}}],"line":325},"9":{"loc":{"start":{"line":325,"column":10},"end":{"line":325,"column":42}},"type":"binary-expr","locations":[{"start":{"line":325,"column":10},"end":{"line":325,"column":15}},{"start":{"line":325,"column":19},"end":{"line":325,"column":42}}],"line":325},"10":{"loc":{"start":{"line":352,"column":6},"end":{"line":353,"column":57}},"type":"if","locations":[{"start":{"line":352,"column":6},"end":{"line":353,"column":57}},{"start":{"line":352,"column":6},"end":{"line":353,"column":57}}],"line":352},"11":{"loc":{"start":{"line":352,"column":10},"end":{"line":352,"column":42}},"type":"binary-expr","locations":[{"start":{"line":352,"column":10},"end":{"line":352,"column":15}},{"start":{"line":352,"column":19},"end":{"line":352,"column":42}}],"line":352},"12":{"loc":{"start":{"line":364,"column":8},"end":{"line":366,"column":9}},"type":"if","locations":[{"start":{"line":364,"column":8},"end":{"line":366,"column":9}},{"start":{"line":364,"column":8},"end":{"line":366,"column":9}}],"line":364},"13":{"loc":{"start":{"line":380,"column":10},"end":{"line":382,"column":11}},"type":"if","locations":[{"start":{"line":380,"column":10},"end":{"line":382,"column":11}},{"start":{"line":380,"column":10},"end":{"line":382,"column":11}}],"line":380},"14":{"loc":{"start":{"line":396,"column":12},"end":{"line":398,"column":13}},"type":"if","locations":[{"start":{"line":396,"column":12},"end":{"line":398,"column":13}},{"start":{"line":396,"column":12},"end":{"line":398,"column":13}}],"line":396},"15":{"loc":{"start":{"line":412,"column":14},"end":{"line":414,"column":15}},"type":"if","locations":[{"start":{"line":412,"column":14},"end":{"line":414,"column":15}},{"start":{"line":412,"column":14},"end":{"line":414,"column":15}}],"line":412},"16":{"loc":{"start":{"line":428,"column":16},"end":{"line":430,"column":17}},"type":"if","locations":[{"start":{"line":428,"column":16},"end":{"line":430,"column":17}},{"start":{"line":428,"column":16},"end":{"line":430,"column":17}}],"line":428},"17":{"loc":{"start":{"line":445,"column":18},"end":{"line":447,"column":19}},"type":"if","locations":[{"start":{"line":445,"column":18},"end":{"line":447,"column":19}},{"start":{"line":445,"column":18},"end":{"line":447,"column":19}}],"line":445},"18":{"loc":{"start":{"line":461,"column":20},"end":{"line":463,"column":21}},"type":"if","locations":[{"start":{"line":461,"column":20},"end":{"line":463,"column":21}},{"start":{"line":461,"column":20},"end":{"line":463,"column":21}}],"line":461},"19":{"loc":{"start":{"line":478,"column":22},"end":{"line":480,"column":23}},"type":"if","locations":[{"start":{"line":478,"column":22},"end":{"line":480,"column":23}},{"start":{"line":478,"column":22},"end":{"line":480,"column":23}}],"line":478},"20":{"loc":{"start":{"line":703,"column":12},"end":{"line":704,"column":63}},"type":"if","locations":[{"start":{"line":703,"column":12},"end":{"line":704,"column":63}},{"start":{"line":703,"column":12},"end":{"line":704,"column":63}}],"line":703},"21":{"loc":{"start":{"line":703,"column":16},"end":{"line":703,"column":48}},"type":"binary-expr","locations":[{"start":{"line":703,"column":16},"end":{"line":703,"column":21}},{"start":{"line":703,"column":25},"end":{"line":703,"column":48}}],"line":703},"22":{"loc":{"start":{"line":777,"column":6},"end":{"line":778,"column":57}},"type":"if","locations":[{"start":{"line":777,"column":6},"end":{"line":778,"column":57}},{"start":{"line":777,"column":6},"end":{"line":778,"column":57}}],"line":777},"23":{"loc":{"start":{"line":777,"column":10},"end":{"line":777,"column":42}},"type":"binary-expr","locations":[{"start":{"line":777,"column":10},"end":{"line":777,"column":15}},{"start":{"line":777,"column":19},"end":{"line":777,"column":42}}],"line":777}},"s":{"0":1,"1":1,"2":1,"3":5,"4":1,"5":4,"6":1,"7":1,"8":1,"9":1,"10":1,"11":5,"12":1,"13":4,"14":2,"15":1,"16":1,"17":1,"18":8,"19":3,"20":5,"21":1,"22":3,"23":1,"24":2,"25":1,"26":19,"27":1,"28":18,"29":2,"30":2,"31":2,"32":1,"33":1,"34":2,"35":2,"36":2,"37":1,"38":1,"39":2,"40":2,"41":2,"42":1,"43":1,"44":2,"45":2,"46":2,"47":1,"48":1,"49":2,"50":2,"51":2,"52":1,"53":1,"54":2,"55":2,"56":2,"57":1,"58":1,"59":2,"60":2,"61":2,"62":1,"63":1,"64":2,"65":2,"66":2,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":2,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":2,"81":1,"82":1,"83":1,"84":1},"f":{"0":5,"1":5,"2":2,"3":8,"4":3,"5":19,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2},"b":{"0":[1,4],"1":[5,5],"2":[1,4],"3":[5,5,5],"4":[1,1],"5":[2,2],"6":[3,5],"7":[8,8],"8":[1,2],"9":[3,3],"10":[1,18],"11":[19,19],"12":[1,1],"13":[1,1],"14":[1,1],"15":[1,1],"16":[1,1],"17":[1,1],"18":[1,1],"19":[1,1],"20":[1,1],"21":[2,2],"22":[1,1],"23":[2,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"58b3aa51f32cc1c6e0c789379e98a745c16d0863","contentHash":"c7ce0d4d08324b57305d37bcd7b876093748d78c276e9937f6ee82ebf4be5713"},"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.delete.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.delete.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8d1269646a3bba88f8f8bd68af4ace3d871cd311","contentHash":"93d91c7545f8332f97829c366ca9859e74f0bac1511daf2238339a4e7ab09ea3"},"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.retrieve.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.retrieve.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":9,"column":4}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":10,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"93adc99a7efaea474fd636ed594c11a6dee49b7e","contentHash":"3614a07c21c6fe5f3fd155b1ab28034e466cea89e51d720f4242b52cf0d847b4"},"/Users/erikobatomi/Documents/Node-v3/utils/build.js":{"path":"/Users/erikobatomi/Documents/Node-v3/utils/build.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}},"1":{"start":{"line":2,"column":23},"end":{"line":2,"column":57}},"2":{"start":{"line":4,"column":22},"end":{"line":4,"column":44}},"3":{"start":{"line":8,"column":2},"end":{"line":10,"column":3}},"4":{"start":{"line":9,"column":4},"end":{"line":9,"column":50}},"5":{"start":{"line":12,"column":2},"end":{"line":23,"column":5}},"6":{"start":{"line":13,"column":4},"end":{"line":22,"column":7}},"7":{"start":{"line":24,"column":2},"end":{"line":24,"column":16}},"8":{"start":{"line":29,"column":2},"end":{"line":39,"column":3}},"9":{"start":{"line":30,"column":4},"end":{"line":30,"column":15}},"10":{"start":{"line":31,"column":4},"end":{"line":31,"column":25}},"11":{"start":{"line":33,"column":21},"end":{"line":33,"column":52}},"12":{"start":{"line":35,"column":25},"end":{"line":35,"column":50}},"13":{"start":{"line":38,"column":4},"end":{"line":38,"column":24}},"14":{"start":{"line":41,"column":2},"end":{"line":41,"column":31}},"15":{"start":{"line":42,"column":2},"end":{"line":42,"column":23}},"16":{"start":{"line":44,"column":19},"end":{"line":44,"column":50}},"17":{"start":{"line":45,"column":23},"end":{"line":45,"column":48}},"18":{"start":{"line":48,"column":2},"end":{"line":48,"column":22}},"19":{"start":{"line":51,"column":0},"end":{"line":51,"column":55}}},"fnMap":{"0":{"name":"enforceRequired","decl":{"start":{"line":7,"column":9},"end":{"line":7,"column":24}},"loc":{"start":{"line":7,"column":44},"end":{"line":25,"column":1}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":16},"end":{"line":12,"column":17}},"loc":{"start":{"line":12,"column":27},"end":{"line":23,"column":3}},"line":12},"2":{"name":"handleEmptyFetch","decl":{"start":{"line":28,"column":15},"end":{"line":28,"column":31}},"loc":{"start":{"line":28,"column":57},"end":{"line":49,"column":1}},"line":28}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":2},"end":{"line":10,"column":3}},"type":"if","locations":[{"start":{"line":8,"column":2},"end":{"line":10,"column":3}},{"start":{"line":8,"column":2},"end":{"line":10,"column":3}}],"line":8},"1":{"loc":{"start":{"line":29,"column":2},"end":{"line":39,"column":3}},"type":"if","locations":[{"start":{"line":29,"column":2},"end":{"line":39,"column":3}},{"start":{"line":29,"column":2},"end":{"line":39,"column":3}}],"line":29},"2":{"loc":{"start":{"line":29,"column":6},"end":{"line":29,"column":43}},"type":"binary-expr","locations":[{"start":{"line":29,"column":6},"end":{"line":29,"column":25}},{"start":{"line":29,"column":29},"end":{"line":29,"column":43}}],"line":29},"3":{"loc":{"start":{"line":35,"column":25},"end":{"line":35,"column":50}},"type":"binary-expr","locations":[{"start":{"line":35,"column":25},"end":{"line":35,"column":38}},{"start":{"line":35,"column":42},"end":{"line":35,"column":50}}],"line":35},"4":{"loc":{"start":{"line":45,"column":23},"end":{"line":45,"column":48}},"type":"binary-expr","locations":[{"start":{"line":45,"column":23},"end":{"line":45,"column":36}},{"start":{"line":45,"column":40},"end":{"line":45,"column":48}}],"line":45}},"s":{"0":1,"1":1,"2":1,"3":2,"4":1,"5":1,"6":2,"7":1,"8":11,"9":3,"10":3,"11":3,"12":3,"13":3,"14":8,"15":8,"16":8,"17":8,"18":8,"19":1},"f":{"0":2,"1":2,"2":11},"b":{"0":[1,1],"1":[3,8],"2":[11,8],"3":[3,0],"4":[8,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f00fdd3d3650b0d97c27aaf47570d2f7bc81e6d6","contentHash":"ba7f377d39d175075a9ef7de6653690ff2525bea435b4b413d556c6f4e435f6a"},"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.single.retrieve.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.single.retrieve.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"48c0fa5ddc69e143691ff4f0d142b25dba1c82a9","contentHash":"6a72a4910987753d6b3e91513aeaeeb29d0a35206b82c19f6d908c5ca23d553f"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.bills.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.bills.js","statementMap":{"0":{"start":{"line":1,"column":26},"end":{"line":1,"column":77}},"1":{"start":{"line":2,"column":19},"end":{"line":2,"column":72}},"2":{"start":{"line":3,"column":20},"end":{"line":3,"column":71}},"3":{"start":{"line":4,"column":29},"end":{"line":4,"column":88}},"4":{"start":{"line":6,"column":14},"end":{"line":6,"column":65}},"5":{"start":{"line":7,"column":17},"end":{"line":7,"column":70}},"6":{"start":{"line":8,"column":22},"end":{"line":8,"column":81}},"7":{"start":{"line":10,"column":15},"end":{"line":10,"column":59}},"8":{"start":{"line":11,"column":30},"end":{"line":11,"column":88}},"9":{"start":{"line":12,"column":27},"end":{"line":12,"column":79}},"10":{"start":{"line":13,"column":22},"end":{"line":13,"column":69}},"11":{"start":{"line":16,"column":2},"end":{"line":18,"column":4}},"12":{"start":{"line":17,"column":4},"end":{"line":17,"column":38}},"13":{"start":{"line":20,"column":2},"end":{"line":22,"column":4}},"14":{"start":{"line":21,"column":4},"end":{"line":21,"column":45}},"15":{"start":{"line":24,"column":2},"end":{"line":26,"column":4}},"16":{"start":{"line":25,"column":4},"end":{"line":25,"column":39}},"17":{"start":{"line":28,"column":2},"end":{"line":30,"column":4}},"18":{"start":{"line":29,"column":4},"end":{"line":29,"column":48}},"19":{"start":{"line":32,"column":2},"end":{"line":34,"column":4}},"20":{"start":{"line":33,"column":4},"end":{"line":33,"column":33}},"21":{"start":{"line":36,"column":2},"end":{"line":38,"column":4}},"22":{"start":{"line":37,"column":4},"end":{"line":37,"column":36}},"23":{"start":{"line":39,"column":2},"end":{"line":41,"column":4}},"24":{"start":{"line":40,"column":4},"end":{"line":40,"column":41}},"25":{"start":{"line":42,"column":2},"end":{"line":44,"column":4}},"26":{"start":{"line":43,"column":4},"end":{"line":43,"column":34}},"27":{"start":{"line":45,"column":2},"end":{"line":47,"column":4}},"28":{"start":{"line":46,"column":4},"end":{"line":46,"column":49}},"29":{"start":{"line":49,"column":2},"end":{"line":51,"column":4}},"30":{"start":{"line":50,"column":4},"end":{"line":50,"column":46}},"31":{"start":{"line":53,"column":2},"end":{"line":55,"column":4}},"32":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"33":{"start":{"line":57,"column":0},"end":{"line":57,"column":23}}},"fnMap":{"0":{"name":"Bills","decl":{"start":{"line":15,"column":9},"end":{"line":15,"column":14}},"loc":{"start":{"line":15,"column":25},"end":{"line":56,"column":1}},"line":15},"1":{"name":"(anonymous_1)","decl":{"start":{"line":16,"column":21},"end":{"line":16,"column":22}},"loc":{"start":{"line":16,"column":37},"end":{"line":18,"column":3}},"line":16},"2":{"name":"(anonymous_2)","decl":{"start":{"line":20,"column":24},"end":{"line":20,"column":25}},"loc":{"start":{"line":20,"column":40},"end":{"line":22,"column":3}},"line":20},"3":{"name":"(anonymous_3)","decl":{"start":{"line":24,"column":21},"end":{"line":24,"column":22}},"loc":{"start":{"line":24,"column":37},"end":{"line":26,"column":3}},"line":24},"4":{"name":"(anonymous_4)","decl":{"start":{"line":28,"column":28},"end":{"line":28,"column":29}},"loc":{"start":{"line":28,"column":44},"end":{"line":30,"column":3}},"line":28},"5":{"name":"(anonymous_5)","decl":{"start":{"line":32,"column":21},"end":{"line":32,"column":22}},"loc":{"start":{"line":32,"column":37},"end":{"line":34,"column":3}},"line":32},"6":{"name":"(anonymous_6)","decl":{"start":{"line":36,"column":25},"end":{"line":36,"column":26}},"loc":{"start":{"line":36,"column":41},"end":{"line":38,"column":3}},"line":36},"7":{"name":"(anonymous_7)","decl":{"start":{"line":39,"column":30},"end":{"line":39,"column":31}},"loc":{"start":{"line":39,"column":46},"end":{"line":41,"column":3}},"line":39},"8":{"name":"(anonymous_8)","decl":{"start":{"line":42,"column":22},"end":{"line":42,"column":23}},"loc":{"start":{"line":42,"column":38},"end":{"line":44,"column":3}},"line":42},"9":{"name":"(anonymous_9)","decl":{"start":{"line":45,"column":37},"end":{"line":45,"column":38}},"loc":{"start":{"line":45,"column":53},"end":{"line":47,"column":3}},"line":45},"10":{"name":"(anonymous_10)","decl":{"start":{"line":49,"column":22},"end":{"line":49,"column":23}},"loc":{"start":{"line":49,"column":38},"end":{"line":51,"column":3}},"line":49},"11":{"name":"(anonymous_11)","decl":{"start":{"line":53,"column":18},"end":{"line":53,"column":19}},"loc":{"start":{"line":53,"column":34},"end":{"line":55,"column":3}},"line":53}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":12,"12":1,"13":12,"14":1,"15":12,"16":1,"17":12,"18":2,"19":12,"20":1,"21":12,"22":1,"23":12,"24":1,"25":12,"26":1,"27":12,"28":1,"29":12,"30":1,"31":12,"32":1,"33":1},"f":{"0":12,"1":1,"2":1,"3":1,"4":2,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9b5f9e43ae5c2fdaca7ab939fc79a71fe9e0328a","contentHash":"cb82e85d9df331d177b0d6950e015601c8ad57537e51f54e339402069ca0d45f"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.amount.to-be-paid.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.amount.to-be-paid.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":30},"end":{"line":3,"column":55}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b4af8bab244ac2a5de896348e2c4e897f5ae0cfb","contentHash":"dd75cfa08041eb97badf98bfb0c491aba7394786c8ea4aee4d9cbbefbdd872b1"},"/Users/erikobatomi/Documents/Node-v3/services/schema/bill.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/schema/bill.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}},"1":{"start":{"line":3,"column":26},"end":{"line":6,"column":2}},"2":{"start":{"line":8,"column":21},"end":{"line":15,"column":2}},"3":{"start":{"line":17,"column":25},"end":{"line":34,"column":2}},"4":{"start":{"line":36,"column":26},"end":{"line":67,"column":2}},"5":{"start":{"line":50,"column":10},"end":{"line":51,"column":61}},"6":{"start":{"line":51,"column":12},"end":{"line":51,"column":61}},"7":{"start":{"line":52,"column":10},"end":{"line":52,"column":23}},"8":{"start":{"line":69,"column":26},"end":{"line":71,"column":2}},"9":{"start":{"line":73,"column":26},"end":{"line":77,"column":2}},"10":{"start":{"line":79,"column":23},"end":{"line":83,"column":2}},"11":{"start":{"line":85,"column":0},"end":{"line":93,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":49,"column":16},"end":{"line":49,"column":17}},"loc":{"start":{"line":49,"column":27},"end":{"line":53,"column":9}},"line":49}},"branchMap":{"0":{"loc":{"start":{"line":50,"column":10},"end":{"line":51,"column":61}},"type":"if","locations":[{"start":{"line":50,"column":10},"end":{"line":51,"column":61}},{"start":{"line":50,"column":10},"end":{"line":51,"column":61}}],"line":50},"1":{"loc":{"start":{"line":50,"column":14},"end":{"line":50,"column":46}},"type":"binary-expr","locations":[{"start":{"line":50,"column":14},"end":{"line":50,"column":19}},{"start":{"line":50,"column":23},"end":{"line":50,"column":46}}],"line":50}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":2,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"f":{"0":2},"b":{"0":[1,1],"1":[2,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2e0be7b12ddf05f80ea6bea8b301e5c888172c49","contentHash":"9e5ca374acd8156661185db22c0231d1d32bef6db05ef3e023adda0f8a002673"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bill.payment.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bill.payment.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":66}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b374b9e2968579d9a8e5588a1244dbac30e49ba3","contentHash":"0e4f398d588fdbb05ea26258546dcab6990984c32d324728c718822ccd085c79"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bulk.bills.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bulk.bills.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":29},"end":{"line":3,"column":54}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":36}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":71}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5a2cc03251ae03aef3cf2162f2b6e254f60ede51","contentHash":"76ed935af2993bbac209931d1f81c7c8af2f49123e469bc780646fb270574da3"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-order-billing-code.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-order-billing-code.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":30},"end":{"line":3,"column":55}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"aed4eff53db43e9780a9e471bfb3b8bbfcf44ae8","contentHash":"82ef81a57335c98ebe9a9a72830d049876a3e820b657a9d2653100de6952f61a"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get-bill-payments.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get-bill-payments.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":48}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2d2c60e1593142f5ee51eb7990c0f3c1dbd63c2e","contentHash":"a976ebf120d03620803e753875e485f11d3799b7da8cfc8c3afdb3172e89f1d5"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-categories.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-categories.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":9,"column":4}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":10,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"50bce681b44e8373155802f12d035f5a62eca4d2","contentHash":"0dfca3b18d7f3e1e1e8d839d011e111dd02fc3b070d858d9d8567c6c82628fd3"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-payment-agencies.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-payment-agencies.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":9,"column":4}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":10,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2331f902d238e8a29a124dc7f0c7fdbca0aec676","contentHash":"f1b5bb19559083fd41377daa0c5744e2d457b58e7cb3804675b98c1c3050befc"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.status.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.status.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":30},"end":{"line":3,"column":55}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"76a135feb1af5d6d9a5df561419b343acfc21b0c","contentHash":"60837cd017e125cd90b8de2a8ea31bff50ef777232454e9673e8d66f9ccb5d6b"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.products-under-an-agency.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.products-under-an-agency.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8960736a78454f332ec8241ee97ec192a83e345b","contentHash":"5f692e150f3fd71cedd7678689f0ed7389979c9b788c9ccd92fead3ea814d489"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.update-bills.order.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.update-bills.order.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":30},"end":{"line":3,"column":55}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"e581f3ed5c266c7d9be5af54efa722719da7bf00","contentHash":"d5c98e4483adf8049cd79fb348858fbfa24e7698bf508bcdb0e386822f4b1448"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.validate-bill.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.validate-bill.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":27},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":34}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9963c7963fbce6d51b60444720cb7911c2d92901","contentHash":"ee4c871eff6e651794fc443a39bbb090e995d4ade6dc35b10e4fe852181685d1"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.charge.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.charge.js","statementMap":{"0":{"start":{"line":1,"column":20},"end":{"line":1,"column":66}},"1":{"start":{"line":2,"column":17},"end":{"line":2,"column":60}},"2":{"start":{"line":3,"column":16},"end":{"line":3,"column":59}},"3":{"start":{"line":4,"column":20},"end":{"line":4,"column":59}},"4":{"start":{"line":5,"column":24},"end":{"line":5,"column":67}},"5":{"start":{"line":6,"column":23},"end":{"line":6,"column":65}},"6":{"start":{"line":7,"column":20},"end":{"line":7,"column":58}},"7":{"start":{"line":8,"column":19},"end":{"line":8,"column":67}},"8":{"start":{"line":9,"column":17},"end":{"line":9,"column":60}},"9":{"start":{"line":10,"column":18},"end":{"line":10,"column":62}},"10":{"start":{"line":11,"column":15},"end":{"line":11,"column":56}},"11":{"start":{"line":12,"column":17},"end":{"line":12,"column":60}},"12":{"start":{"line":15,"column":2},"end":{"line":17,"column":4}},"13":{"start":{"line":16,"column":4},"end":{"line":16,"column":39}},"14":{"start":{"line":19,"column":2},"end":{"line":21,"column":4}},"15":{"start":{"line":20,"column":4},"end":{"line":20,"column":36}},"16":{"start":{"line":23,"column":2},"end":{"line":25,"column":4}},"17":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"18":{"start":{"line":27,"column":2},"end":{"line":29,"column":4}},"19":{"start":{"line":28,"column":4},"end":{"line":28,"column":35}},"20":{"start":{"line":31,"column":2},"end":{"line":33,"column":4}},"21":{"start":{"line":32,"column":4},"end":{"line":32,"column":39}},"22":{"start":{"line":35,"column":2},"end":{"line":37,"column":4}},"23":{"start":{"line":36,"column":4},"end":{"line":36,"column":43}},"24":{"start":{"line":39,"column":2},"end":{"line":41,"column":4}},"25":{"start":{"line":40,"column":4},"end":{"line":40,"column":42}},"26":{"start":{"line":42,"column":2},"end":{"line":44,"column":4}},"27":{"start":{"line":43,"column":4},"end":{"line":43,"column":38}},"28":{"start":{"line":45,"column":2},"end":{"line":47,"column":4}},"29":{"start":{"line":46,"column":4},"end":{"line":46,"column":36}},"30":{"start":{"line":48,"column":2},"end":{"line":50,"column":4}},"31":{"start":{"line":49,"column":4},"end":{"line":49,"column":37}},"32":{"start":{"line":51,"column":2},"end":{"line":53,"column":4}},"33":{"start":{"line":52,"column":4},"end":{"line":52,"column":34}},"34":{"start":{"line":54,"column":2},"end":{"line":56,"column":4}},"35":{"start":{"line":55,"column":4},"end":{"line":55,"column":36}},"36":{"start":{"line":58,"column":0},"end":{"line":58,"column":24}}},"fnMap":{"0":{"name":"Charge","decl":{"start":{"line":14,"column":9},"end":{"line":14,"column":15}},"loc":{"start":{"line":14,"column":26},"end":{"line":57,"column":1}},"line":14},"1":{"name":"(anonymous_1)","decl":{"start":{"line":15,"column":14},"end":{"line":15,"column":15}},"loc":{"start":{"line":15,"column":30},"end":{"line":17,"column":3}},"line":15},"2":{"name":"(anonymous_2)","decl":{"start":{"line":19,"column":12},"end":{"line":19,"column":13}},"loc":{"start":{"line":19,"column":28},"end":{"line":21,"column":3}},"line":19},"3":{"name":"(anonymous_3)","decl":{"start":{"line":23,"column":13},"end":{"line":23,"column":14}},"loc":{"start":{"line":23,"column":29},"end":{"line":25,"column":3}},"line":23},"4":{"name":"(anonymous_4)","decl":{"start":{"line":27,"column":12},"end":{"line":27,"column":13}},"loc":{"start":{"line":27,"column":28},"end":{"line":29,"column":3}},"line":27},"5":{"name":"(anonymous_5)","decl":{"start":{"line":31,"column":14},"end":{"line":31,"column":15}},"loc":{"start":{"line":31,"column":30},"end":{"line":33,"column":3}},"line":31},"6":{"name":"(anonymous_6)","decl":{"start":{"line":35,"column":18},"end":{"line":35,"column":19}},"loc":{"start":{"line":35,"column":34},"end":{"line":37,"column":3}},"line":35},"7":{"name":"(anonymous_7)","decl":{"start":{"line":39,"column":17},"end":{"line":39,"column":18}},"loc":{"start":{"line":39,"column":33},"end":{"line":41,"column":3}},"line":39},"8":{"name":"(anonymous_8)","decl":{"start":{"line":42,"column":23},"end":{"line":42,"column":24}},"loc":{"start":{"line":42,"column":39},"end":{"line":44,"column":3}},"line":42},"9":{"name":"(anonymous_9)","decl":{"start":{"line":45,"column":18},"end":{"line":45,"column":19}},"loc":{"start":{"line":45,"column":34},"end":{"line":47,"column":3}},"line":45},"10":{"name":"(anonymous_10)","decl":{"start":{"line":48,"column":19},"end":{"line":48,"column":20}},"loc":{"start":{"line":48,"column":35},"end":{"line":50,"column":3}},"line":48},"11":{"name":"(anonymous_11)","decl":{"start":{"line":51,"column":16},"end":{"line":51,"column":17}},"loc":{"start":{"line":51,"column":32},"end":{"line":53,"column":3}},"line":51},"12":{"name":"(anonymous_12)","decl":{"start":{"line":54,"column":18},"end":{"line":54,"column":19}},"loc":{"start":{"line":54,"column":34},"end":{"line":56,"column":3}},"line":54}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":30,"13":5,"14":30,"15":2,"16":30,"17":2,"18":30,"19":1,"20":30,"21":2,"22":30,"23":1,"24":30,"25":0,"26":30,"27":2,"28":30,"29":4,"30":30,"31":4,"32":30,"33":4,"34":30,"35":3,"36":1},"f":{"0":30,"1":5,"2":2,"3":2,"4":1,"5":2,"6":1,"7":0,"8":2,"9":4,"10":4,"11":4,"12":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"93104e87f797fffdcd8bc4b5b422b7617b1e21ff","contentHash":"0b4e6dae565acd8c9465111bd0ea94ff6cdb488a4fa39bcfe5865c7d3f8e2cad"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.card.charge.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.card.charge.js","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":35}},"1":{"start":{"line":3,"column":22},"end":{"line":3,"column":54}},"2":{"start":{"line":4,"column":29},"end":{"line":4,"column":56}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":36}},"4":{"start":{"line":9,"column":18},"end":{"line":9,"column":60}},"5":{"start":{"line":10,"column":16},"end":{"line":10,"column":18}},"6":{"start":{"line":11,"column":2},"end":{"line":11,"column":44}},"7":{"start":{"line":12,"column":2},"end":{"line":12,"column":29}},"8":{"start":{"line":14,"column":29},"end":{"line":17,"column":3}},"9":{"start":{"line":20,"column":2},"end":{"line":20,"column":18}},"10":{"start":{"line":22,"column":0},"end":{"line":22,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":6,"column":15},"end":{"line":6,"column":22}},"loc":{"start":{"line":6,"column":36},"end":{"line":21,"column":1}},"line":6}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":5,"4":3,"5":3,"6":3,"7":3,"8":3,"9":3,"10":1},"f":{"0":5},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"22049d582b1bfbf1b935aa5c25b6a39b9eb55a69","contentHash":"0d7d7b647f9bed76f8b5f4d4e47534c92fa6b02b3066abd6fb9341b5e02657e7"},"/Users/erikobatomi/Documents/Node-v3/services/charge/encryp.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/encryp.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":33}},"1":{"start":{"line":3,"column":15},"end":{"line":6,"column":3}},"2":{"start":{"line":7,"column":2},"end":{"line":9,"column":5}},"3":{"start":{"line":10,"column":2},"end":{"line":10,"column":56}},"4":{"start":{"line":11,"column":2},"end":{"line":11,"column":18}},"5":{"start":{"line":12,"column":18},"end":{"line":12,"column":31}},"6":{"start":{"line":13,"column":2},"end":{"line":13,"column":51}},"7":{"start":{"line":16,"column":0},"end":{"line":16,"column":24}}},"fnMap":{"0":{"name":"encrypt","decl":{"start":{"line":2,"column":9},"end":{"line":2,"column":16}},"loc":{"start":{"line":2,"column":28},"end":{"line":14,"column":1}},"line":2}},"branchMap":{},"s":{"0":1,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4f49f40cffce66b094698516cff8b43230f4ecae","contentHash":"e844662abf83be069a0e3bcebdbeb5cfe6aed565e4e8c4ae22975d6eb374cfa5"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ng-banks.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ng-banks.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":29},"end":{"line":3,"column":56}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":36}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":78}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d5ca3264b61ce6ecaecf45fde942fa0600c1e315","contentHash":"7a962990dc0e0c34333529aad092eb51192c853d0244fc7b6fe543c5b897d7ee"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.uk-banks.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.uk-banks.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":29},"end":{"line":3,"column":56}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":36}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a0382e0df437eb38d11af98522c23b65786560ee","contentHash":"c4df44daf82adb58ce9972261250a0ba59492f24359dd1dc63e2e4e8ad0b7216"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ussd.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ussd.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":29},"end":{"line":3,"column":56}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":36}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":78}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"68d8abc84a3c1151377d2133132fc00507e103da","contentHash":"faf52ccee8ba477ae77fa78d519ad7f3fd9b734152ac06afea09e891b3340949"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.validate.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.validate.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":27},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":34}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":76}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a7f5f0d81640d0b89bd33b8bb545e75f080bc384","contentHash":"9ccfd254a3da97ae4592ac609d477754cdb34bdd4c02c380746df0a3a2c4d139"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.voucher.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.voucher.js","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"75e24c2d599bf75fd9de8319a5ae8ae96305f540","contentHash":"76747bab4fed55a43774d4eea77d69725d4ed1748428c23e13f43701789d9b53"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ach.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ach.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":2,"4":2,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"592f0e7e2c994ae70ed02ef8db2c3c9fce3ee476","contentHash":"99833e99d5b2c1b2c786172fdbe73e7051172a3a849419d9495286bf45b5c7f5"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.bank.transfer.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.bank.transfer.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"40deb7ea3edd33295cce38b1e51bc727dc0ff84c","contentHash":"4fbbdfc6389b4a0ea59f83a4a8935e9a2cc5badc58b3eff11bc9aec70a17e071"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.applepay.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.applepay.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":4,"3":2,"4":2,"5":1},"f":{"0":4},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1fc2c61a167b7216675362623aee319661364e54","contentHash":"ca9f5ee8c982a7bcdd053d36f0ddc8690776c67cb11f74aec1081e00b6a7e9de"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.googlepay.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.googlepay.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":4,"3":2,"4":2,"5":1},"f":{"0":4},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"6d95613fb75e8d3b4b98f05c45cb042a42bca541","contentHash":"82b085c63dc781a4e2490574a16da0fbadfde2e7102fb52e6f3a21b41a2e6934"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.enaira.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.enaira.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":31},"end":{"line":3,"column":58}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":38}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":4,"3":2,"4":2,"5":1},"f":{"0":4},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1df9bb13cf88125bc9dc4fb60b8a666c3c77ee9c","contentHash":"813a8a1e032fa7597fae9a53ba0355210a5ae0350ce0c1364f89cb5aa1aa116b"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.fawrypay.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.fawrypay.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":29},"end":{"line":3,"column":56}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":36}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":3,"3":2,"4":2,"5":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f3a6fb5ae659b02a59bf6a653c14686bebb98784","contentHash":"1ca61deb1771e68bc3b26dd03fc2bf3de27d9993d3e3dac56d37cf1a7cc13326"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.ebills.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.ebills.js","statementMap":{"0":{"start":{"line":1,"column":21},"end":{"line":1,"column":61}},"1":{"start":{"line":2,"column":22},"end":{"line":2,"column":63}},"2":{"start":{"line":6,"column":1},"end":{"line":10,"column":2}},"3":{"start":{"line":8,"column":2},"end":{"line":8,"column":38}},"4":{"start":{"line":12,"column":1},"end":{"line":15,"column":2}},"5":{"start":{"line":14,"column":2},"end":{"line":14,"column":39}},"6":{"start":{"line":18,"column":0},"end":{"line":18,"column":24}}},"fnMap":{"0":{"name":"Ebills","decl":{"start":{"line":4,"column":9},"end":{"line":4,"column":15}},"loc":{"start":{"line":4,"column":26},"end":{"line":17,"column":1}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":14},"end":{"line":6,"column":15}},"loc":{"start":{"line":6,"column":30},"end":{"line":10,"column":2}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":12,"column":15},"end":{"line":12,"column":16}},"loc":{"start":{"line":12,"column":31},"end":{"line":15,"column":2}},"line":12}},"branchMap":{},"s":{"0":1,"1":1,"2":4,"3":3,"4":4,"5":1,"6":1},"f":{"0":4,"1":3,"2":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2b753d05a721900710d932d0a4ca3c09468086fa","contentHash":"5388c94b5631f3fb1c6f379178928ecf589dd7c5aaaae768610f6a451167b7c5"},"/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.order.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.order.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":54}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":67}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":3,"3":1,"4":1,"5":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"eee9eb67a5546a33c364a57a11704966844d1590","contentHash":"81575c6cda79612f44fb65607a683d50062f5d5c05bfa6b2ae49948408f4e56e"},"/Users/erikobatomi/Documents/Node-v3/services/schema/auxillary.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/schema/auxillary.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}},"1":{"start":{"line":4,"column":24},"end":{"line":20,"column":2}},"2":{"start":{"line":23,"column":18},"end":{"line":37,"column":2}},"3":{"start":{"line":40,"column":27},"end":{"line":42,"column":2}},"4":{"start":{"line":45,"column":21},"end":{"line":47,"column":2}},"5":{"start":{"line":50,"column":31},"end":{"line":52,"column":2}},"6":{"start":{"line":55,"column":19},"end":{"line":59,"column":2}},"7":{"start":{"line":62,"column":20},"end":{"line":84,"column":2}},"8":{"start":{"line":80,"column":6},"end":{"line":81,"column":57}},"9":{"start":{"line":81,"column":8},"end":{"line":81,"column":57}},"10":{"start":{"line":82,"column":6},"end":{"line":82,"column":19}},"11":{"start":{"line":87,"column":22},"end":{"line":92,"column":2}},"12":{"start":{"line":95,"column":23},"end":{"line":97,"column":2}},"13":{"start":{"line":100,"column":21},"end":{"line":104,"column":2}},"14":{"start":{"line":107,"column":25},"end":{"line":111,"column":2}},"15":{"start":{"line":114,"column":26},"end":{"line":127,"column":2}},"16":{"start":{"line":121,"column":6},"end":{"line":122,"column":57}},"17":{"start":{"line":122,"column":8},"end":{"line":122,"column":57}},"18":{"start":{"line":123,"column":6},"end":{"line":123,"column":19}},"19":{"start":{"line":130,"column":25},"end":{"line":133,"column":2}},"20":{"start":{"line":136,"column":23},"end":{"line":139,"column":2}},"21":{"start":{"line":142,"column":26},"end":{"line":147,"column":2}},"22":{"start":{"line":149,"column":24},"end":{"line":151,"column":2}},"23":{"start":{"line":153,"column":0},"end":{"line":170,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":79,"column":12},"end":{"line":79,"column":13}},"loc":{"start":{"line":79,"column":23},"end":{"line":83,"column":5}},"line":79},"1":{"name":"(anonymous_1)","decl":{"start":{"line":120,"column":12},"end":{"line":120,"column":13}},"loc":{"start":{"line":120,"column":23},"end":{"line":124,"column":5}},"line":120}},"branchMap":{"0":{"loc":{"start":{"line":80,"column":6},"end":{"line":81,"column":57}},"type":"if","locations":[{"start":{"line":80,"column":6},"end":{"line":81,"column":57}},{"start":{"line":80,"column":6},"end":{"line":81,"column":57}}],"line":80},"1":{"loc":{"start":{"line":80,"column":10},"end":{"line":80,"column":42}},"type":"binary-expr","locations":[{"start":{"line":80,"column":10},"end":{"line":80,"column":15}},{"start":{"line":80,"column":19},"end":{"line":80,"column":42}}],"line":80},"2":{"loc":{"start":{"line":121,"column":6},"end":{"line":122,"column":57}},"type":"if","locations":[{"start":{"line":121,"column":6},"end":{"line":122,"column":57}},{"start":{"line":121,"column":6},"end":{"line":122,"column":57}}],"line":121},"3":{"loc":{"start":{"line":121,"column":10},"end":{"line":121,"column":42}},"type":"binary-expr","locations":[{"start":{"line":121,"column":10},"end":{"line":121,"column":15}},{"start":{"line":121,"column":19},"end":{"line":121,"column":42}}],"line":121}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":2,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":2,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1},"f":{"0":2,"1":2},"b":{"0":[1,1],"1":[2,2],"2":[1,1],"3":[2,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"344c322e3ecb13691a936f496306bff93bc692ae","contentHash":"163b2f861ce42b81a9f47c96a45cd72f6882f04c6399e440f369141d507fb681"},"/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.update.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.update.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":55}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f5dd82de0f0653821eadd13cb69f819d68486531","contentHash":"a5724062a33a157fff19e991b78be5deffb0594ca7a87fa8913d204887ed40aa"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.misc.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.misc.js","statementMap":{"0":{"start":{"line":1,"column":26},"end":{"line":1,"column":76}},"1":{"start":{"line":2,"column":16},"end":{"line":2,"column":57}},"2":{"start":{"line":3,"column":16},"end":{"line":3,"column":61}},"3":{"start":{"line":4,"column":17},"end":{"line":4,"column":60}},"4":{"start":{"line":5,"column":20},"end":{"line":5,"column":68}},"5":{"start":{"line":8,"column":2},"end":{"line":10,"column":4}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":45}},"7":{"start":{"line":12,"column":2},"end":{"line":14,"column":4}},"8":{"start":{"line":13,"column":4},"end":{"line":13,"column":35}},"9":{"start":{"line":16,"column":2},"end":{"line":18,"column":4}},"10":{"start":{"line":17,"column":4},"end":{"line":17,"column":35}},"11":{"start":{"line":20,"column":2},"end":{"line":22,"column":3}},"12":{"start":{"line":21,"column":4},"end":{"line":21,"column":36}},"13":{"start":{"line":24,"column":2},"end":{"line":26,"column":4}},"14":{"start":{"line":25,"column":4},"end":{"line":25,"column":39}},"15":{"start":{"line":28,"column":0},"end":{"line":28,"column":22}}},"fnMap":{"0":{"name":"Misc","decl":{"start":{"line":7,"column":9},"end":{"line":7,"column":13}},"loc":{"start":{"line":7,"column":24},"end":{"line":27,"column":1}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":22},"end":{"line":8,"column":23}},"loc":{"start":{"line":8,"column":38},"end":{"line":10,"column":3}},"line":8},"2":{"name":"(anonymous_2)","decl":{"start":{"line":12,"column":13},"end":{"line":12,"column":14}},"loc":{"start":{"line":12,"column":29},"end":{"line":14,"column":3}},"line":12},"3":{"name":"(anonymous_3)","decl":{"start":{"line":16,"column":13},"end":{"line":16,"column":14}},"loc":{"start":{"line":16,"column":29},"end":{"line":18,"column":3}},"line":16},"4":{"name":"(anonymous_4)","decl":{"start":{"line":20,"column":19},"end":{"line":20,"column":20}},"loc":{"start":{"line":20,"column":35},"end":{"line":22,"column":3}},"line":20},"5":{"name":"(anonymous_5)","decl":{"start":{"line":24,"column":24},"end":{"line":24,"column":25}},"loc":{"start":{"line":24,"column":40},"end":{"line":26,"column":3}},"line":24}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":5,"6":1,"7":5,"8":1,"9":5,"10":1,"11":5,"12":1,"13":5,"14":1,"15":1},"f":{"0":5,"1":1,"2":1,"3":1,"4":1,"5":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"e48499d5041a8d491cf426c0a1e66370e61249b1","contentHash":"957d7035625bf80626a369eb3267db63b0578acebeac242758a41f95cbdcfa14"},"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances-currency.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances-currency.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":55}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"080767e032377be0679046b91ca5239ca3a1c85c","contentHash":"927f592df2d87e673911b3a51e21bc10d41be7ef7359ec8bd0e8cac31a861b88"},"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":4,"column":78}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":5,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"37ca47c53b042b4231e1cfccebaba0788081d660","contentHash":"d5dac772dd44b3bde08a36437051b271193ac9347b3bd259c5a158ad36674299"},"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.initiate.bvn.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.initiate.bvn.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":30},"end":{"line":3,"column":60}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":78}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"800c40925fdca2a6877b9b01932b8f3698ddde5c","contentHash":"1efd11efea465da2e8de7ed65d5cb76b2da554f1665fc75515b4741f11850b94"},"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.verify.bvn.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.verify.bvn.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":28},"end":{"line":3,"column":58}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":35}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8bce58ee468f4c8f9e1ee309345758dfe236ce8c","contentHash":"97d33c9b9a2a442becf73faf5c5390098d7f7fc37d582d8a56496eb35e49c529"},"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.resolve.account.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.resolve.account.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":26},"end":{"line":3,"column":56}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":33}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":23}},"4":{"start":{"line":8,"column":29},"end":{"line":8,"column":77}},"5":{"start":{"line":10,"column":2},"end":{"line":10,"column":18}},"6":{"start":{"line":13,"column":0},"end":{"line":13,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":11,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c98e056f1d625053af9d25a4e00b18555596a568","contentHash":"add19a5672d2a9f4371c28233bed2bc15cc1d674945d93367cb7e9c40847fd8b"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.mobile_money.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.mobile_money.js","statementMap":{"0":{"start":{"line":1,"column":11},"end":{"line":1,"column":57}},"1":{"start":{"line":2,"column":20},"end":{"line":2,"column":66}},"2":{"start":{"line":3,"column":11},"end":{"line":3,"column":58}},"3":{"start":{"line":4,"column":11},"end":{"line":4,"column":58}},"4":{"start":{"line":5,"column":11},"end":{"line":5,"column":58}},"5":{"start":{"line":6,"column":14},"end":{"line":6,"column":66}},"6":{"start":{"line":7,"column":11},"end":{"line":7,"column":60}},"7":{"start":{"line":10,"column":2},"end":{"line":12,"column":4}},"8":{"start":{"line":11,"column":4},"end":{"line":11,"column":30}},"9":{"start":{"line":14,"column":2},"end":{"line":16,"column":4}},"10":{"start":{"line":15,"column":4},"end":{"line":15,"column":39}},"11":{"start":{"line":18,"column":2},"end":{"line":20,"column":4}},"12":{"start":{"line":19,"column":4},"end":{"line":19,"column":30}},"13":{"start":{"line":22,"column":2},"end":{"line":24,"column":4}},"14":{"start":{"line":23,"column":4},"end":{"line":23,"column":30}},"15":{"start":{"line":25,"column":2},"end":{"line":27,"column":4}},"16":{"start":{"line":26,"column":4},"end":{"line":26,"column":33}},"17":{"start":{"line":29,"column":2},"end":{"line":31,"column":4}},"18":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"19":{"start":{"line":33,"column":2},"end":{"line":35,"column":3}},"20":{"start":{"line":34,"column":4},"end":{"line":34,"column":30}},"21":{"start":{"line":37,"column":0},"end":{"line":37,"column":30}}},"fnMap":{"0":{"name":"Mobile_money","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":21}},"loc":{"start":{"line":9,"column":32},"end":{"line":36,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":15},"end":{"line":10,"column":16}},"loc":{"start":{"line":10,"column":31},"end":{"line":12,"column":3}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":15},"end":{"line":14,"column":16}},"loc":{"start":{"line":14,"column":31},"end":{"line":16,"column":3}},"line":14},"3":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":16},"end":{"line":18,"column":17}},"loc":{"start":{"line":18,"column":32},"end":{"line":20,"column":3}},"line":18},"4":{"name":"(anonymous_4)","decl":{"start":{"line":22,"column":16},"end":{"line":22,"column":17}},"loc":{"start":{"line":22,"column":32},"end":{"line":24,"column":3}},"line":22},"5":{"name":"(anonymous_5)","decl":{"start":{"line":25,"column":22},"end":{"line":25,"column":23}},"loc":{"start":{"line":25,"column":38},"end":{"line":27,"column":3}},"line":25},"6":{"name":"(anonymous_6)","decl":{"start":{"line":29,"column":16},"end":{"line":29,"column":17}},"loc":{"start":{"line":29,"column":32},"end":{"line":31,"column":3}},"line":29},"7":{"name":"(anonymous_7)","decl":{"start":{"line":33,"column":18},"end":{"line":33,"column":19}},"loc":{"start":{"line":33,"column":34},"end":{"line":35,"column":3}},"line":33}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":19,"8":3,"9":19,"10":3,"11":19,"12":2,"13":19,"14":2,"15":19,"16":5,"17":19,"18":2,"19":19,"20":2,"21":1},"f":{"0":19,"1":3,"2":3,"3":2,"4":2,"5":5,"6":2,"7":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5e6eee7ee91c8e14bf29cb783ef20a0e01010e07","contentHash":"dde4cc542ba6e88a19841b856561c63cbcc33ca52f579cd0fe7d4a174c5edd78"},"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.ghana.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.ghana.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":3,"3":1,"4":1,"5":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"205b3a3cfab227630eea00fa120bc039943843a9","contentHash":"9069bf221d2107b3a1080fa40fe293796d898c90dca4883150293ddf8ee3e4ed"},"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.mpesa.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.mpesa.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":79}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":3,"3":2,"4":2,"5":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8734da56dac153dba45badb3d8dbdfecde330e5b","contentHash":"a0c456d306643304ce5f19f57b5a4bcdf0b97a51ef40e24d5a23809d7e676527"},"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.rwanda.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.rwanda.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4c320db05fac4d7da2e25a240f356140c6cce062","contentHash":"98fd2cae2adf4c45d151a24ffe83a615c51317dafcff89ad6b05a0da9fd59f97"},"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.uganda.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.uganda.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"356d33b641322353f8b3b02fc00d7c2b455acaf3","contentHash":"cfc68174234958d5b8ae99b5d84a4033c635dc169a01c9e700e79f6c9739f0fa"},"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.zambia.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.zambia.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8f06eca8aa02cb1ff979139c6596f995cfee9601","contentHash":"e705eb0d48d92d5af0161abd5da6b279a72631a5bcae92545602192a0d5fc823"},"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.francophone.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.francophone.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":5,"3":3,"4":3,"5":1},"f":{"0":5},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"cb7782e6207cb9416f0ea388d81648e916b3ee04","contentHash":"cbc5121637755396a3611b5a27d85b5b2e5c85c430fb86dbeb12514156126839"},"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.tanzania.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.tanzania.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"33bf83f059271325340238412051c67e180ce565","contentHash":"0991a9824afd90efb207e7a06eb30b83e0ade6f0ef16d4c07325dc3588c48982"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.otps.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.otps.js","statementMap":{"0":{"start":{"line":1,"column":19},"end":{"line":1,"column":58}},"1":{"start":{"line":2,"column":21},"end":{"line":2,"column":62}},"2":{"start":{"line":7,"column":1},"end":{"line":11,"column":2}},"3":{"start":{"line":9,"column":2},"end":{"line":9,"column":36}},"4":{"start":{"line":13,"column":1},"end":{"line":17,"column":2}},"5":{"start":{"line":15,"column":2},"end":{"line":15,"column":38}},"6":{"start":{"line":22,"column":0},"end":{"line":22,"column":21}}},"fnMap":{"0":{"name":"Otp","decl":{"start":{"line":5,"column":9},"end":{"line":5,"column":12}},"loc":{"start":{"line":5,"column":23},"end":{"line":21,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":15},"end":{"line":7,"column":16}},"loc":{"start":{"line":7,"column":31},"end":{"line":11,"column":2}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":17},"end":{"line":13,"column":18}},"loc":{"start":{"line":13,"column":33},"end":{"line":17,"column":2}},"line":13}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":2,"5":1,"6":1},"f":{"0":2,"1":1,"2":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"fe48453d68cf039cd16d9630281f783a8b53c870","contentHash":"c7392b6857cba0a0b2fc18d57a8404aef1702aa1e4d6b722792ccd22f4f792a4"},"/Users/erikobatomi/Documents/Node-v3/services/otps/rave.create.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/otps/rave.create.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":28},"end":{"line":3,"column":58}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":35}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":65}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"623ff0c6a5c283d895b16e9f6a973733a8480f41","contentHash":"ed43ef082469498086c5e2da368b2372d0a750fd8c7389136384e81e4499e409"},"/Users/erikobatomi/Documents/Node-v3/services/otps/rave.validate.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/otps/rave.validate.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":27},"end":{"line":3,"column":57}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":34}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2d095d3faed89e4109e7669d992ffed459314a78","contentHash":"4c8dd0b781e8fd572441340650898aa30baea82dd1534c52b9173b093f74fb80"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.payment_plan.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.payment_plan.js","statementMap":{"0":{"start":{"line":1,"column":20},"end":{"line":1,"column":68}},"1":{"start":{"line":2,"column":20},"end":{"line":2,"column":68}},"2":{"start":{"line":3,"column":21},"end":{"line":3,"column":75}},"3":{"start":{"line":4,"column":24},"end":{"line":4,"column":81}},"4":{"start":{"line":5,"column":20},"end":{"line":5,"column":68}},"5":{"start":{"line":12,"column":1},"end":{"line":16,"column":2}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":37}},"7":{"start":{"line":18,"column":1},"end":{"line":22,"column":2}},"8":{"start":{"line":20,"column":2},"end":{"line":20,"column":37}},"9":{"start":{"line":23,"column":1},"end":{"line":27,"column":2}},"10":{"start":{"line":25,"column":2},"end":{"line":25,"column":38}},"11":{"start":{"line":28,"column":1},"end":{"line":32,"column":2}},"12":{"start":{"line":30,"column":2},"end":{"line":30,"column":41}},"13":{"start":{"line":33,"column":1},"end":{"line":37,"column":2}},"14":{"start":{"line":35,"column":2},"end":{"line":35,"column":37}},"15":{"start":{"line":40,"column":0},"end":{"line":40,"column":30}}},"fnMap":{"0":{"name":"Payment_plan","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":21}},"loc":{"start":{"line":9,"column":32},"end":{"line":39,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":15},"end":{"line":12,"column":16}},"loc":{"start":{"line":12,"column":31},"end":{"line":16,"column":2}},"line":12},"2":{"name":"(anonymous_2)","decl":{"start":{"line":18,"column":15},"end":{"line":18,"column":16}},"loc":{"start":{"line":18,"column":31},"end":{"line":22,"column":2}},"line":18},"3":{"name":"(anonymous_3)","decl":{"start":{"line":23,"column":16},"end":{"line":23,"column":17}},"loc":{"start":{"line":23,"column":32},"end":{"line":27,"column":2}},"line":23},"4":{"name":"(anonymous_4)","decl":{"start":{"line":28,"column":17},"end":{"line":28,"column":18}},"loc":{"start":{"line":28,"column":33},"end":{"line":32,"column":2}},"line":28},"5":{"name":"(anonymous_5)","decl":{"start":{"line":33,"column":15},"end":{"line":33,"column":16}},"loc":{"start":{"line":33,"column":31},"end":{"line":37,"column":2}},"line":33}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":5,"6":1,"7":5,"8":1,"9":5,"10":1,"11":5,"12":1,"13":5,"14":1,"15":1},"f":{"0":5,"1":1,"2":1,"3":1,"4":1,"5":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9cc775c29a1b774a531671dc7412d44871a0a49b","contentHash":"1464c2bc1a66109728900faacdbce4273ac3caae6d8d6ee584ac2914468e2d67"},"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.create.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.create.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":74}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5eb4584a853ba4248f3e27467bd2af63ddf3878b","contentHash":"31a01d9079be71c2c9e95298d32c86630e9f23da33e8cc0190719b83f9c6fe37"},"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.cancel.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.cancel.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d0fd166038e9590fb84a8bad1734a7384ab06df8","contentHash":"79046b3564da751b3e05857826be26f31afbf0c0428df3b09892403ef992e53c"},"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.all.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.all.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":4,"column":79}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":5,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"eebb1688a8eeea3fc3d4411a4b70f4c7616c97c0","contentHash":"8500468b67451519ee24f0ce63f7eade737671bf9420a164070505fae8f36aca"},"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.single.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.single.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"6d36056f8420e147af5c9643cbc3e9ae543586ff","contentHash":"f1b7fde16447110f4e1daae681997e8d80addf79eed9e224c446d17bae7b0274"},"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.update.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.update.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":29},"end":{"line":3,"column":59}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":36}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"504619a48f9dbb5148dbb1c4592c11720cbdc3a6","contentHash":"10214c3211263e3747cbba64915ec90d5d92bbea1d52e7858a0eb0a8755aaa01"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.settlements.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.settlements.js","statementMap":{"0":{"start":{"line":1,"column":21},"end":{"line":1,"column":73}},"1":{"start":{"line":2,"column":17},"end":{"line":2,"column":65}},"2":{"start":{"line":8,"column":1},"end":{"line":12,"column":2}},"3":{"start":{"line":10,"column":2},"end":{"line":10,"column":38}},"4":{"start":{"line":14,"column":1},"end":{"line":18,"column":2}},"5":{"start":{"line":16,"column":2},"end":{"line":16,"column":34}},"6":{"start":{"line":22,"column":0},"end":{"line":22,"column":29}}},"fnMap":{"0":{"name":"Settlements","decl":{"start":{"line":5,"column":9},"end":{"line":5,"column":20}},"loc":{"start":{"line":5,"column":31},"end":{"line":21,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":18},"end":{"line":8,"column":19}},"loc":{"start":{"line":8,"column":34},"end":{"line":12,"column":2}},"line":8},"2":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":14},"end":{"line":14,"column":15}},"loc":{"start":{"line":14,"column":30},"end":{"line":18,"column":2}},"line":14}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":2,"5":1,"6":1},"f":{"0":2,"1":1,"2":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f37c8747be5827c967b4074f61bc841b9f4aa47c","contentHash":"d3925c1fea75c1f6423cd97eab2dcd6198835a3bc7a9cd8e079e671d2bc53674"},"/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve-all.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve-all.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":9,"column":4}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":10,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"38e4d712936a9a4ccd1c3124c898f5cdf9c9801b","contentHash":"11d93a47b7a888b1c4c13f00eb7b595cd418e111b5b5ace2c13e66f5f1c69f36"},"/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":48}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"27890be14e6065f24b8369673cda2809471ea87c","contentHash":"5ae10aad73c4895de96c66fa56c1a5d71a0cac01d276dcee149b294ceee9c91c"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.subscriptions.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.subscriptions.js","statementMap":{"0":{"start":{"line":1,"column":21},"end":{"line":1,"column":71}},"1":{"start":{"line":2,"column":19},"end":{"line":2,"column":67}},"2":{"start":{"line":3,"column":21},"end":{"line":3,"column":75}},"3":{"start":{"line":4,"column":18},"end":{"line":4,"column":75}},"4":{"start":{"line":10,"column":1},"end":{"line":14,"column":2}},"5":{"start":{"line":12,"column":2},"end":{"line":12,"column":38}},"6":{"start":{"line":16,"column":1},"end":{"line":20,"column":2}},"7":{"start":{"line":18,"column":2},"end":{"line":18,"column":36}},"8":{"start":{"line":22,"column":1},"end":{"line":26,"column":2}},"9":{"start":{"line":24,"column":2},"end":{"line":24,"column":38}},"10":{"start":{"line":28,"column":1},"end":{"line":32,"column":2}},"11":{"start":{"line":30,"column":2},"end":{"line":30,"column":35}},"12":{"start":{"line":35,"column":0},"end":{"line":35,"column":31}}},"fnMap":{"0":{"name":"Subscriptions","decl":{"start":{"line":7,"column":9},"end":{"line":7,"column":22}},"loc":{"start":{"line":7,"column":33},"end":{"line":34,"column":1}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":17},"end":{"line":10,"column":18}},"loc":{"start":{"line":10,"column":33},"end":{"line":14,"column":2}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":15},"end":{"line":16,"column":16}},"loc":{"start":{"line":16,"column":31},"end":{"line":20,"column":2}},"line":16},"3":{"name":"(anonymous_3)","decl":{"start":{"line":22,"column":18},"end":{"line":22,"column":19}},"loc":{"start":{"line":22,"column":34},"end":{"line":26,"column":2}},"line":22},"4":{"name":"(anonymous_4)","decl":{"start":{"line":28,"column":12},"end":{"line":28,"column":13}},"loc":{"start":{"line":28,"column":28},"end":{"line":32,"column":2}},"line":28}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":4,"5":1,"6":4,"7":1,"8":4,"9":1,"10":4,"11":1,"12":1},"f":{"0":4,"1":1,"2":1,"3":1,"4":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b6eba3fb4ab4b95a768f132767d8b0ae2e38dfd9","contentHash":"403a3182cbab9034bff41db0ab750741f220696e969d9fefd73c5517c181bae1"},"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.activate.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.activate.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d509b7c7dd9de8c97b2fc917bc07777b6d3318d9","contentHash":"43cca5277af06fa3c7d93e6c80241f4d77daa9f090e9624391005ee922f88943"},"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.cancel.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.cancel.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4695c2e09096dd3f911a99dd948d81994ff4f56a","contentHash":"85f8021ac4007473961c8bcb44d77c26388bedde089efd95542e881b4d384565"},"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.all.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.all.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":9,"column":4}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":10,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"62a85dbc20c908890b3838e149659a10e3e5c412","contentHash":"6b5ba8aa04db2c82d1d116976b725671d8c1c3489f684c8f2356567fd861739f"},"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.single.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.single.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":48}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":8,"column":75}},"5":{"start":{"line":10,"column":2},"end":{"line":10,"column":18}},"6":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":11,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"e0326745651f1709df56084d5af3d23e97ba4da0","contentHash":"f63ae1a3e3531ff4b7f4bf3398c0d2ad66194fb606d9252ac934d4cd6381e1f0"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.tokenized.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.tokenized.js","statementMap":{"0":{"start":{"line":1,"column":20},"end":{"line":1,"column":77}},"1":{"start":{"line":2,"column":21},"end":{"line":2,"column":73}},"2":{"start":{"line":3,"column":24},"end":{"line":3,"column":85}},"3":{"start":{"line":4,"column":30},"end":{"line":4,"column":104}},"4":{"start":{"line":5,"column":23},"end":{"line":5,"column":82}},"5":{"start":{"line":13,"column":1},"end":{"line":17,"column":2}},"6":{"start":{"line":15,"column":2},"end":{"line":15,"column":38}},"7":{"start":{"line":18,"column":1},"end":{"line":22,"column":2}},"8":{"start":{"line":20,"column":2},"end":{"line":20,"column":41}},"9":{"start":{"line":24,"column":1},"end":{"line":28,"column":2}},"10":{"start":{"line":26,"column":2},"end":{"line":26,"column":37}},"11":{"start":{"line":30,"column":1},"end":{"line":34,"column":2}},"12":{"start":{"line":32,"column":2},"end":{"line":32,"column":47}},"13":{"start":{"line":37,"column":1},"end":{"line":41,"column":2}},"14":{"start":{"line":39,"column":2},"end":{"line":39,"column":40}},"15":{"start":{"line":46,"column":0},"end":{"line":46,"column":27}}},"fnMap":{"0":{"name":"Tokenized","decl":{"start":{"line":10,"column":9},"end":{"line":10,"column":18}},"loc":{"start":{"line":10,"column":29},"end":{"line":45,"column":1}},"line":10},"1":{"name":"(anonymous_1)","decl":{"start":{"line":13,"column":15},"end":{"line":13,"column":16}},"loc":{"start":{"line":13,"column":31},"end":{"line":17,"column":2}},"line":13},"2":{"name":"(anonymous_2)","decl":{"start":{"line":18,"column":19},"end":{"line":18,"column":20}},"loc":{"start":{"line":18,"column":35},"end":{"line":22,"column":2}},"line":18},"3":{"name":"(anonymous_3)","decl":{"start":{"line":24,"column":13},"end":{"line":24,"column":14}},"loc":{"start":{"line":24,"column":29},"end":{"line":28,"column":2}},"line":24},"4":{"name":"(anonymous_4)","decl":{"start":{"line":30,"column":34},"end":{"line":30,"column":35}},"loc":{"start":{"line":30,"column":50},"end":{"line":34,"column":2}},"line":30},"5":{"name":"(anonymous_5)","decl":{"start":{"line":37,"column":21},"end":{"line":37,"column":22}},"loc":{"start":{"line":37,"column":37},"end":{"line":41,"column":2}},"line":37}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":6,"6":1,"7":6,"8":1,"9":6,"10":1,"11":6,"12":1,"13":6,"14":2,"15":1},"f":{"0":6,"1":1,"2":1,"3":1,"4":1,"5":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"3450c969c4d5832069d27d2311db923f573c2154","contentHash":"b629309c3db46c18112963f180023382583172db61a3aba335d49ea514176928"},"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.bulk.charge.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.bulk.charge.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":28},"end":{"line":3,"column":55}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":35}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"56f87ff313e080a60a8e9710b480d75f6cfe52e0","contentHash":"dd2dec2120b21462276926668597933f4cfe592bf3825589231ab61e5518e6fd"},"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.charge.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.charge.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":51}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":78}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f6c3ef17ff4b730adae6801694fb196985582dab","contentHash":"fc5817a106860131722a6d5b14ed7ea7a53fe3b07b80471eee9648f04410863f"},"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.a.bulk.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.a.bulk.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":27},"end":{"line":3,"column":57}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":34}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"0f1eed6a6b95165ef6943e279106a54492c2e2e6","contentHash":"cf46dcab9b78c05e18545707341b8cd1ac133f0981441f7b8c7dd987d7100631"},"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.charge.transactions.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.charge.transactions.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":27},"end":{"line":3,"column":57}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":34}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9896a537b8d8e86e96a3048a8c06437c2e93410c","contentHash":"3116c9243a632b74c1a5298c9bb7365b30c2d67a0313954febadfc100f120141"},"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.update.tokens.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.update.tokens.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":30},"end":{"line":3,"column":60}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1,"6":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"121901168a4a8d2a4d81f2c4ee946a579c69d055","contentHash":"0aa41d96bea09ccbe43ec90e8ba7021be6239002e2ba67e56a69b1db828e54f1"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.transactions.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.transactions.js","statementMap":{"0":{"start":{"line":1,"column":20},"end":{"line":1,"column":67}},"1":{"start":{"line":2,"column":18},"end":{"line":2,"column":62}},"2":{"start":{"line":3,"column":21},"end":{"line":3,"column":68}},"3":{"start":{"line":4,"column":27},"end":{"line":4,"column":80}},"4":{"start":{"line":5,"column":23},"end":{"line":5,"column":72}},"5":{"start":{"line":6,"column":21},"end":{"line":6,"column":68}},"6":{"start":{"line":7,"column":24},"end":{"line":7,"column":80}},"7":{"start":{"line":10,"column":2},"end":{"line":12,"column":4}},"8":{"start":{"line":11,"column":4},"end":{"line":11,"column":39}},"9":{"start":{"line":14,"column":2},"end":{"line":16,"column":4}},"10":{"start":{"line":15,"column":4},"end":{"line":15,"column":37}},"11":{"start":{"line":18,"column":2},"end":{"line":20,"column":4}},"12":{"start":{"line":19,"column":4},"end":{"line":19,"column":40}},"13":{"start":{"line":22,"column":2},"end":{"line":24,"column":4}},"14":{"start":{"line":23,"column":4},"end":{"line":23,"column":46}},"15":{"start":{"line":26,"column":2},"end":{"line":28,"column":4}},"16":{"start":{"line":27,"column":4},"end":{"line":27,"column":42}},"17":{"start":{"line":30,"column":2},"end":{"line":32,"column":4}},"18":{"start":{"line":31,"column":4},"end":{"line":31,"column":40}},"19":{"start":{"line":34,"column":2},"end":{"line":36,"column":3}},"20":{"start":{"line":35,"column":4},"end":{"line":35,"column":43}},"21":{"start":{"line":38,"column":0},"end":{"line":38,"column":30}}},"fnMap":{"0":{"name":"Transactions","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":21}},"loc":{"start":{"line":9,"column":32},"end":{"line":37,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":15},"end":{"line":10,"column":16}},"loc":{"start":{"line":10,"column":31},"end":{"line":12,"column":3}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":13},"end":{"line":14,"column":14}},"loc":{"start":{"line":14,"column":29},"end":{"line":16,"column":3}},"line":14},"3":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":16},"end":{"line":18,"column":17}},"loc":{"start":{"line":18,"column":32},"end":{"line":20,"column":3}},"line":18},"4":{"name":"(anonymous_4)","decl":{"start":{"line":22,"column":22},"end":{"line":22,"column":23}},"loc":{"start":{"line":22,"column":38},"end":{"line":24,"column":3}},"line":22},"5":{"name":"(anonymous_5)","decl":{"start":{"line":26,"column":15},"end":{"line":26,"column":16}},"loc":{"start":{"line":26,"column":31},"end":{"line":28,"column":3}},"line":26},"6":{"name":"(anonymous_6)","decl":{"start":{"line":30,"column":16},"end":{"line":30,"column":17}},"loc":{"start":{"line":30,"column":32},"end":{"line":32,"column":3}},"line":30},"7":{"name":"(anonymous_7)","decl":{"start":{"line":34,"column":22},"end":{"line":34,"column":23}},"loc":{"start":{"line":34,"column":38},"end":{"line":36,"column":3}},"line":34}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":7,"8":1,"9":7,"10":1,"11":7,"12":1,"13":7,"14":1,"15":7,"16":1,"17":7,"18":1,"19":7,"20":1,"21":1},"f":{"0":7,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"68f24f5d69453ead341d1812cdb156e57e3eea4f","contentHash":"8966610150f041b56beb9cea70afd39bb76bc9a9d1e799144ee6deef107932ee"},"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.events.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.events.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"122cbf6571a1a71c5b0992e3e99b471b4977f2e0","contentHash":"f4b0061a412865e5f549ed421fe30340091035ee0432d06c88537840a1ac7db3"},"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.fee.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.fee.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":22},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":29}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ea589c9a2cc1983d840754911b32858dc54935d9","contentHash":"0446755527565ebb3fabe05adbc5fc6d20bce0cf61e63986be8199fd58d67bc7"},"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.refund.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.refund.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":23}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"925f23b94e44b58775cc752d97165e2a5fca2550","contentHash":"89ade50778e933ae233a6a78af8e24e4e0e711a9f288cb56eb2b2c5b377be870"},"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.resend-hooks.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.resend-hooks.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":23}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"45b917d770f8e5db78f5f4dac54aad220ce7d6b8","contentHash":"f211f43ec958673097cb05a6edb3c5e3b472e3d68b8dc6c7aaea540b42465264"},"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.retrieve.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.retrieve.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":9,"column":4}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":10,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"130c2ae0e59d6905ee4807e838adf219405bfcd6","contentHash":"c5000b70e1b0883467465d95609874aee4973ea3ad384cb31e085d17b908ad03"},"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"7fa6ed56a85b0a9ad839ea52efb031ed63bd4073","contentHash":"c0c2a89793b8dfb243f2a335d01e08ebcd4cad052be9decd0c97096bf6ac6233"},"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify-by-txref.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify-by-txref.js","statementMap":{"0":{"start":{"line":1,"column":23},"end":{"line":1,"column":48}},"1":{"start":{"line":3,"column":22},"end":{"line":3,"column":54}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d809a1b7aa7c790abc181dd9ec0b3c4ae3e9a549","contentHash":"f81c0d77a7d3ea562fddbc4ac57d5b4875350607a7c013de5771533b31acf4f9"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.transfers.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.transfers.js","statementMap":{"0":{"start":{"line":1,"column":22},"end":{"line":1,"column":64}},"1":{"start":{"line":2,"column":21},"end":{"line":2,"column":62}},"2":{"start":{"line":3,"column":26},"end":{"line":3,"column":72}},"3":{"start":{"line":4,"column":24},"end":{"line":4,"column":80}},"4":{"start":{"line":5,"column":21},"end":{"line":5,"column":64}},"5":{"start":{"line":6,"column":15},"end":{"line":6,"column":59}},"6":{"start":{"line":9,"column":2},"end":{"line":11,"column":4}},"7":{"start":{"line":10,"column":4},"end":{"line":10,"column":41}},"8":{"start":{"line":13,"column":2},"end":{"line":15,"column":4}},"9":{"start":{"line":14,"column":4},"end":{"line":14,"column":40}},"10":{"start":{"line":16,"column":2},"end":{"line":18,"column":4}},"11":{"start":{"line":17,"column":4},"end":{"line":17,"column":45}},"12":{"start":{"line":19,"column":2},"end":{"line":21,"column":4}},"13":{"start":{"line":20,"column":4},"end":{"line":20,"column":43}},"14":{"start":{"line":22,"column":2},"end":{"line":24,"column":4}},"15":{"start":{"line":23,"column":4},"end":{"line":23,"column":40}},"16":{"start":{"line":25,"column":2},"end":{"line":27,"column":4}},"17":{"start":{"line":26,"column":4},"end":{"line":26,"column":34}},"18":{"start":{"line":29,"column":0},"end":{"line":29,"column":27}}},"fnMap":{"0":{"name":"Transfers","decl":{"start":{"line":8,"column":9},"end":{"line":8,"column":18}},"loc":{"start":{"line":8,"column":29},"end":{"line":28,"column":1}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":14},"end":{"line":9,"column":15}},"loc":{"start":{"line":9,"column":30},"end":{"line":11,"column":3}},"line":9},"2":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":13},"end":{"line":13,"column":14}},"loc":{"start":{"line":13,"column":29},"end":{"line":15,"column":3}},"line":13},"3":{"name":"(anonymous_3)","decl":{"start":{"line":16,"column":18},"end":{"line":16,"column":19}},"loc":{"start":{"line":16,"column":34},"end":{"line":18,"column":3}},"line":16},"4":{"name":"(anonymous_4)","decl":{"start":{"line":19,"column":15},"end":{"line":19,"column":16}},"loc":{"start":{"line":19,"column":31},"end":{"line":21,"column":3}},"line":19},"5":{"name":"(anonymous_5)","decl":{"start":{"line":22,"column":24},"end":{"line":22,"column":25}},"loc":{"start":{"line":22,"column":40},"end":{"line":24,"column":3}},"line":22},"6":{"name":"(anonymous_6)","decl":{"start":{"line":25,"column":26},"end":{"line":25,"column":27}},"loc":{"start":{"line":25,"column":42},"end":{"line":27,"column":3}},"line":25}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":8,"7":1,"8":8,"9":1,"10":8,"11":3,"12":8,"13":1,"14":8,"15":1,"16":8,"17":1,"18":1},"f":{"0":8,"1":1,"2":1,"3":3,"4":1,"5":1,"6":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"0ae623da225b58b485130feec9e0c93d70a30ab3","contentHash":"c634a1ea26950f7a7ceed38985fd1bcbe64b4a24b5c64140b3e331ab645b2fff"},"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.bulk.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.bulk.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":37},"end":{"line":3,"column":64}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":44}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":75}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c1e391ae99282bc11109c88cfdb42c0b39435d25","contentHash":"8f7ff01c26c59e9d0bdcde41cdd2f476c21884343a8062e12eed0e93d937a81c"},"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fee.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fee.js","statementMap":{"0":{"start":{"line":1,"column":23},"end":{"line":1,"column":48}},"1":{"start":{"line":3,"column":22},"end":{"line":3,"column":54}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":30}},"3":{"start":{"line":8,"column":2},"end":{"line":8,"column":22}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":27}},"5":{"start":{"line":10,"column":29},"end":{"line":13,"column":3}},"6":{"start":{"line":15,"column":2},"end":{"line":15,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":6,"column":15},"end":{"line":6,"column":22}},"loc":{"start":{"line":6,"column":36},"end":{"line":16,"column":1}},"line":6}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"92979cf6997229720b06d7a1d7b1d2cf779c1529","contentHash":"9dec098c0476b88b67ad0ea3f9af64fbc8781e6ad8bdcae61dc528b19bd0ddc5"},"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.initiate.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.initiate.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":27},"end":{"line":3,"column":54}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":34}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":70}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":3,"3":2,"4":2,"5":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"fd9bd6b62abc48a095786cb3fbf5fbe8129b72dc","contentHash":"e676f6d59e92c3a97097fbe325186ed0acd4e579a8722f80cba41a0735ca144f"},"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.retrieve.transfers.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.retrieve.transfers.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":4,"column":80}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":5,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d1548a3c136c481987bb2bfb9db355e17a127cb2","contentHash":"d07865df87383646159b92e8c38c42c566e5b296fcfa156842e09513f1b2881f"},"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fetch.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fetch.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"92dbe8e1b3c8cbc4e03d557c9144c207eece14b4","contentHash":"3fe0e13ff47c5530b35b82f8dfd56095f7579d68e3de84a72a55e0a929449125"},"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.wallet.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.wallet.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":33},"end":{"line":3,"column":60}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":40}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":70}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"029699a411ee7714248f50512930d022160e37f3","contentHash":"96a4e1fe0b5528fbadfe3e3bf68b030442e9084c7b76c5e1d6ab2eccf63c895f"}} \ No newline at end of file diff --git a/.nyc_output/processinfo/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json b/.nyc_output/processinfo/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json new file mode 100644 index 0000000..cc6f0f6 --- /dev/null +++ b/.nyc_output/processinfo/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json @@ -0,0 +1 @@ +{"parent":null,"pid":85285,"argv":["/usr/local/bin/node","/usr/local/bin/npm","run","test"],"execArgv":[],"cwd":"/Users/erikobatomi/Documents/Node-v3","time":1769595100143,"ppid":85265,"coverageFilename":"/Users/erikobatomi/Documents/Node-v3/.nyc_output/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json","externalId":"","uuid":"41a907c4-45a9-4ac9-9cda-86b9cfb33510","files":[]} \ No newline at end of file diff --git a/.nyc_output/processinfo/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json b/.nyc_output/processinfo/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json new file mode 100644 index 0000000..41cd5df --- /dev/null +++ b/.nyc_output/processinfo/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json @@ -0,0 +1 @@ +{"parent":"41a907c4-45a9-4ac9-9cda-86b9cfb33510","pid":85304,"argv":["/usr/local/bin/node","/Users/erikobatomi/Documents/Node-v3/node_modules/.bin/mocha","test/rave.bank.test.js","test/rave.base.test.js","test/rave.beneficiaries.test.js","test/rave.bills.test.js","test/rave.card.charge.test.js","test/rave.charge.test.js","test/rave.ebills.test.js","test/rave.misc.test.js","test/rave.momo.test.js","test/rave.otp.test.js","test/rave.payment-plan.test.js","test/rave.security.test.js","test/rave.settlements.test.js","test/rave.subscriptions.test.js","test/rave.tokenization.test.js","test/rave.transactions.test.js","test/rave.transfer.test.js","test/rave.utils.build.test.js","test/rave.utils.error.test.js","test/rave.utils.test.js","test/rave.virtualcards.test.js"],"execArgv":[],"cwd":"/Users/erikobatomi/Documents/Node-v3","time":1769595100633,"ppid":85285,"coverageFilename":"/Users/erikobatomi/Documents/Node-v3/.nyc_output/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json","externalId":"","uuid":"5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b","files":["/Users/erikobatomi/Documents/Node-v3/lib/rave.banks.js","/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-branches.js","/Users/erikobatomi/Documents/Node-v3/utils/validator.js","/Users/erikobatomi/Documents/Node-v3/utils/error.js","/Users/erikobatomi/Documents/Node-v3/utils/logger.js","/Users/erikobatomi/Documents/Node-v3/services/schema/base.js","/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-country.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.base.js","/Users/erikobatomi/Documents/Node-v3/utils/rave.utils.js","/Users/erikobatomi/Documents/Node-v3/lib/security.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.beneficiaries.js","/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.create.js","/Users/erikobatomi/Documents/Node-v3/services/schema/create.js","/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.delete.js","/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.retrieve.js","/Users/erikobatomi/Documents/Node-v3/utils/build.js","/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.single.retrieve.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.bills.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.amount.to-be-paid.js","/Users/erikobatomi/Documents/Node-v3/services/schema/bill.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bill.payment.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bulk.bills.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-order-billing-code.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get-bill-payments.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-categories.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-payment-agencies.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.status.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.products-under-an-agency.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.update-bills.order.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.validate-bill.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.charge.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.card.charge.js","/Users/erikobatomi/Documents/Node-v3/services/charge/encryp.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ng-banks.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.uk-banks.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ussd.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.validate.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.voucher.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ach.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.bank.transfer.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.applepay.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.googlepay.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.enaira.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.fawrypay.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.ebills.js","/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.order.js","/Users/erikobatomi/Documents/Node-v3/services/schema/auxillary.js","/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.update.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.misc.js","/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances-currency.js","/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances.js","/Users/erikobatomi/Documents/Node-v3/services/misc/rave.initiate.bvn.js","/Users/erikobatomi/Documents/Node-v3/services/misc/rave.verify.bvn.js","/Users/erikobatomi/Documents/Node-v3/services/misc/rave.resolve.account.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.mobile_money.js","/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.ghana.js","/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.mpesa.js","/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.rwanda.js","/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.uganda.js","/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.zambia.js","/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.francophone.js","/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.tanzania.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.otps.js","/Users/erikobatomi/Documents/Node-v3/services/otps/rave.create.js","/Users/erikobatomi/Documents/Node-v3/services/otps/rave.validate.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.payment_plan.js","/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.create.js","/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.cancel.js","/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.all.js","/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.single.js","/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.update.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.settlements.js","/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve-all.js","/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.subscriptions.js","/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.activate.js","/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.cancel.js","/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.all.js","/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.single.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.tokenized.js","/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.bulk.charge.js","/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.charge.js","/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.a.bulk.js","/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.charge.transactions.js","/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.update.tokens.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.transactions.js","/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.events.js","/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.fee.js","/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.refund.js","/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.resend-hooks.js","/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.retrieve.js","/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify.js","/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify-by-txref.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.transfers.js","/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.bulk.js","/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fee.js","/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.initiate.js","/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.retrieve.transfers.js","/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fetch.js","/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.wallet.js"]} \ No newline at end of file diff --git a/.nyc_output/processinfo/index.json b/.nyc_output/processinfo/index.json new file mode 100644 index 0000000..24495c6 --- /dev/null +++ b/.nyc_output/processinfo/index.json @@ -0,0 +1 @@ +{"processes":{"41a907c4-45a9-4ac9-9cda-86b9cfb33510":{"parent":null,"children":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"]},"5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b":{"parent":"41a907c4-45a9-4ac9-9cda-86b9cfb33510","children":[]}},"files":{"/Users/erikobatomi/Documents/Node-v3/lib/rave.banks.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-branches.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/utils/validator.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/utils/error.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/utils/logger.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/schema/base.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-country.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.base.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/utils/rave.utils.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/security.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.beneficiaries.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.create.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/schema/create.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.delete.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.retrieve.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/utils/build.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.single.retrieve.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.bills.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.amount.to-be-paid.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/schema/bill.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bill.payment.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bulk.bills.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-order-billing-code.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get-bill-payments.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-categories.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-payment-agencies.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.status.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.products-under-an-agency.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.update-bills.order.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.validate-bill.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.charge.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.card.charge.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/encryp.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ng-banks.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.uk-banks.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ussd.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.validate.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.voucher.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ach.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.bank.transfer.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.applepay.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.googlepay.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.enaira.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.fawrypay.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.ebills.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.order.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/schema/auxillary.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.update.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.misc.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances-currency.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.initiate.bvn.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.verify.bvn.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.resolve.account.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.mobile_money.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.ghana.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.mpesa.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.rwanda.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.uganda.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.zambia.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.francophone.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.tanzania.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.otps.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/otps/rave.create.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/otps/rave.validate.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.payment_plan.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.create.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.cancel.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.all.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.single.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.update.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.settlements.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve-all.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.subscriptions.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.activate.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.cancel.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.all.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.single.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.tokenized.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.bulk.charge.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.charge.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.a.bulk.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.charge.transactions.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.update.tokens.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.transactions.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.events.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.fee.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.refund.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.resend-hooks.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.retrieve.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify-by-txref.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.transfers.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.bulk.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fee.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.initiate.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.retrieve.transfers.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fetch.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.wallet.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"]},"externalIds":{}} \ No newline at end of file diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css new file mode 100644 index 0000000..f418035 --- /dev/null +++ b/coverage/lcov-report/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js new file mode 100644 index 0000000..cc12130 --- /dev/null +++ b/coverage/lcov-report/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1525b811a167671e9de1fa78aab9f5c0b61cef7 GIT binary patch literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 99.89% + Statements + 983/984 +
+ + +
+ 90.59% + Branches + 106/117 +
+ + +
+ 99.53% + Functions + 214/215 +
+ + +
+ 99.89% + Lines + 981/982 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
lib +
+
99.7%335/33671.87%23/3299.11%112/11399.7%334/335
services/banks +
+
100%16/16100%0/0100%2/2100%16/16
services/beneficiaries +
+
100%23/23100%0/0100%4/4100%23/23
services/bills +
+
100%68/68100%0/0100%11/11100%68/68
services/charge +
+
100%79/79100%0/0100%12/12100%79/79
services/ebills +
+
100%13/13100%0/0100%2/2100%13/13
services/misc +
+
100%32/32100%0/0100%5/5100%32/32
services/mobile-money +
+
100%42/42100%0/0100%7/7100%42/42
services/otps +
+
100%12/12100%0/0100%2/2100%12/12
services/payment-plans +
+
100%30/30100%0/0100%5/5100%30/30
services/schema +
+
100%127/127100%61/61100%19/19100%127/127
services/settlements +
+
100%10/10100%0/0100%2/2100%10/10
services/subscriptions +
+
100%24/24100%0/0100%4/4100%24/24
services/tokenized-charges +
+
100%33/33100%0/0100%5/5100%33/33
services/transactions +
+
100%49/49100%0/0100%7/7100%49/49
services/transfers +
+
100%37/37100%0/0100%6/6100%37/37
utils +
+
100%53/5391.66%22/24100%9/9100%52/52
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/index.html b/coverage/lcov-report/lib/index.html new file mode 100644 index 0000000..67ee248 --- /dev/null +++ b/coverage/lcov-report/lib/index.html @@ -0,0 +1,341 @@ + + + + + + Code coverage report for lib + + + + + + + + + +
+
+

All files lib

+
+ +
+ 99.7% + Statements + 335/336 +
+ + +
+ 71.87% + Branches + 23/32 +
+ + +
+ 99.11% + Functions + 112/113 +
+ + +
+ 99.7% + Lines + 334/335 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
rave.banks.js +
+
100%7/7100%0/0100%3/3100%7/7
rave.base.js +
+
100%75/7570%21/30100%21/21100%75/75
rave.beneficiaries.js +
+
100%13/13100%0/0100%5/5100%13/13
rave.bills.js +
+
100%34/34100%0/0100%12/12100%34/34
rave.charge.js +
+
97.29%36/37100%0/092.3%12/1397.29%36/37
rave.ebills.js +
+
100%7/7100%0/0100%3/3100%7/7
rave.misc.js +
+
100%16/16100%0/0100%6/6100%16/16
rave.mobile_money.js +
+
100%22/22100%0/0100%8/8100%22/22
rave.otps.js +
+
100%7/7100%0/0100%3/3100%7/7
rave.payment_plan.js +
+
100%16/16100%0/0100%6/6100%16/16
rave.settlements.js +
+
100%7/7100%0/0100%3/3100%7/7
rave.subscriptions.js +
+
100%13/13100%0/0100%5/5100%13/13
rave.tokenized.js +
+
100%16/16100%0/0100%6/6100%16/16
rave.transactions.js +
+
100%22/22100%0/0100%8/8100%22/22
rave.transfers.js +
+
100%19/19100%0/0100%7/7100%19/19
security.js +
+
100%25/25100%2/2100%4/4100%24/24
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.banks.js.html b/coverage/lcov-report/lib/rave.banks.js.html new file mode 100644 index 0000000..6bf5709 --- /dev/null +++ b/coverage/lcov-report/lib/rave.banks.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for lib/rave.banks.js + + + + + + + + + +
+
+

All files / lib rave.banks.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +171x +1x +  +  +  +2x +  +1x +  +  +2x +  +1x +  +  +  +1x
const banks_branches = require('../services/banks/rave.banks-branches')
+const banks_country = require('../services/banks/rave.banks-country')
+ 
+function Bank(RaveBase) {
+ 
+	this.branches = function (data) {
+ 
+		return banks_branches(data, RaveBase);
+	}
+ 
+	this.country = function (data) {
+ 
+		return banks_country(data, RaveBase);
+ 
+	}
+}
+module.exports = Bank;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.base.js.html b/coverage/lcov-report/lib/rave.base.js.html new file mode 100644 index 0000000..49ffa52 --- /dev/null +++ b/coverage/lcov-report/lib/rave.base.js.html @@ -0,0 +1,577 @@ + + + + + + Code coverage report for lib/rave.base.js + + + + + + + + + +
+
+

All files / lib rave.base.js

+
+ +
+ 100% + Statements + 75/75 +
+ + +
+ 70% + Branches + 21/30 +
+ + +
+ 100% + Functions + 21/21 +
+ + +
+ 100% + Lines + 75/75 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +1651x +1x +1x +1x +  +1x +48x +48x +  +48x +48x +48x +  +  +48x +1x +  +  +48x +4x +  +  +48x +9x +  +  +48x +16x +  +  +48x +1x +1x +  +  +  +48x +7x +7x +  +  +  +7x +7x +7x +  +  +  +  +  +7x +  +  +7x +  +  +  +  +  +  +  +  +7x +1x +1x +1x +1x +1x +1x +1x +  +  +  +  +6x +  +3x +3x +3x +3x +  +  +  +  +7x +7x +7x +7x +7x +7x +  +7x +3x +3x +  +4x +  +  +  +  +1x +1x +1x +  +  +1x +1x +  +  +  +  +  +  +1x +3x +  +2x +  +  +  +  +2x +  +  +1x +  +  +1x +1x +  +  +  +  +1x +  +  +  +1x +4x +4x +  +3x +  +  +  +  +3x +  +  +1x +  +  +2x +2x +  +  +  +  +1x +  +  +  +  +1x + 
var q = require('q');
+const querystring = require('querystring');
+var RaveUtils = require('../utils/rave.utils');
+var Security = require('./security');
+ 
+var RaveBase = function (public_key, secret_key, _base_url) {
+  RaveUtils.emptyCheck(public_key, 'Public Key required');
+  RaveUtils.emptyCheck(secret_key, 'Secret Key required');
+ 
+  var public_key = public_key;
+  var secret_key = secret_key;
+  var base_url = 'https://api.flutterwave.com/';
+ 
+  // Override BaseURL
+  if (_base_url && typeof _base_url === 'string') {
+    base_url = _base_url;
+  }
+ 
+  this.getPublicKey = function () {
+    return public_key;
+  };
+ 
+  this.getSecretKey = function () {
+    return secret_key;
+  };
+ 
+  this.getBaseUrl = function () {
+    return base_url;
+  };
+ 
+  this.setBaseUrl = function (new_base_url) {
+    Eif (new_base_url) {
+      base_url = new_base_url;
+    }
+  };
+ 
+  this.request = function (path, payload, callback) {
+    var requestOptions = {};
+    var requestMethod = RaveUtils.initDefaultValue(
+      payload.method,
+      'POST' || 'PUT',
+    );
+    var datakey = requestMethod == 'POST' || 'PUT' ? 'body' : 'qs';
+    var requestJSON = datakey == 'body' ? true : false;
+    var includeQueryParams = RaveUtils.initDefaultValue(
+      payload.excludeQuery,
+      false,
+    );
+ 
+    // Build URL
+    let fullUrl = this.getBaseUrl() + path;
+ 
+    // Prepare request options for fetch
+    const fetchOptions = {
+      method: requestMethod,
+      headers: {
+        'Content-Type': 'application/json',
+        Authorization: `Bearer ${this.getSecretKey()}`,
+      },
+    };
+ 
+    // Handle query parameters for GET requests
+    if (requestMethod === 'GET') {
+      delete payload.method;
+      Eif (!includeQueryParams) {
+        delete payload.excludeQuery;
+        const queryParams = querystring.stringify(payload);
+        Eif (queryParams) {
+          fullUrl += fullUrl.includes('?') ? '&' : '?';
+          fullUrl += queryParams;
+        }
+      }
+    } else {
+      // Handle request body for non-GET requests
+      if (Object.keys(payload).length > 0) {
+        // Remove method and excludeQuery properties before sending
+        const payloadCopy = { ...payload };
+        delete payloadCopy.method;
+        delete payloadCopy.excludeQuery;
+        fetchOptions.body = JSON.stringify(payloadCopy);
+      }
+    }
+ 
+    // Store original options for legacy compatibility
+    requestOptions.uri = path;
+    requestOptions.baseUrl = this.getBaseUrl();
+    requestOptions.method = requestMethod;
+    requestOptions[datakey] = RaveUtils.initDefaultValue(payload, {});
+    requestOptions.json = requestJSON;
+    requestOptions.headers = fetchOptions.headers;
+ 
+    if (callback) {
+      this._makeRequest(fullUrl, fetchOptions, callback);
+      return requestOptions;
+    } else {
+      return this._makePromiseRequest(fullUrl, fetchOptions);
+    }
+  };
+};
+ 
+RaveBase.prototype.encrypt = function (data) {
+  var encryption_key = Security.getEncryptionKey(this.getSecretKey());
+  return Security.encrypt(encryption_key, JSON.stringify(data));
+};
+ 
+RaveBase.prototype.getIntegrityHash = function (data) {
+  return Security.getIntegrityHash(
+    data,
+    this.getPublicKey(),
+    this.getSecretKey(),
+  );
+};
+ 
+RaveBase.prototype._makeRequest = function (url, fetchOptions, callback) {
+  fetch(url, fetchOptions)
+    .then((response) => {
+      const res = {
+        statusCode: response.status,
+        headers: Object.fromEntries(response.headers.entries()),
+      };
+ 
+      return response
+        .json()
+        .then((body) => {
+          callback(null, res, body);
+        })
+        .catch((err) => {
+          return response.text().then((textBody) => {
+            callback(null, res, textBody || {});
+          });
+        });
+    })
+    .catch((err) => {
+      callback(err, {}, {});
+    });
+};
+ 
+RaveBase.prototype._makePromiseRequest = function (url, fetchOptions) {
+  return new Promise((resolve, reject) => {
+    fetch(url, fetchOptions)
+      .then((response) => {
+        const res = {
+          statusCode: response.status,
+          headers: Object.fromEntries(response.headers.entries()),
+        };
+ 
+        return response
+          .json()
+          .then((body) => {
+            resolve({ res, body });
+          })
+          .catch((err) => {
+            return response.text().then((textBody) => {
+              resolve({ res, body: textBody || {} });
+            });
+          });
+      })
+      .catch((err) => {
+        reject(err);
+      });
+  });
+};
+ 
+module.exports = RaveBase;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.beneficiaries.js.html b/coverage/lcov-report/lib/rave.beneficiaries.js.html new file mode 100644 index 0000000..24c2190 --- /dev/null +++ b/coverage/lcov-report/lib/rave.beneficiaries.js.html @@ -0,0 +1,148 @@ + + + + + + Code coverage report for lib/rave.beneficiaries.js + + + + + + + + + +
+
+

All files / lib rave.beneficiaries.js

+
+ +
+ 100% + Statements + 13/13 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 13/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +221x +1x +1x +1x +  +  +4x +1x +  +  +4x +1x +  +4x +1x +  +4x +1x +  +  +1x + 
const create_beneficiary = require('../services/beneficiaries/rave.create');
+const del_beneficiary = require('../services/beneficiaries/rave.delete');
+const retrieve_all = require('../services/beneficiaries/rave.retrieve');
+const retrieve = require('../services/beneficiaries/rave.single.retrieve');
+ 
+function Beneficiaries(RaveBase) {
+  this.create = function (data) {
+    return create_beneficiary(data, RaveBase);
+  };
+ 
+  this.delete = function (data) {
+    return del_beneficiary(data, RaveBase);
+  };
+  this.fetch_all = function (data) {
+    return retrieve_all(data, RaveBase);
+  };
+  this.fetch = function (data) {
+    return retrieve(data, RaveBase);
+  };
+}
+module.exports = Beneficiaries;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.bills.js.html b/coverage/lcov-report/lib/rave.bills.js.html new file mode 100644 index 0000000..f031529 --- /dev/null +++ b/coverage/lcov-report/lib/rave.bills.js.html @@ -0,0 +1,256 @@ + + + + + + Code coverage report for lib/rave.bills.js + + + + + + + + + +
+
+

All files / lib rave.bills.js

+
+ +
+ 100% + Statements + 34/34 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 12/12 +
+ + +
+ 100% + Lines + 34/34 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +581x +1x +1x +1x +  +1x +1x +1x +  +1x +1x +1x +1x +  +  +12x +1x +  +  +12x +1x +  +  +12x +1x +  +  +12x +2x +  +  +12x +1x +  +  +12x +1x +  +12x +1x +  +12x +1x +  +12x +1x +  +  +12x +1x +  +  +12x +1x +  +  +1x + 
const amount_to_be_paid = require('../services/bills/rave.amount.to-be-paid');
+const createbill = require('../services/bills/rave.create-bill.payment');
+const create_bulk = require('../services/bills/rave.create-bulk.bills');
+const create_order_billing = require('../services/bills/rave.create-order-billing-code');
+// const get_a_recurring = require('../services/bills/rave.get-a-recurring-bill')
+const bills = require('../services/bills/rave.get-bill-payments');
+const bill_cat = require('../services/bills/rave.get.bill-categories');
+const bill_agencies = require('../services/bills/rave.get.bill-payment-agencies');
+// const get_recurring_bills = require ('../services/bills/rave.get.recurrings-bills')
+const status = require('../services/bills/rave.get.status');
+const products_under_agency = require('../services/bills/rave.products-under-an-agency');
+const update_bills_order = require('../services/bills/rave.update-bills.order');
+const validate_bill = require('../services/bills/rave.validate-bill');
+ 
+function Bills(RaveBase) {
+  this.create_bill = function (data) {
+    return createbill(data, RaveBase);
+  };
+ 
+  this.amt_to_be_paid = function (data) {
+    return amount_to_be_paid(data, RaveBase);
+  };
+ 
+  this.create_bulk = function (data) {
+    return create_bulk(data, RaveBase);
+  };
+ 
+  this.create_ord_billing = function (data) {
+    return create_order_billing(data, RaveBase);
+  };
+ 
+  this.fetch_bills = function (data) {
+    return bills(data, RaveBase);
+  };
+ 
+  this.fetch_bills_Cat = function (data) {
+    return bill_cat(data, RaveBase);
+  };
+  this.fetch_bills_agencies = function (data) {
+    return bill_agencies(data, RaveBase);
+  };
+  this.fetch_status = function (data) {
+    return status(data, RaveBase);
+  };
+  this.fetch_products_under_agency = function (data) {
+    return products_under_agency(data, RaveBase);
+  };
+ 
+  this.update_bills = function (data) {
+    return update_bills_order(data, RaveBase);
+  };
+ 
+  this.validate = function (data) {
+    return validate_bill(data, RaveBase);
+  };
+}
+module.exports = Bills;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.charge.js.html b/coverage/lcov-report/lib/rave.charge.js.html new file mode 100644 index 0000000..5790d1f --- /dev/null +++ b/coverage/lcov-report/lib/rave.charge.js.html @@ -0,0 +1,259 @@ + + + + + + Code coverage report for lib/rave.charge.js + + + + + + + + + +
+
+

All files / lib rave.charge.js

+
+ +
+ 97.29% + Statements + 36/37 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 92.3% + Functions + 12/13 +
+ + +
+ 97.29% + Lines + 36/37 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +591x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +  +  +30x +5x +  +  +30x +2x +  +  +30x +2x +  +  +30x +1x +  +  +30x +2x +  +  +30x +1x +  +  +30x +  +  +30x +2x +  +30x +4x +  +30x +4x +  +30x +4x +  +30x +3x +  +  +1x + 
const card_charge = require('../services/charge/rave.card.charge');
+const ng_banks = require('../services/charge/rave.ng-banks');
+const uk_bank = require('../services/charge/rave.uk-banks');
+const ussd_Charge = require('../services/charge/rave.ussd');
+const validate_charge = require('../services/charge/rave.validate');
+const voucher_charge = require('../services/charge/rave.voucher');
+const ach_payment = require('../services/charge/rave.ach');
+const bank_trans = require('../services/charge/rave.bank.transfer');
+const applepay = require('../services/charge/rave.applepay');
+const googlepay = require('../services/charge/rave.googlepay');
+const enaira = require('../services/charge/rave.enaira');
+const fawrypay = require('../services/charge/rave.fawrypay');
+ 
+function Charge(RaveBase) {
+  this.card = function (data) {
+    return card_charge(data, RaveBase);
+  };
+ 
+  this.ng = function (data) {
+    return ng_banks(data, RaveBase);
+  };
+ 
+  this.ach = function (data) {
+    return ach_payment(data, RaveBase);
+  };
+ 
+  this.uk = function (data) {
+    return uk_bank(data, RaveBase);
+  };
+ 
+  this.ussd = function (data) {
+    return ussd_Charge(data, RaveBase);
+  };
+ 
+  this.validate = function (data) {
+    return validate_charge(data, RaveBase);
+  };
+ 
+  this.voucher = function (data) {
+    return voucher_charge(data, RaveBase);
+  };
+  this.bank_transfer = function (data) {
+    return bank_trans(data, RaveBase);
+  };
+  this.applepay = function (data) {
+    return applepay(data, RaveBase);
+  };
+  this.googlepay = function (data) {
+    return googlepay(data, RaveBase);
+  };
+  this.enaira = function (data) {
+    return enaira(data, RaveBase);
+  };
+  this.fawrypay = function (data) {
+    return fawrypay(data, RaveBase);
+  };
+}
+module.exports = Charge;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.ebills.js.html b/coverage/lcov-report/lib/rave.ebills.js.html new file mode 100644 index 0000000..2f060b2 --- /dev/null +++ b/coverage/lcov-report/lib/rave.ebills.js.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for lib/rave.ebills.js + + + + + + + + + +
+
+

All files / lib rave.ebills.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +181x +1x +  +  +  +4x +  +3x +  +  +  +4x +  +1x +  +  +  +1x
const order_ebills = require('../services/ebills/rave.order')
+const update_ebills = require('../services/ebills/rave.update')
+ 
+function Ebills(RaveBase) {
+ 
+	this.order = function (data) {
+ 
+		return order_ebills(data, RaveBase);
+ 
+	}
+ 
+	this.update = function (data) {
+ 
+		return update_ebills(data, RaveBase);
+	}
+ 
+}
+module.exports = Ebills;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.misc.js.html b/coverage/lcov-report/lib/rave.misc.js.html new file mode 100644 index 0000000..957ec60 --- /dev/null +++ b/coverage/lcov-report/lib/rave.misc.js.html @@ -0,0 +1,169 @@ + + + + + + Code coverage report for lib/rave.misc.js + + + + + + + + + +
+
+

All files / lib rave.misc.js

+
+ +
+ 100% + Statements + 16/16 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 6/6 +
+ + +
+ 100% + Lines + 16/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +291x +1x +1x +1x +1x +  +  +5x +1x +  +  +5x +1x +  +  +5x +1x +  +  +5x +1x +  +  +5x +1x +  +  +1x + 
const balances_currency = require('../services/misc/rave.balances-currency');
+const get_bal = require('../services/misc/rave.balances');
+const initBVN = require('../services/misc/rave.initiate.bvn');
+const verifBVN = require('../services/misc/rave.verify.bvn')
+const resolve_act = require('../services/misc/rave.resolve.account');
+ 
+function Misc(RaveBase) {
+  this.bal_currency = function (data) {
+    return balances_currency(data, RaveBase);
+  };
+ 
+  this.bal = function (data) {
+    return get_bal(data, RaveBase);
+  };
+ 
+  this.bvn = function (data) {
+    return initBVN(data, RaveBase);
+  };
+ 
+  this.verifybvn = function (data) {
+    return verifBVN(data, RaveBase);
+  }
+ 
+  this.verify_Account = function (data) {
+    return resolve_act(data, RaveBase);
+  };
+}
+module.exports = Misc;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.mobile_money.js.html b/coverage/lcov-report/lib/rave.mobile_money.js.html new file mode 100644 index 0000000..0a07f8a --- /dev/null +++ b/coverage/lcov-report/lib/rave.mobile_money.js.html @@ -0,0 +1,196 @@ + + + + + + Code coverage report for lib/rave.mobile_money.js + + + + + + + + + +
+
+

All files / lib rave.mobile_money.js

+
+ +
+ 100% + Statements + 22/22 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 8/8 +
+ + +
+ 100% + Lines + 22/22 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +381x +1x +1x +1x +1x +1x +1x +  +  +19x +3x +  +  +19x +3x +  +  +19x +2x +  +  +19x +2x +  +19x +5x +  +  +19x +2x +  +  +19x +2x +  +  +1x + 
const gh = require('../services/mobile-money/rave.ghana');
+const mpesa_money = require('../services/mobile-money/rave.mpesa');
+const rw = require('../services/mobile-money/rave.rwanda');
+const ug = require('../services/mobile-money/rave.uganda');
+const zm = require('../services/mobile-money/rave.zambia');
+const franc = require('../services/mobile-money/rave.francophone');
+const tz = require('../services/mobile-money/rave.tanzania')
+ 
+function Mobile_money(RaveBase) {
+  this.ghana = function (data) {
+    return gh(data, RaveBase);
+  };
+ 
+  this.mpesa = function (data) {
+    return mpesa_money(data, RaveBase);
+  };
+ 
+  this.rwanda = function (data) {
+    return rw(data, RaveBase);
+  };
+ 
+  this.uganda = function (data) {
+    return ug(data, RaveBase);
+  };
+  this.franco_phone = function (data) {
+    return franc(data, RaveBase);
+  };
+ 
+  this.zambia = function (data) {
+    return zm(data, RaveBase);
+  };
+ 
+  this.tanzania = function (data) {
+    return tz(data, RaveBase);
+  }
+}
+module.exports = Mobile_money;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.otps.js.html b/coverage/lcov-report/lib/rave.otps.js.html new file mode 100644 index 0000000..50c17fb --- /dev/null +++ b/coverage/lcov-report/lib/rave.otps.js.html @@ -0,0 +1,148 @@ + + + + + + Code coverage report for lib/rave.otps.js + + + + + + + + + +
+
+

All files / lib rave.otps.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +221x +1x +  +  +  +  +2x +  +1x +  +  +  +2x +  +1x +  +  +  +  +  +  +1x
const create_otp = require('../services/otps/rave.create')
+const validate_otp = require('../services/otps/rave.validate')
+ 
+ 
+function Otp(RaveBase) {
+ 
+	this.create = function (data) {
+ 
+		return create_otp(data, RaveBase);
+ 
+	}
+ 
+	this.validate = function (data) {
+ 
+		return validate_otp(data, RaveBase);
+ 
+	}
+ 
+ 
+ 
+}
+module.exports = Otp;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.payment_plan.js.html b/coverage/lcov-report/lib/rave.payment_plan.js.html new file mode 100644 index 0000000..8de2d66 --- /dev/null +++ b/coverage/lcov-report/lib/rave.payment_plan.js.html @@ -0,0 +1,202 @@ + + + + + + Code coverage report for lib/rave.payment_plan.js + + + + + + + + + +
+
+

All files / lib rave.payment_plan.js

+
+ +
+ 100% + Statements + 16/16 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 6/6 +
+ + +
+ 100% + Lines + 16/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +401x +1x +1x +1x +1x +  +  +  +  +  +  +5x +  +1x +  +  +  +5x +  +1x +  +  +5x +  +1x +  +  +5x +  +1x +  +  +5x +  +1x +  +  +  +  +1x
const create_plan = require('../services/payment-plans/rave.create')
+const cancel_plan = require('../services/payment-plans/rave.cancel')
+const retrieve_all = require('../services/payment-plans/rave.retrieve.all')
+const retrieve_single = require('../services/payment-plans/rave.retrieve.single')
+const update_plan = require('../services/payment-plans/rave.update')
+ 
+ 
+ 
+function Payment_plan(RaveBase) {
+ 
+ 
+	this.create = function (data) {
+ 
+		return create_plan(data, RaveBase);
+ 
+	}
+ 
+	this.cancel = function (data) {
+ 
+		return cancel_plan(data, RaveBase);
+ 
+	}
+	this.get_all = function (data) {
+ 
+		return retrieve_all(data, RaveBase);
+ 
+	}
+	this.get_plan = function (data) {
+ 
+		return retrieve_single(data, RaveBase);
+ 
+	}
+	this.update = function (data) {
+ 
+		return update_plan(data, RaveBase);
+ 
+	}
+ 
+}
+module.exports = Payment_plan;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.settlements.js.html b/coverage/lcov-report/lib/rave.settlements.js.html new file mode 100644 index 0000000..c4831be --- /dev/null +++ b/coverage/lcov-report/lib/rave.settlements.js.html @@ -0,0 +1,148 @@ + + + + + + Code coverage report for lib/rave.settlements.js + + + + + + + + + +
+
+

All files / lib rave.settlements.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +221x +1x +  +  +  +  +  +2x +  +1x +  +  +  +2x +  +1x +  +  +  +  +  +1x
const retrieve_all = require('../services/settlements/rave.retrieve-all')
+const retrieve = require('../services/settlements/rave.retrieve')
+ 
+ 
+function Settlements(RaveBase) {
+ 
+ 
+	this.fetch_all = function (data) {
+ 
+		return retrieve_all(data, RaveBase);
+ 
+	}
+ 
+	this.fetch = function (data) {
+ 
+		return retrieve(data, RaveBase);
+ 
+	}
+ 
+ 
+}
+module.exports = Settlements;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.subscriptions.js.html b/coverage/lcov-report/lib/rave.subscriptions.js.html new file mode 100644 index 0000000..6449ced --- /dev/null +++ b/coverage/lcov-report/lib/rave.subscriptions.js.html @@ -0,0 +1,187 @@ + + + + + + Code coverage report for lib/rave.subscriptions.js + + + + + + + + + +
+
+

All files / lib rave.subscriptions.js

+
+ +
+ 100% + Statements + 13/13 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 13/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +351x +1x +1x +1x +  +  +  +  +  +4x +  +1x +  +  +  +4x +  +1x +  +  +  +4x +  +1x +  +  +  +4x +  +1x +  +  +  +  +1x
const activate_sub = require('../services/subscriptions/rave.activate')
+const cancel_sub = require('../services/subscriptions/rave.cancel')
+const retrieve_all = require('../services/subscriptions/rave.retrieve.all')
+const fetch_one = require('../services/subscriptions/rave.retrieve.single') 
+ 
+ 
+function Subscriptions(RaveBase) {
+ 
+ 
+	this.activate = function (data) {
+ 
+		return activate_sub(data, RaveBase);
+ 
+	}
+ 
+	this.cancel = function (data) {
+ 
+		return cancel_sub(data, RaveBase);
+ 
+	}
+ 
+	this.fetch_all = function (data) {
+ 
+		return retrieve_all(data, RaveBase);
+ 
+	}
+ 
+	this.get = function (data) {
+ 
+		return fetch_one(data, RaveBase);
+ 
+	}
+ 
+}
+module.exports = Subscriptions;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.tokenized.js.html b/coverage/lcov-report/lib/rave.tokenized.js.html new file mode 100644 index 0000000..3f3b4f2 --- /dev/null +++ b/coverage/lcov-report/lib/rave.tokenized.js.html @@ -0,0 +1,220 @@ + + + + + + Code coverage report for lib/rave.tokenized.js + + + + + + + + + +
+
+

All files / lib rave.tokenized.js

+
+ +
+ 100% + Statements + 16/16 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 6/6 +
+ + +
+ 100% + Lines + 16/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +461x +1x +1x +1x +1x +  +  +  +  +  +  +  +6x +  +1x +  +  +6x +  +1x +  +  +  +6x +  +1x +  +  +  +6x +  +1x +  +  +  +  +6x +  +2x +  +  +  +  +  +  +1x
const bulk_charge = require('../services/tokenized-charges/rave.bulk.charge')
+const charge_token = require('../services/tokenized-charges/rave.charge')
+const retrieve_a_bulk = require('../services/tokenized-charges/rave.retrieve.a.bulk')
+const retrieve_charge_trans = require('../services/tokenized-charges/rave.retrieve.charge.transactions')
+const update_a_token = require('../services/tokenized-charges/rave.update.tokens')
+ 
+ 
+ 
+ 
+function Tokenized(RaveBase) {
+ 
+ 
+	this.charge = function (data) {
+ 
+		return charge_token(data, RaveBase);
+ 
+	}
+	this.fetch_bulk = function (data) {
+ 
+		return retrieve_a_bulk(data, RaveBase);
+ 
+	}
+ 
+	this.bulk = function (data) {
+ 
+		return bulk_charge(data, RaveBase);
+ 
+	}
+ 
+	this.fetch_charge_transactions = function (data) {
+ 
+		return retrieve_charge_trans(data, RaveBase);
+ 
+	}
+ 
+ 
+	this.update_token = function (data) {
+ 
+		return update_a_token(data, RaveBase);
+ 
+	}
+ 
+ 
+ 
+}
+module.exports = Tokenized;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.transactions.js.html b/coverage/lcov-report/lib/rave.transactions.js.html new file mode 100644 index 0000000..770c68b --- /dev/null +++ b/coverage/lcov-report/lib/rave.transactions.js.html @@ -0,0 +1,199 @@ + + + + + + Code coverage report for lib/rave.transactions.js + + + + + + + + + +
+
+

All files / lib rave.transactions.js

+
+ +
+ 100% + Statements + 22/22 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 8/8 +
+ + +
+ 100% + Lines + 22/22 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +391x +1x +1x +1x +1x +1x +1x +  +  +7x +1x +  +  +7x +1x +  +  +7x +1x +  +  +7x +1x +  +  +7x +1x +  +  +7x +1x +  +  +7x +1x +  +  +1x + 
const event_trans = require('../services/transactions/rave.events');
+const fee_trans = require('../services/transactions/rave.fee');
+const refund_trans = require('../services/transactions/rave.refund');
+const resend_hooks_trans = require('../services/transactions/rave.resend-hooks');
+const retrieve_trans = require('../services/transactions/rave.retrieve');
+const verify_trans = require('../services/transactions/rave.verify');
+const verify_trans_tx = require('../services/transactions/rave.verify-by-txref');
+ 
+function Transactions(RaveBase) {
+  this.event = function (data) {
+    return event_trans(data, RaveBase);
+  };
+ 
+  this.fee = function (data) {
+    return fee_trans(data, RaveBase);
+  };
+ 
+  this.refund = function (data) {
+    return refund_trans(data, RaveBase);
+  };
+ 
+  this.resend_hooks = function (data) {
+    return resend_hooks_trans(data, RaveBase);
+  };
+ 
+  this.fetch = function (data) {
+    return retrieve_trans(data, RaveBase);
+  };
+ 
+  this.verify = function (data) {
+    return verify_trans(data, RaveBase);
+  };
+ 
+  this.verify_by_tx = function (data) {
+    return verify_trans_tx(data, RaveBase);
+  }
+}
+module.exports = Transactions;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/rave.transfers.js.html b/coverage/lcov-report/lib/rave.transfers.js.html new file mode 100644 index 0000000..11ccfb5 --- /dev/null +++ b/coverage/lcov-report/lib/rave.transfers.js.html @@ -0,0 +1,172 @@ + + + + + + Code coverage report for lib/rave.transfers.js + + + + + + + + + +
+
+

All files / lib rave.transfers.js

+
+ +
+ 100% + Statements + 19/19 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 7/7 +
+ + +
+ 100% + Lines + 19/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +301x +1x +1x +1x +1x +1x +  +  +8x +1x +  +  +8x +1x +  +8x +3x +  +8x +1x +  +8x +1x +  +8x +1x +  +  +1x + 
const bulk_transfer = require('../services/transfers/rave.bulk');
+const fee_transfer = require('../services/transfers/rave.fee');
+const initiate_transfer = require('../services/transfers/rave.initiate');
+const fetch_transfers = require('../services/transfers/rave.retrieve.transfers');
+const getATransfer = require('../services/transfers/rave.fetch');
+const wallet = require('../services/transfers/rave.wallet');
+ 
+function Transfers(RaveBase) {
+  this.bulk = function (data) {
+    return bulk_transfer(data, RaveBase);
+  };
+ 
+  this.fee = function (data) {
+    return fee_transfer(data, RaveBase);
+  };
+  this.initiate = function (data) {
+    return initiate_transfer(data, RaveBase);
+  };
+  this.fetch = function (data) {
+    return fetch_transfers(data, RaveBase);
+  };
+  this.get_a_transfer = function (data) {
+    return getATransfer(data, RaveBase);
+  };
+  this.wallet_to_wallet = function (data) {
+    return wallet(data, RaveBase);
+  };
+}
+module.exports = Transfers;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/lib/security.js.html b/coverage/lcov-report/lib/security.js.html new file mode 100644 index 0000000..fb9b2a1 --- /dev/null +++ b/coverage/lcov-report/lib/security.js.html @@ -0,0 +1,292 @@ + + + + + + Code coverage report for lib/security.js + + + + + + + + + +
+
+

All files / lib security.js

+
+ +
+ 100% + Statements + 25/25 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 100% + Lines + 24/24 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70  +1x +  +  +  +  +3x +3x +3x +  +3x +3x +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +2x +  +  +  +2x +  +  +2x +2x +2x +2x +  +  +  +  +2x +2x +2x +2x +  +  +5x +4x +  +  +2x +2x +2x +  +  +  +1x +  +  +  + 
// var createHash = require('sha.js');
+var crypto = require('crypto');//crypto is faster and managed by NodeJs
+ 
+// this is the getKey function that generates an encryption Key  
+// for you by passing your Secret Key as a parameter.
+function getKey(seckey) {
+    var md5 = require('md5');
+    var keymd5 = md5(seckey);
+    var keymd5last12 = keymd5.substr(-12);
+ 
+    var seckeyadjusted = seckey.replace('FLWSECK-', '');
+    var seckeyadjustedfirst12 = seckeyadjusted.substr(0, 12);
+ 
+    return seckeyadjustedfirst12 + keymd5last12;
+}
+ 
+// This is the encryption function that encrypts your payload
+// by passing the stringified format and your encryption Key.
+// function encrypt(key, text)
+// {
+//     console.log("Key:   "+key)
+ 
+//     console.log("Txt:   "+text)
+//     var forge    = require('node-forge'); 
+//     var cipher   = forge.cipher.createCipher('3DES-ECB', forge.util.createBuffer(key));
+//     cipher.start({iv:''});
+//     cipher.update(forge.util.createBuffer(text, 'utf-8'));
+//     cipher.finish();
+//     var encrypted = cipher.output;
+//     return ( forge.util.encode64(encrypted.getBytes()) );
+// }
+ 
+function encrypt(key, text) {
+    var forge = require("node-forge");
+    var cipher = forge.cipher.createCipher(
+        "3DES-ECB",
+        forge.util.createBuffer(key)
+    );
+    cipher.start({
+        iv: ""
+    });
+    cipher.update(forge.util.createBuffer(text, "utf-8"));
+    cipher.finish();
+    var encrypted = cipher.output;
+    return forge.util.encode64(encrypted.getBytes());
+}
+ 
+function getIntegrityHash(data, pubkey, seckey) {
+ 
+    var objectKeys = Object.keys(data);
+    objectKeys.sort();
+    var hashString = "";
+    objectKeys
+        .forEach(function (ok) {
+ 
+            if (ok == 'integrity_hash') return; // don't include int hash
+            hashString += data[ok];
+ 
+        });
+    hashString += seckey;
+    var hash = crypto.createHash('sha256').update(hashString, 'utf8').digest('hex');
+    return hash;
+}
+ 
+ 
+module.exports = {
+    getEncryptionKey: getKey,
+    encrypt: encrypt,
+    getIntegrityHash: getIntegrityHash
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css new file mode 100644 index 0000000..b317a7c --- /dev/null +++ b/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js new file mode 100644 index 0000000..b322523 --- /dev/null +++ b/coverage/lcov-report/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov-report/services/banks/index.html b/coverage/lcov-report/services/banks/index.html new file mode 100644 index 0000000..5504886 --- /dev/null +++ b/coverage/lcov-report/services/banks/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for services/banks + + + + + + + + + +
+
+

All files services/banks

+
+ +
+ 100% + Statements + 16/16 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 16/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
rave.banks-branches.js +
+
100%8/8100%0/0100%1/1100%8/8
rave.banks-country.js +
+
100%8/8100%0/0100%1/1100%8/8
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/banks/rave.banks-branches.js.html b/coverage/lcov-report/services/banks/rave.banks-branches.js.html new file mode 100644 index 0000000..132b37a --- /dev/null +++ b/coverage/lcov-report/services/banks/rave.banks-branches.js.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for services/banks/rave.banks-branches.js + + + + + + + + + +
+
+

All files / services/banks rave.banks-branches.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +1x +1x +  +  +1x +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { fetchSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(fetchSchema, data);
+  data.method = 'GET';
+  data.excludeQuery = true;
+  const { body: response } = await _rave.request(
+    `v3/banks/${data.id}/branches`,
+    data,
+  );
+  // logger(`Get bank branches`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/banks/rave.banks-country.js.html b/coverage/lcov-report/services/banks/rave.banks-country.js.html new file mode 100644 index 0000000..519bcc1 --- /dev/null +++ b/coverage/lcov-report/services/banks/rave.banks-country.js.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for services/banks/rave.banks-country.js + + + + + + + + + +
+
+

All files / services/banks rave.banks-country.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +1x +1x +  +  +1x +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { listSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(listSchema, data);
+  data.method = 'GET';
+  data.excludeQuery = true;
+  const { body: response } = await _rave.request(
+    `v3/banks/${data.country}`,
+    data,
+  );
+  // logger(`Get banks by country`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/beneficiaries/index.html b/coverage/lcov-report/services/beneficiaries/index.html new file mode 100644 index 0000000..40f1006 --- /dev/null +++ b/coverage/lcov-report/services/beneficiaries/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for services/beneficiaries + + + + + + + + + +
+
+

All files services/beneficiaries

+
+ +
+ 100% + Statements + 23/23 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 100% + Lines + 23/23 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
rave.create.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.delete.js +
+
100%7/7100%0/0100%1/1100%7/7
rave.retrieve.js +
+
100%3/3100%0/0100%1/1100%3/3
rave.single.retrieve.js +
+
100%7/7100%0/0100%1/1100%7/7
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/beneficiaries/rave.create.js.html b/coverage/lcov-report/services/beneficiaries/rave.create.js.html new file mode 100644 index 0000000..59e25f2 --- /dev/null +++ b/coverage/lcov-report/services/beneficiaries/rave.create.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/beneficiaries/rave.create.js + + + + + + + + + +
+
+

All files / services/beneficiaries rave.create.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +1x +1x +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { beneficiarySchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(beneficiarySchema, data);
+  const { body: response } = await _rave.request(`v3/beneficiaries`, data);
+  // logger(`Create beneficiary`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/beneficiaries/rave.delete.js.html b/coverage/lcov-report/services/beneficiaries/rave.delete.js.html new file mode 100644 index 0000000..81baaf1 --- /dev/null +++ b/coverage/lcov-report/services/beneficiaries/rave.delete.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/beneficiaries/rave.delete.js + + + + + + + + + +
+
+

All files / services/beneficiaries rave.delete.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { fetchSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(fetchSchema, data);
+  data.method = 'GET';
+  const { body: response } = await _rave.request(
+    `/v3/beneficiaries/${data.id}`,
+    data,
+  );
+  // logger(`Delete a beneficiary`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/beneficiaries/rave.retrieve.js.html b/coverage/lcov-report/services/beneficiaries/rave.retrieve.js.html new file mode 100644 index 0000000..66db91e --- /dev/null +++ b/coverage/lcov-report/services/beneficiaries/rave.retrieve.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/beneficiaries/rave.retrieve.js + + + + + + + + + +
+
+

All files / services/beneficiaries rave.retrieve.js

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +131x +  +  +1x +  +  +  +  +  +  +  +1x + 
const { handleEmptyFetch } = require('../../utils/build');
+ 
+async function service(data, _rave) {
+  return handleEmptyFetch(
+    data,
+    `Fetch all transfer beneficiaries`,
+    `/v3/beneficiaries?`,
+    _rave,
+  );
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/beneficiaries/rave.single.retrieve.js.html b/coverage/lcov-report/services/beneficiaries/rave.single.retrieve.js.html new file mode 100644 index 0000000..ed702d0 --- /dev/null +++ b/coverage/lcov-report/services/beneficiaries/rave.single.retrieve.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/beneficiaries/rave.single.retrieve.js + + + + + + + + + +
+
+

All files / services/beneficiaries rave.single.retrieve.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { fetchSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(fetchSchema, data);
+  data.method = 'GET';
+  const { body: response } = await _rave.request(
+    `/v3/beneficiaries/${data.id}`,
+    data,
+  );
+  // logger(`Fetch a transfer beneficiary`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/bills/index.html b/coverage/lcov-report/services/bills/index.html new file mode 100644 index 0000000..7fe3fa7 --- /dev/null +++ b/coverage/lcov-report/services/bills/index.html @@ -0,0 +1,266 @@ + + + + + + Code coverage report for services/bills + + + + + + + + + +
+
+

All files services/bills

+
+ +
+ 100% + Statements + 68/68 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 11/11 +
+ + +
+ 100% + Lines + 68/68 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
rave.amount.to-be-paid.js +
+
100%7/7100%0/0100%1/1100%7/7
rave.create-bill.payment.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.create-bulk.bills.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.create-order-billing-code.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.get-bill-payments.js +
+
100%7/7100%0/0100%1/1100%7/7
rave.get.bill-categories.js +
+
100%3/3100%0/0100%1/1100%3/3
rave.get.bill-payment-agencies.js +
+
100%3/3100%0/0100%1/1100%3/3
rave.get.status.js +
+
100%7/7100%0/0100%1/1100%7/7
rave.products-under-an-agency.js +
+
100%8/8100%0/0100%1/1100%8/8
rave.update-bills.order.js +
+
100%7/7100%0/0100%1/1100%7/7
rave.validate-bill.js +
+
100%8/8100%0/0100%1/1100%8/8
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/bills/rave.amount.to-be-paid.js.html b/coverage/lcov-report/services/bills/rave.amount.to-be-paid.js.html new file mode 100644 index 0000000..ec61223 --- /dev/null +++ b/coverage/lcov-report/services/bills/rave.amount.to-be-paid.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/bills/rave.amount.to-be-paid.js + + + + + + + + + +
+
+

All files / services/bills rave.amount.to-be-paid.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { amountQuerySchema } = require('../schema/bill');
+ 
+async function service(data, _rave) {
+  validator(amountQuerySchema, data);
+  data.method = 'GET';
+  const { body: response } = await _rave.request(
+    `v3/billers/${data.id}/products/${data.product_id}`,
+    data,
+  );
+  // logger(`Fetch bill amount`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/bills/rave.create-bill.payment.js.html b/coverage/lcov-report/services/bills/rave.create-bill.payment.js.html new file mode 100644 index 0000000..7995980 --- /dev/null +++ b/coverage/lcov-report/services/bills/rave.create-bill.payment.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/bills/rave.create-bill.payment.js + + + + + + + + + +
+
+

All files / services/bills rave.create-bill.payment.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +1x +1x +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { createSchema } = require('../schema/bill');
+ 
+async function service(data, _rave) {
+  validator(createSchema, data);
+  const { body: response } = await _rave.request(`v3/bills`, data);
+  // logger(`Create bill payments`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/bills/rave.create-bulk.bills.js.html b/coverage/lcov-report/services/bills/rave.create-bulk.bills.js.html new file mode 100644 index 0000000..d215080 --- /dev/null +++ b/coverage/lcov-report/services/bills/rave.create-bulk.bills.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/bills/rave.create-bulk.bills.js + + + + + + + + + +
+
+

All files / services/bills rave.create-bulk.bills.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +1x +1x +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { bulkCreateSchema } = require('../schema/bill');
+ 
+async function service(data, _rave) {
+  validator(bulkCreateSchema, data);
+  const { body: response } = await _rave.request(`v3/bulk-bills`, data);
+  // logger(`Create bulk bill payments`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/bills/rave.create-order-billing-code.js.html b/coverage/lcov-report/services/bills/rave.create-order-billing-code.js.html new file mode 100644 index 0000000..71e0d71 --- /dev/null +++ b/coverage/lcov-report/services/bills/rave.create-order-billing-code.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/bills/rave.create-order-billing-code.js + + + + + + + + + +
+
+

All files / services/bills rave.create-order-billing-code.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +2x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { createOrderSchema } = require('../schema/bill');
+ 
+async function service(data, _rave) {
+  validator(createOrderSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/billers/${data.id}/products/${data.product_id}/orders`,
+    data,
+  );
+  // logger(`Create order with billing code`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/bills/rave.get-bill-payments.js.html b/coverage/lcov-report/services/bills/rave.get-bill-payments.js.html new file mode 100644 index 0000000..31d9a85 --- /dev/null +++ b/coverage/lcov-report/services/bills/rave.get-bill-payments.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/bills/rave.get-bill-payments.js + + + + + + + + + +
+
+

All files / services/bills rave.get-bill-payments.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { listSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(listSchema, data);
+  data.method = 'GET';
+  const { body: response } = await _rave.request(
+    `v3/bills?from=${data.from}&to=${data.to}`,
+    data,
+  );
+  // logger(`Fetch bill payments`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/bills/rave.get.bill-categories.js.html b/coverage/lcov-report/services/bills/rave.get.bill-categories.js.html new file mode 100644 index 0000000..5337839 --- /dev/null +++ b/coverage/lcov-report/services/bills/rave.get.bill-categories.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/bills/rave.get.bill-categories.js + + + + + + + + + +
+
+

All files / services/bills rave.get.bill-categories.js

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +131x +  +  +1x +  +  +  +  +  +  +  +1x + 
const { handleEmptyFetch } = require('../../utils/build');
+ 
+async function service(data, _rave) {
+  return handleEmptyFetch(
+    data,
+    `Fetch bill categories`,
+    `v3/bill-categories?`,
+    _rave,
+  );
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/bills/rave.get.bill-payment-agencies.js.html b/coverage/lcov-report/services/bills/rave.get.bill-payment-agencies.js.html new file mode 100644 index 0000000..79a564b --- /dev/null +++ b/coverage/lcov-report/services/bills/rave.get.bill-payment-agencies.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/bills/rave.get.bill-payment-agencies.js + + + + + + + + + +
+
+

All files / services/bills rave.get.bill-payment-agencies.js

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +131x +  +  +1x +  +  +  +  +  +  +  +1x + 
const { handleEmptyFetch } = require('../../utils/build');
+ 
+async function service(data, _rave) {
+  return handleEmptyFetch(
+    data,
+    `Fetch bill payment agencies`,
+    `v3/billers?`,
+    _rave,
+  );
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/bills/rave.get.status.js.html b/coverage/lcov-report/services/bills/rave.get.status.js.html new file mode 100644 index 0000000..5fc5bf4 --- /dev/null +++ b/coverage/lcov-report/services/bills/rave.get.status.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/bills/rave.get.status.js + + + + + + + + + +
+
+

All files / services/bills rave.get.status.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { fetchStatusSchema } = require('../schema/bill');
+ 
+async function service(data, _rave) {
+  validator(fetchStatusSchema, data);
+  data.method = 'GET';
+  const { body: response } = await _rave.request(
+    `v3/bills/${data.reference}`,
+    data,
+  );
+  // logger(`Fetch bill status`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/bills/rave.products-under-an-agency.js.html b/coverage/lcov-report/services/bills/rave.products-under-an-agency.js.html new file mode 100644 index 0000000..f8e1362 --- /dev/null +++ b/coverage/lcov-report/services/bills/rave.products-under-an-agency.js.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for services/bills/rave.products-under-an-agency.js + + + + + + + + + +
+
+

All files / services/bills rave.products-under-an-agency.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +1x +1x +  +  +1x +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { fetchSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(fetchSchema, data);
+  data.method = 'GET';
+  data.excludeQuery = true;
+  const { body: response } = await _rave.request(
+    `v3/billers/${data.id}/products`,
+    data,
+  );
+  // logger(`Retrieve bills by agency`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/bills/rave.update-bills.order.js.html b/coverage/lcov-report/services/bills/rave.update-bills.order.js.html new file mode 100644 index 0000000..abfc2b4 --- /dev/null +++ b/coverage/lcov-report/services/bills/rave.update-bills.order.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/bills/rave.update-bills.order.js + + + + + + + + + +
+
+

All files / services/bills rave.update-bills.order.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { updateOrderSchema } = require('../schema/bill');
+ 
+async function service(data, _rave) {
+  validator(updateOrderSchema, data);
+  data.method = 'PUT';
+  const { body: response } = await _rave.request(
+    `v3/product-orders/${data.reference}`,
+    data,
+  );
+  // logger(`Update bill order`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/bills/rave.validate-bill.js.html b/coverage/lcov-report/services/bills/rave.validate-bill.js.html new file mode 100644 index 0000000..3cc198b --- /dev/null +++ b/coverage/lcov-report/services/bills/rave.validate-bill.js.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for services/bills/rave.validate-bill.js + + + + + + + + + +
+
+

All files / services/bills rave.validate-bill.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +1x +1x +  +  +1x +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { validateSchema } = require('../schema/bill');
+ 
+async function service(data, _rave) {
+  validator(validateSchema, data);
+  data.method = 'GET';
+  data.excludeQuery = true;
+  const { body: response } = await _rave.request(
+    `v3/bill-items/${data.item_code}/validate?code=${data.code}&customer=${data.customer}`,
+    data,
+  );
+  // logger(`Validate bill payment`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/charge/encryp.js.html b/coverage/lcov-report/services/charge/encryp.js.html new file mode 100644 index 0000000..b3410a8 --- /dev/null +++ b/coverage/lcov-report/services/charge/encryp.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/charge/encryp.js + + + + + + + + + +
+
+

All files / services/charge encryp.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +161x +  +3x +  +  +  +3x +  +  +3x +3x +3x +3x +  +  +1x
var forge = require("node-forge");
+function encrypt(key, text) {
+  var cipher = forge.cipher.createCipher(
+    "3DES-ECB",
+    forge.util.createBuffer(key)
+  );
+  cipher.start({
+    iv: ""
+  });
+  cipher.update(forge.util.createBuffer(text, "utf-8"));
+  cipher.finish();
+  var encrypted = cipher.output;
+  return forge.util.encode64(encrypted.getBytes());
+}
+ 
+module.exports = encrypt
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/charge/index.html b/coverage/lcov-report/services/charge/index.html new file mode 100644 index 0000000..7938cea --- /dev/null +++ b/coverage/lcov-report/services/charge/index.html @@ -0,0 +1,296 @@ + + + + + + Code coverage report for services/charge + + + + + + + + + +
+
+

All files services/charge

+
+ +
+ 100% + Statements + 79/79 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 12/12 +
+ + +
+ 100% + Lines + 79/79 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
encryp.js +
+
100%8/8100%0/0100%1/1100%8/8
rave.ach.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.applepay.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.bank.transfer.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.card.charge.js +
+
100%11/11100%0/0100%1/1100%11/11
rave.enaira.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.fawrypay.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.googlepay.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.ng-banks.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.uk-banks.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.ussd.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.validate.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.voucher.js +
+
0%0/00%0/00%0/00%0/0
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/charge/rave.ach.js.html b/coverage/lcov-report/services/charge/rave.ach.js.html new file mode 100644 index 0000000..ea3c925 --- /dev/null +++ b/coverage/lcov-report/services/charge/rave.ach.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/charge/rave.ach.js + + + + + + + + + +
+
+

All files / services/charge rave.ach.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +2x +2x +  +  +  +  +2x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { chargeSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(chargeSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/charges?type=ach_payment`,
+    data,
+  );
+  // logger(`Create ACH charge`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/charge/rave.applepay.js.html b/coverage/lcov-report/services/charge/rave.applepay.js.html new file mode 100644 index 0000000..3200d01 --- /dev/null +++ b/coverage/lcov-report/services/charge/rave.applepay.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/charge/rave.applepay.js + + + + + + + + + +
+
+

All files / services/charge rave.applepay.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +4x +2x +  +  +  +  +2x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { chargeSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(chargeSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/charges?type=applepay`,
+    data,
+  );
+  // logger(`Create ApplePay charge`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/charge/rave.bank.transfer.js.html b/coverage/lcov-report/services/charge/rave.bank.transfer.js.html new file mode 100644 index 0000000..48e6e28 --- /dev/null +++ b/coverage/lcov-report/services/charge/rave.bank.transfer.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/charge/rave.bank.transfer.js + + + + + + + + + +
+
+

All files / services/charge rave.bank.transfer.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +2x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { chargeSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(chargeSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/charges?type=bank_transfer`,
+    data,
+  );
+  // logger(`Create Bank transfer charge`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/charge/rave.card.charge.js.html b/coverage/lcov-report/services/charge/rave.card.charge.js.html new file mode 100644 index 0000000..7f5ee7d --- /dev/null +++ b/coverage/lcov-report/services/charge/rave.card.charge.js.html @@ -0,0 +1,151 @@ + + + + + + Code coverage report for services/charge/rave.card.charge.js + + + + + + + + + +
+
+

All files / services/charge rave.card.charge.js

+
+ +
+ 100% + Statements + 11/11 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 11/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +231x +  +1x +1x +  +  +5x +  +3x +3x +3x +3x +  +3x +  +  +  +  +  +3x +  +1x + 
const encrypt = require('./encryp');
+// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { cardChargeSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(cardChargeSchema, data);
+ 
+  var encrypted = encrypt(data.enckey, JSON.stringify(data));
+  var payload = {};
+  payload.public_key = _rave.getPublicKey();
+  payload.client = encrypted;
+ 
+  const { body: response } = await _rave.request(
+    `v3/charges?type=card`,
+    payload,
+  );
+ 
+  // logger(`Create card charge`, _rave);
+  return response;
+}
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/charge/rave.enaira.js.html b/coverage/lcov-report/services/charge/rave.enaira.js.html new file mode 100644 index 0000000..0266b85 --- /dev/null +++ b/coverage/lcov-report/services/charge/rave.enaira.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/charge/rave.enaira.js + + + + + + + + + +
+
+

All files / services/charge rave.enaira.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +4x +2x +  +  +  +  +2x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { eNairaChargeSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(eNairaChargeSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/charges?type=enaira`,
+    data,
+  );
+  // logger(`Create eNaira charge`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/charge/rave.fawrypay.js.html b/coverage/lcov-report/services/charge/rave.fawrypay.js.html new file mode 100644 index 0000000..8b4f516 --- /dev/null +++ b/coverage/lcov-report/services/charge/rave.fawrypay.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/charge/rave.fawrypay.js + + + + + + + + + +
+
+

All files / services/charge rave.fawrypay.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +3x +2x +  +  +  +  +2x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { bankChargeSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(bankChargeSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/charges?type=fawry_pay`,
+    data,
+  );
+  // logger(`Create FawryPay charge`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/charge/rave.googlepay.js.html b/coverage/lcov-report/services/charge/rave.googlepay.js.html new file mode 100644 index 0000000..feb84a5 --- /dev/null +++ b/coverage/lcov-report/services/charge/rave.googlepay.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/charge/rave.googlepay.js + + + + + + + + + +
+
+

All files / services/charge rave.googlepay.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +4x +2x +  +  +  +  +2x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { chargeSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(chargeSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/charges?type=googlepay`,
+    data,
+  );
+  // logger(`Create GooglePay charge`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/charge/rave.ng-banks.js.html b/coverage/lcov-report/services/charge/rave.ng-banks.js.html new file mode 100644 index 0000000..c696522 --- /dev/null +++ b/coverage/lcov-report/services/charge/rave.ng-banks.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/charge/rave.ng-banks.js + + + + + + + + + +
+
+

All files / services/charge rave.ng-banks.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +2x +1x +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { bankChargeSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(bankChargeSchema, data);
+  const { body: response } = await _rave.request(`v3/charges?type=mono`, data);
+  // logger(`NG direct debit`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/charge/rave.uk-banks.js.html b/coverage/lcov-report/services/charge/rave.uk-banks.js.html new file mode 100644 index 0000000..265a9ec --- /dev/null +++ b/coverage/lcov-report/services/charge/rave.uk-banks.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/charge/rave.uk-banks.js + + + + + + + + + +
+
+

All files / services/charge rave.uk-banks.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { bankChargeSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(bankChargeSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/charges?type=account-ach-uk`,
+    data,
+  );
+  // logger(`UK direct debit`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/charge/rave.ussd.js.html b/coverage/lcov-report/services/charge/rave.ussd.js.html new file mode 100644 index 0000000..bae645c --- /dev/null +++ b/coverage/lcov-report/services/charge/rave.ussd.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/charge/rave.ussd.js + + + + + + + + + +
+
+

All files / services/charge rave.ussd.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +2x +1x +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { ussdChargeSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(ussdChargeSchema, data);
+  const { body: response } = await _rave.request(`v3/charges?type=ussd`, data);
+  // logger(`Create USSD charge`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/charge/rave.validate.js.html b/coverage/lcov-report/services/charge/rave.validate.js.html new file mode 100644 index 0000000..4bc2938 --- /dev/null +++ b/coverage/lcov-report/services/charge/rave.validate.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/charge/rave.validate.js + + + + + + + + + +
+
+

All files / services/charge rave.validate.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +1x +1x +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { validateSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(validateSchema, data);
+  const { body: response } = await _rave.request(`v3/validate-charge`, data);
+  // logger(`Validate payment`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/charge/rave.voucher.js.html b/coverage/lcov-report/services/charge/rave.voucher.js.html new file mode 100644 index 0000000..bd5d0dd --- /dev/null +++ b/coverage/lcov-report/services/charge/rave.voucher.js.html @@ -0,0 +1,274 @@ + + + + + + Code coverage report for services/charge/rave.voucher.js + + + + + + + + + +
+
+

All files / services/charge rave.voucher.js

+
+ +
+ 0% + Statements + 0/0 +
+ + +
+ 0% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/0 +
+ + +
+ 0% + Lines + 0/0 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
// const morx = require('morx');
+// const q = require('q');
+// const encrypt = require('./encryp');
+// const axios = require('axios');
+// const package = require('../../package.json');
+ 
+// var spec = morx.spec()
+// 	.build('currency', 'required:true, eg:GBP')
+// 	.build('account_bank', 'required:false')
+// 	.build('amount', 'required:true, eg:10')
+// 	.build('phone_number', 'required:false, eg:08030930236')
+// 	.build('email', 'required:true, eg:debowalefaulkner@gmail.com')
+// 	.build('fullname', 'required:false, eg:lawal garba')
+// 	.build('client_ip', 'required:false, eg:127.0.0.1')
+// 	.build('tx_ref', 'required:false, eg:FLW_y-443342')
+// 	.build('subaccounts', 'required:false')
+// 	.build('meta', 'required:false')
+// 	.build('pin', 'required:true')
+// 	.build('country', 'required:false')
+// 	.build('redirect_url', 'required:false')
+// 	.build('device_fingerprint', 'required:false')
+// 	.build('type', 'required:true eg:ussd')
+// 	.end();
+ 
+// function service(data, _rave) {
+// 	axios.post('https://kgelfdz7mf.execute-api.us-east-1.amazonaws.com/staging/sendevent', {
+//          "publicKey": _rave.getPublicKey(),
+//          "language": "NodeJs v3",
+//          "version": package.version,
+//          "title": "Incoming call",
+//              "message": "Initiate Voucher payment"
+//        })
+ 
+// 	var d = q.defer();
+ 
+// 	q.fcall(() => {
+ 
+// 			var validated = morx.validate(data, spec, _rave.MORX_DEFAULT, {throw_error:true});
+// 			var params = validated.params;
+ 
+// 			return (params);
+ 
+// 		})
+// 		.then(params => {
+ 
+// 			return _rave.request('v3/charges?type=voucher_payment', params)
+// 		})
+// 		.then(response => {
+ 
+// 			d.resolve(response.body);
+ 
+// 		})
+// 		.catch(err => {
+ 
+// 			d.reject(err);
+ 
+// 		})
+ 
+// 	return d.promise;
+ 
+// }
+// service.morxspc = spec;
+// module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/ebills/index.html b/coverage/lcov-report/services/ebills/index.html new file mode 100644 index 0000000..2283ec3 --- /dev/null +++ b/coverage/lcov-report/services/ebills/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for services/ebills + + + + + + + + + +
+
+

All files services/ebills

+
+ +
+ 100% + Statements + 13/13 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 13/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
rave.order.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.update.js +
+
100%7/7100%0/0100%1/1100%7/7
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/ebills/rave.order.js.html b/coverage/lcov-report/services/ebills/rave.order.js.html new file mode 100644 index 0000000..d6d7dc0 --- /dev/null +++ b/coverage/lcov-report/services/ebills/rave.order.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/ebills/rave.order.js + + + + + + + + + +
+
+

All files / services/ebills rave.order.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +3x +1x +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { orderSchema } = require('../schema/auxillary');
+ 
+async function service(data, _rave) {
+  validator(orderSchema, data);
+  const { body: response } = await _rave.request(`v3/ebills`, data);
+  // logger(`Create an ebill`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/ebills/rave.update.js.html b/coverage/lcov-report/services/ebills/rave.update.js.html new file mode 100644 index 0000000..97d3420 --- /dev/null +++ b/coverage/lcov-report/services/ebills/rave.update.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/ebills/rave.update.js + + + + + + + + + +
+
+

All files / services/ebills rave.update.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { updateSchema } = require('../schema/auxillary');
+ 
+async function service(data, _rave) {
+  validator(updateSchema, data);
+  data.method = 'PUT';
+  const { body: response } = await _rave.request(
+    `v3/ebills/${data.reference}`,
+    data,
+  );
+  // logger(`Update ebills details`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/misc/index.html b/coverage/lcov-report/services/misc/index.html new file mode 100644 index 0000000..7f96217 --- /dev/null +++ b/coverage/lcov-report/services/misc/index.html @@ -0,0 +1,176 @@ + + + + + + Code coverage report for services/misc + + + + + + + + + +
+
+

All files services/misc

+
+ +
+ 100% + Statements + 32/32 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 32/32 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
rave.balances-currency.js +
+
100%8/8100%0/0100%1/1100%8/8
rave.balances.js +
+
100%3/3100%0/0100%1/1100%3/3
rave.initiate.bvn.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.resolve.account.js +
+
100%7/7100%0/0100%1/1100%7/7
rave.verify.bvn.js +
+
100%8/8100%0/0100%1/1100%8/8
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/misc/rave.balances-currency.js.html b/coverage/lcov-report/services/misc/rave.balances-currency.js.html new file mode 100644 index 0000000..543b18c --- /dev/null +++ b/coverage/lcov-report/services/misc/rave.balances-currency.js.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for services/misc/rave.balances-currency.js + + + + + + + + + +
+
+

All files / services/misc rave.balances-currency.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +1x +1x +  +  +1x +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { fetchBalance } = require('../schema/auxillary');
+ 
+async function service(data, _rave) {
+  validator(fetchBalance, data);
+  data.method = 'GET';
+  data.excludeQuery = true;
+  const { body: response } = await _rave.request(
+    `/v3/balances/${data.currency}`,
+    data,
+  );
+  // logger(`Query balance by currency`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/misc/rave.balances.js.html b/coverage/lcov-report/services/misc/rave.balances.js.html new file mode 100644 index 0000000..432b40d --- /dev/null +++ b/coverage/lcov-report/services/misc/rave.balances.js.html @@ -0,0 +1,106 @@ + + + + + + Code coverage report for services/misc/rave.balances.js + + + + + + + + + +
+
+

All files / services/misc rave.balances.js

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +81x +  +  +1x +  +  +1x + 
const { handleEmptyFetch } = require('../../utils/build');
+ 
+async function service(data, _rave) {
+  return handleEmptyFetch(data, `Fetch all balances`, `/v3/balances?`, _rave);
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/misc/rave.initiate.bvn.js.html b/coverage/lcov-report/services/misc/rave.initiate.bvn.js.html new file mode 100644 index 0000000..ffe2718 --- /dev/null +++ b/coverage/lcov-report/services/misc/rave.initiate.bvn.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/misc/rave.initiate.bvn.js + + + + + + + + + +
+
+

All files / services/misc rave.initiate.bvn.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +1x +1x +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { initiateBVNSchema } = require('../schema/auxillary');
+ 
+async function service(data, _rave) {
+  validator(initiateBVNSchema, data);
+  const { body: response } = await _rave.request(`v3/bvn/verifications`, data);
+  // logger(`Initiate BVN consent`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/misc/rave.resolve.account.js.html b/coverage/lcov-report/services/misc/rave.resolve.account.js.html new file mode 100644 index 0000000..de893b2 --- /dev/null +++ b/coverage/lcov-report/services/misc/rave.resolve.account.js.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for services/misc/rave.resolve.account.js + + + + + + + + + +
+
+

All files / services/misc rave.resolve.account.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14  +1x +1x +  +  +1x +1x +1x +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { resolveSchema } = require('../schema/auxillary');
+ 
+async function service(data, _rave) {
+  validator(resolveSchema, data);
+  data.method = 'POST';
+  const { body: response } = await _rave.request(`v3/accounts/resolve`, data);
+  // logger(`Resolve bank account details`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/misc/rave.verify.bvn.js.html b/coverage/lcov-report/services/misc/rave.verify.bvn.js.html new file mode 100644 index 0000000..1165b31 --- /dev/null +++ b/coverage/lcov-report/services/misc/rave.verify.bvn.js.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for services/misc/rave.verify.bvn.js + + + + + + + + + +
+
+

All files / services/misc rave.verify.bvn.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +1x +1x +  +  +1x +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { verifyBVNSchema } = require('../schema/auxillary');
+ 
+async function service(data, _rave) {
+  validator(verifyBVNSchema, data);
+  data.method = 'GET';
+  data.excludeQuery = true;
+  const { body: response } = await _rave.request(
+    `v3/bvn/verifications/${data.reference}`,
+    data,
+  );
+  // logger(`Verify BVN consent`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/mobile-money/index.html b/coverage/lcov-report/services/mobile-money/index.html new file mode 100644 index 0000000..6f73f3e --- /dev/null +++ b/coverage/lcov-report/services/mobile-money/index.html @@ -0,0 +1,206 @@ + + + + + + Code coverage report for services/mobile-money + + + + + + + + + +
+
+

All files services/mobile-money

+
+ +
+ 100% + Statements + 42/42 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 7/7 +
+ + +
+ 100% + Lines + 42/42 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
rave.francophone.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.ghana.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.mpesa.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.rwanda.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.tanzania.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.uganda.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.zambia.js +
+
100%6/6100%0/0100%1/1100%6/6
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/mobile-money/rave.francophone.js.html b/coverage/lcov-report/services/mobile-money/rave.francophone.js.html new file mode 100644 index 0000000..db8c88d --- /dev/null +++ b/coverage/lcov-report/services/mobile-money/rave.francophone.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/mobile-money/rave.francophone.js + + + + + + + + + +
+
+

All files / services/mobile-money rave.francophone.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +5x +3x +  +  +  +  +3x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { momoSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(momoSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/charges?type=mobile_money_franco`,
+    data,
+  );
+  // logger(`Create ${data.currency} MoMo charge`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/mobile-money/rave.ghana.js.html b/coverage/lcov-report/services/mobile-money/rave.ghana.js.html new file mode 100644 index 0000000..76f0a5a --- /dev/null +++ b/coverage/lcov-report/services/mobile-money/rave.ghana.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/mobile-money/rave.ghana.js + + + + + + + + + +
+
+

All files / services/mobile-money rave.ghana.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +3x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { momoSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(momoSchema, data);
+  const { body: response } = await _rave.request(
+    `/v3/charges?type=mobile_money_ghana`,
+    data,
+  );
+  // logger(`Create ${data.currency} MoMo charge`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/mobile-money/rave.mpesa.js.html b/coverage/lcov-report/services/mobile-money/rave.mpesa.js.html new file mode 100644 index 0000000..bfb4432 --- /dev/null +++ b/coverage/lcov-report/services/mobile-money/rave.mpesa.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/mobile-money/rave.mpesa.js + + + + + + + + + +
+
+

All files / services/mobile-money rave.mpesa.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +3x +2x +  +2x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { momoSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(momoSchema, data);
+  const { body: response } = await _rave.request(`v3/charges?type=mpesa`, data);
+  // logger(`Create ${data.currency} MoMo charge`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/mobile-money/rave.rwanda.js.html b/coverage/lcov-report/services/mobile-money/rave.rwanda.js.html new file mode 100644 index 0000000..4b4e80e --- /dev/null +++ b/coverage/lcov-report/services/mobile-money/rave.rwanda.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/mobile-money/rave.rwanda.js + + + + + + + + + +
+
+

All files / services/mobile-money rave.rwanda.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +2x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { momoSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(momoSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/charges?type=mobile_money_rwanda`,
+    data,
+  );
+  // logger(`Create ${data.currency} MoMo charge`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/mobile-money/rave.tanzania.js.html b/coverage/lcov-report/services/mobile-money/rave.tanzania.js.html new file mode 100644 index 0000000..ed98715 --- /dev/null +++ b/coverage/lcov-report/services/mobile-money/rave.tanzania.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/mobile-money/rave.tanzania.js + + + + + + + + + +
+
+

All files / services/mobile-money rave.tanzania.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +2x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { momoSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(momoSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/charges?type=mobile_money_tanzania`,
+    data,
+  );
+  // logger(`Create ${data.currency} MoMo charge`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/mobile-money/rave.uganda.js.html b/coverage/lcov-report/services/mobile-money/rave.uganda.js.html new file mode 100644 index 0000000..2862a13 --- /dev/null +++ b/coverage/lcov-report/services/mobile-money/rave.uganda.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/mobile-money/rave.uganda.js + + + + + + + + + +
+
+

All files / services/mobile-money rave.uganda.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +2x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { momoSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(momoSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/charges?type=mobile_money_uganda`,
+    data,
+  );
+  // logger(`Create ${data.currency} MoMo charge`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/mobile-money/rave.zambia.js.html b/coverage/lcov-report/services/mobile-money/rave.zambia.js.html new file mode 100644 index 0000000..b70affa --- /dev/null +++ b/coverage/lcov-report/services/mobile-money/rave.zambia.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/mobile-money/rave.zambia.js + + + + + + + + + +
+
+

All files / services/mobile-money rave.zambia.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +2x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { momoSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(momoSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/charges?type=mobile_money_zambia`,
+    data,
+  );
+  // logger(`Create ${data.currency} MoMo charge`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/otps/index.html b/coverage/lcov-report/services/otps/index.html new file mode 100644 index 0000000..b0fe3ce --- /dev/null +++ b/coverage/lcov-report/services/otps/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for services/otps + + + + + + + + + +
+
+

All files services/otps

+
+ +
+ 100% + Statements + 12/12 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
rave.create.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.validate.js +
+
100%6/6100%0/0100%1/1100%6/6
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/otps/rave.create.js.html b/coverage/lcov-report/services/otps/rave.create.js.html new file mode 100644 index 0000000..a54f5df --- /dev/null +++ b/coverage/lcov-report/services/otps/rave.create.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/otps/rave.create.js + + + + + + + + + +
+
+

All files / services/otps rave.create.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +1x +1x +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { createOTPSchema } = require('../schema/auxillary');
+ 
+async function service(data, _rave) {
+  validator(createOTPSchema, data);
+  const { body: response } = await _rave.request(`v3/otps`, data);
+  // logger(`Create OTP`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/otps/rave.validate.js.html b/coverage/lcov-report/services/otps/rave.validate.js.html new file mode 100644 index 0000000..22da7b2 --- /dev/null +++ b/coverage/lcov-report/services/otps/rave.validate.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/otps/rave.validate.js + + + + + + + + + +
+
+

All files / services/otps rave.validate.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { validateSchema } = require('../schema/auxillary');
+ 
+async function service(data, _rave) {
+  validator(validateSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/otps/${data.reference}/validate`,
+    data,
+  );
+  // logger(`Validate OTP`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/payment-plans/index.html b/coverage/lcov-report/services/payment-plans/index.html new file mode 100644 index 0000000..6e55f11 --- /dev/null +++ b/coverage/lcov-report/services/payment-plans/index.html @@ -0,0 +1,176 @@ + + + + + + Code coverage report for services/payment-plans + + + + + + + + + +
+
+

All files services/payment-plans

+
+ +
+ 100% + Statements + 30/30 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 30/30 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
rave.cancel.js +
+
100%7/7100%0/0100%1/1100%7/7
rave.create.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.retrieve.all.js +
+
100%3/3100%0/0100%1/1100%3/3
rave.retrieve.single.js +
+
100%7/7100%0/0100%1/1100%7/7
rave.update.js +
+
100%7/7100%0/0100%1/1100%7/7
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/payment-plans/rave.cancel.js.html b/coverage/lcov-report/services/payment-plans/rave.cancel.js.html new file mode 100644 index 0000000..3b33c16 --- /dev/null +++ b/coverage/lcov-report/services/payment-plans/rave.cancel.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/payment-plans/rave.cancel.js + + + + + + + + + +
+
+

All files / services/payment-plans rave.cancel.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { fetchSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(fetchSchema, data);
+  data.method = 'PUT';
+  const { body: response } = await _rave.request(
+    `v3/payment-plans/${data.id}/cancel`,
+    data,
+  );
+  // logger(`Cancel a payment plan`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/payment-plans/rave.create.js.html b/coverage/lcov-report/services/payment-plans/rave.create.js.html new file mode 100644 index 0000000..3c91490 --- /dev/null +++ b/coverage/lcov-report/services/payment-plans/rave.create.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/payment-plans/rave.create.js + + + + + + + + + +
+
+

All files / services/payment-plans rave.create.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +1x +1x +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { planSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(planSchema, data);
+  const { body: response } = await _rave.request(`v3/payment-plans`, data);
+  // logger(`Create a payment plan`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/payment-plans/rave.retrieve.all.js.html b/coverage/lcov-report/services/payment-plans/rave.retrieve.all.js.html new file mode 100644 index 0000000..5ad8043 --- /dev/null +++ b/coverage/lcov-report/services/payment-plans/rave.retrieve.all.js.html @@ -0,0 +1,106 @@ + + + + + + Code coverage report for services/payment-plans/rave.retrieve.all.js + + + + + + + + + +
+
+

All files / services/payment-plans rave.retrieve.all.js

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +81x +  +  +1x +  +  +1x + 
const { handleEmptyFetch } = require('../../utils/build');
+ 
+async function service(data, _rave) {
+  return handleEmptyFetch(data, `Fetch all plans`, `v3/payment-plans?`, _rave);
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/payment-plans/rave.retrieve.single.js.html b/coverage/lcov-report/services/payment-plans/rave.retrieve.single.js.html new file mode 100644 index 0000000..eff7e09 --- /dev/null +++ b/coverage/lcov-report/services/payment-plans/rave.retrieve.single.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/payment-plans/rave.retrieve.single.js + + + + + + + + + +
+
+

All files / services/payment-plans rave.retrieve.single.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { fetchSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(fetchSchema, data);
+  data.method = 'GET';
+  const { body: response } = await _rave.request(
+    `/v3/payment-plans/${data.id}`,
+    data,
+  );
+  // logger(`Fetch a plan`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/payment-plans/rave.update.js.html b/coverage/lcov-report/services/payment-plans/rave.update.js.html new file mode 100644 index 0000000..189b44d --- /dev/null +++ b/coverage/lcov-report/services/payment-plans/rave.update.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/payment-plans/rave.update.js + + + + + + + + + +
+
+

All files / services/payment-plans rave.update.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { updatePlanSchema } = require('../schema/auxillary');
+ 
+async function service(data, _rave) {
+  validator(updatePlanSchema, data);
+  data.method = 'PUT';
+  const { body: response } = await _rave.request(
+    `v3/payment-plans/${data.id}`,
+    data,
+  );
+  // logger(`Update plan details`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/schema/auxillary.js.html b/coverage/lcov-report/services/schema/auxillary.js.html new file mode 100644 index 0000000..30dad20 --- /dev/null +++ b/coverage/lcov-report/services/schema/auxillary.js.html @@ -0,0 +1,595 @@ + + + + + + Code coverage report for services/schema/auxillary.js + + + + + + + + + +
+
+

All files / services/schema auxillary.js

+
+ +
+ 100% + Statements + 24/24 +
+ + +
+ 100% + Branches + 8/8 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 24/24 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +1711x +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +1x +  +  +  +  +1x +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +1x +  +  +  +  +1x +  +  +  +  +  +  +  +1x +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +2x +1x +1x +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
const joi = require('joi');
+ 
+// create an OTP
+const createOTPSchema = joi.object({
+  length: joi.number().integer().min(1).required(),
+  customer: joi
+    .object({
+      name: joi.string().required(),
+      email: joi.string().email().required(),
+      phone: joi.string().required(),
+    })
+    .required(),
+  sender: joi.string().required(),
+  send: joi.boolean().required(),
+  medium: joi
+    .array()
+    .items(joi.string().valid('email', 'whatsapp', 'sms'))
+    .required(),
+  expiry: joi.number().integer().min(1),
+});
+ 
+// query transaction fees
+const feeSchema = joi.object({
+  currency: joi.string().uppercase().length(3).default('NGN').required(),
+  amount: joi.number().positive().required(),
+  payment_type: joi
+    .string()
+    .max(20)
+    .valid(
+      'card',
+      'debit_ng_account',
+      'mobilemoney',
+      'bank_transfer',
+      'ach_payment',
+    ),
+  card_first6digits: joi.string().length(6),
+});
+ 
+// fetch account details
+const fetchAccountSchema = joi.object({
+  order_ref: joi.string().trim().max(100).required(),
+});
+ 
+// fetch balance
+const fetchBalance = joi.object({
+  currency: joi.string().uppercase().length(3).default('NGN').required(),
+});
+ 
+// fetch bulk account details
+const fetchBulkAccountSchema = joi.object({
+  batch_id: joi.string().trim().max(100).required(),
+});
+ 
+// fund a virtual card
+const fundSchema = joi.object({
+  id: joi.string().required(),
+  debit_currency: joi.string().uppercase().length(3).default('NGN').required(),
+  amount: joi.number().required(),
+});
+ 
+// create an ebill order
+const orderSchema = joi.object({
+  email: joi.string().max(100).email().required(),
+  tx_ref: joi.string().trim().max(100).required(),
+  ip: joi
+    .string()
+    .ip({
+      version: ['ipv4', 'ipv6'],
+    })
+    .default('::127.0.0.1'),
+  custom_business_name: joi.string().trim().max(100).required(),
+  amount: joi.number().positive().required(),
+  currency: joi.string().uppercase().length(3).default('NGN'),
+  country: joi.string().uppercase().length(2).default('NG'),
+  number_of_units: joi.number().required(),
+  phone_number: joi
+    .string()
+    .max(50)
+    .custom((value) => {
+      if (value && !/^\+?\d+$/.test(value))
+        throw new Error('phone number should be digits');
+      return value;
+    }),
+});
+ 
+// resolve account details
+const resolveSchema = joi.object({
+  account_bank: joi.string().min(3).max(11).required(),
+  account_number: joi.string().required(),
+  country: joi.string().uppercase().length(2).default('NG'),
+  type: joi.string(),
+});
+ 
+// fetch tokenization data: bulk tokens and transaction list
+const retrieveSchema = joi.object({
+  bulk_id: joi.string().required(),
+});
+ 
+// update details on ebill orders
+const updateSchema = joi.object({
+  reference: joi.string().trim().max(100).required(),
+  amount: joi.number().positive().required(),
+  currency: joi.string().uppercase().length(3).default('NGN'),
+});
+ 
+// update payment plan details
+const updatePlanSchema = joi.object({
+  id: joi.string().required(),
+  name: joi.string().trim().max(150).required(),
+  status: joi.string().valid('active', 'cancelled').required()
+});
+ 
+// update card token
+const updateTokenSchema = joi.object({
+  token: joi.string().required(),
+  email: joi.string().email().required(),
+  phone_number: joi
+    .string()
+    .max(50)
+    .custom((value) => {
+      if (value && !/^\+?\d+$/.test(value))
+        throw new Error('phone number should be digits');
+      return value;
+    })
+    .required(),
+  full_name: joi.string().required(),
+});
+ 
+// withdraw funds from a virtual card
+const withdrawalSchema = joi.object({
+  id: joi.string().required(),
+  amount: joi.number().required(),
+});
+ 
+// Validate an OTP
+const validateSchema = joi.object({
+  reference: joi.string().trim().max(100).required(),
+  otp: joi.number().required(),
+});
+ 
+// validate a BVN
+const initiateBVNSchema = joi.object({
+  bvn: joi.string().length(11).required(),
+  firstname: joi.string().max(100).required(),
+  lastname: joi.string().max(100).required(),
+  redirect_url: joi.string().uri(),
+});
+ 
+const verifyBVNSchema = joi.object({
+  reference: joi.string().trim().max(100).required(),
+});
+ 
+module.exports = {
+  createOTPSchema,
+  feeSchema,
+  fetchAccountSchema,
+  fetchBalance,
+  fetchBulkAccountSchema,
+  fundSchema,
+  orderSchema,
+  resolveSchema,
+  retrieveSchema,
+  updateSchema,
+  updatePlanSchema,
+  updateTokenSchema,
+  withdrawalSchema,
+  validateSchema,
+  initiateBVNSchema,
+  verifyBVNSchema
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/schema/base.js.html b/coverage/lcov-report/services/schema/base.js.html new file mode 100644 index 0000000..8aa65b5 --- /dev/null +++ b/coverage/lcov-report/services/schema/base.js.html @@ -0,0 +1,277 @@ + + + + + + Code coverage report for services/schema/base.js + + + + + + + + + +
+
+

All files / services/schema base.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +651x +  +  +1x +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  + 
const joi = require('joi');
+ 
+// fetch information with single id. enforce id in payload
+const fetchSchema = joi.object({
+  id: joi.number().integer().required(),
+});
+ 
+// retrieve information with different query parameter. add enforceRequired to enforce query params and validate the request
+const listSchema = joi.object({
+  id: joi.string(),
+  page: joi.string().min(1),
+  index: joi.string().min(1),
+  size: joi.string().min(1),
+  from: joi.string().isoDate(),
+  to: joi.string().isoDate(),
+  bulk_id: joi.string(),
+  reference: joi.string(),
+  tx_ref: joi.string().trim().max(100),
+  currency: joi.string().uppercase().length(3).default('NGN'),
+  country: joi.string().uppercase().length(2).default('NG'),
+  amount: joi.number().positive(),
+  status: joi.string().max(20),
+  interval: joi
+    .string()
+    .max(20)
+    .valid('daily', 'weekly', 'monthly', 'quarterly', 'yearly'),
+  account_bank: joi.string().min(3).max(11),
+  account_number: joi.string().trim().max(20),
+  bank_name: joi.string().trim().max(100),
+  split_value: joi.number().min(0).max(1),
+  business_name: joi.string().trim().max(100),
+  business_email: joi.string().email(),
+  split_type: joi.string().valid('percentage', 'flat'),
+  subscribed_from: joi.string().isoDate(),
+  subscribed_to: joi.string().isoDate(),
+  plan: joi.string().min(1),
+  customer_fullname: joi.string().max(100),
+  email: joi.string().max(100).email(),
+  airtime: joi.number().integer().positive().min(0).max(1),
+  data_bundle: joi.number().integer().positive().min(0).max(1),
+  power: joi.number().integer().positive().min(0).max(1),
+  internet: joi.number().integer().positive().min(0).max(1),
+  toll: joi.number().integer().positive().min(0).max(1),
+  cable: joi.number().integer().positive().min(0).max(1),
+});
+ 
+// Set id for update
+const updateSchema = joi.object({
+  id: joi.string().required(),
+});
+ 
+// validate collections
+const validateSchema = joi.object({
+  otp: joi.string().min(5).max(7).required(),
+  flw_ref: joi.string().required(),
+  type: joi.string().valid('card', 'account'),
+});
+ 
+module.exports = {
+  fetchSchema,
+  listSchema,
+  updateSchema,
+  validateSchema,
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/schema/bill.js.html b/coverage/lcov-report/services/schema/bill.js.html new file mode 100644 index 0000000..d7215fd --- /dev/null +++ b/coverage/lcov-report/services/schema/bill.js.html @@ -0,0 +1,364 @@ + + + + + + Code coverage report for services/schema/bill.js + + + + + + + + + +
+
+

All files / services/schema bill.js

+
+ +
+ 100% + Statements + 12/12 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +941x +  +1x +  +  +  +  +1x +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  + 
const joi = require('joi');
+ 
+const amountQuerySchema = joi.object({
+  id: joi.string().required(),
+  product_id: joi.string().required(),
+});
+ 
+const createSchema = joi.object({
+  country: joi.string().uppercase().length(2).default('NG'),
+  amount: joi.number().positive().required(),
+  customer: joi.string().required(),
+  recurrence: joi.string().required(),
+  reference: joi.string().required(),
+  type: joi.string(),
+});
+ 
+const bulkCreateSchema = joi.object({
+  bulk_reference: joi.string().required(),
+  callback_url: joi.string().uri().required(),
+  bulk_data: joi
+    .array()
+    .items(
+      joi.object({
+        country: joi.string().required(),
+        customer: joi.string().required(),
+        amount: joi.number().positive().required(),
+        recurrence: joi.string().valid('WEEKLY', 'MONTHLY').required(),
+        type: joi.string().required(),
+        reference: joi.string().required(),
+      }),
+    )
+    .min(1)
+    .required(),
+});
+ 
+const createOrderSchema = joi.object({
+  id: joi.string().required(),
+  product_id: joi.string().required(),
+  amount: joi.number().positive().required(),
+  country: joi.string().required(),
+  reference: joi.string().trim().max(100).required(),
+  customer: joi
+    .object({
+      name: joi.string().required(),
+      email: joi.string().email().required(),
+      phone_number: joi
+        .string()
+        .max(50)
+        .custom((value) => {
+          if (value && !/^\+?\d+$/.test(value))
+            throw new Error('phone number should be digits');
+          return value;
+        })
+        .required(),
+    })
+    .required(),
+  fields: joi
+    .array()
+    .items(
+      joi.object({
+        id: joi.string(),
+        quantity: joi.string(),
+        value: joi.string(),
+      }),
+    )
+    .required(),
+});
+ 
+const fetchStatusSchema = joi.object({
+  reference: joi.string().trim().max(100).required(),
+});
+ 
+const updateOrderSchema = joi.object({
+  amount: joi.number().required(),
+  order_id: joi.string().trim().max(100).required(),
+  reference: joi.string().trim().max(100).required(),
+});
+ 
+const validateSchema = joi.object({
+  code: joi.string().trim().max(100).required(),
+  item_code: joi.string().trim().max(100).required(),
+  customer: joi.string().trim().max(100).required(),
+});
+ 
+module.exports = {
+  amountQuerySchema,
+  createSchema,
+  bulkCreateSchema,
+  createOrderSchema,
+  fetchStatusSchema,
+  updateOrderSchema,
+  validateSchema,
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/schema/create.js.html b/coverage/lcov-report/services/schema/create.js.html new file mode 100644 index 0000000..9f9e96e --- /dev/null +++ b/coverage/lcov-report/services/schema/create.js.html @@ -0,0 +1,2557 @@ + + + + + + Code coverage report for services/schema/create.js + + + + + + + + + +
+
+

All files / services/schema create.js

+
+ +
+ 100% + Statements + 85/85 +
+ + +
+ 100% + Branches + 49/49 +
+ + +
+ 100% + Functions + 16/16 +
+ + +
+ 100% + Lines + 85/85 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +8251x +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +5x +1x +4x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +5x +1x +4x +  +  +  +  +  +  +  +  +2x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +8x +3x +5x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +3x +1x +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +19x +1x +18x +  +  +  +  +  +  +  +2x +2x +2x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +2x +2x +2x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +2x +2x +2x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +2x +2x +2x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +2x +2x +2x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +2x +2x +2x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +2x +2x +2x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +2x +2x +2x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +2x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
const joi = require('joi');
+ 
+// create a virtual account
+const accountSchema = joi.object({
+  email: joi.string().max(100).email().required(),
+  is_permanent: joi.boolean().required(),
+  bvn: joi.when('is_permanent', {
+    is: true,
+    then: joi.string().trim().length(11).required(),
+  }),
+  duration: joi.string().min(1),
+  frequency: joi.string().min(1),
+  narration: joi.string().max(100),
+  tx_ref: joi.string().trim().max(100),
+  amount: joi.number().positive(),
+});
+ 
+// charge bank accounts: base for NG, UK & EU direct account debits
+const bankChargeSchema = joi.object({
+  amount: joi.number().positive().required(),
+  email: joi.string().max(100).email().required(),
+  tx_ref: joi.string().trim().max(100).required(),
+  currency: joi.string().uppercase().length(3).required(),
+  fullname: joi.string().max(100),
+  phone_number: joi
+    .string()
+    .max(50)
+    .custom((value) => {
+      if (value && !/^\+?\d+$/.test(value))
+        throw new Error('phone number should be digits');
+      return value;
+    }),
+  client_ip: joi
+    .string()
+    .ip({
+      version: ['ipv4', 'ipv6'],
+    })
+    .default('::127.0.0.1'),
+  device_fingerprint: joi.string().trim().max(200),
+  redirect_url: joi.string().uri(),
+  meta: joi.object().pattern(/^[a-zA-Z0-9_]*$/, joi.any()),
+  is_token_io: joi
+    .number()
+    .positive()
+    .when('currency', {
+      is: joi.string().valid('GBP', 'EUR'),
+      then: joi.required(),
+      otherwise: joi.optional(),
+    }),
+});
+ 
+// create a beneficiary
+const beneficiarySchema = joi.object({
+  account_number: joi.string().required(),
+  account_bank: joi.string().min(3).max(11).required(),
+  beneficiary_name: joi.string().required(),
+  currency: joi.string().uppercase().length(3),
+  bank_name: joi.string(),
+});
+ 
+// create virtual account in bulk
+const bulkAccountSchema = joi.object({
+  email: joi.string().max(100).email().required(),
+  is_permanent: joi.boolean().required(),
+  bvn: joi.when('is_permanent', {
+    is: true,
+    then: joi.string().trim().length(11).required(),
+  }),
+  accounts: joi.string().min(1).required(),
+  frequency: joi.string().min(1),
+  tx_ref: joi.string().trim().max(100),
+  amount: joi.number().positive(),
+});
+ 
+// create bulk token payment
+const bulkTokenDataSchema = joi.object({
+  token: joi.string().required(),
+  currency: joi.string().uppercase().length(3).default('NGN').required(),
+  country: joi.string().uppercase().length(2).default('NG'),
+  amount: joi.number().positive().required(),
+  email: joi.string().email().required(),
+  full_name: joi.string(),
+  ip: joi
+    .string()
+    .ip({
+      version: ['ipv4', 'ipv6'],
+    })
+    .default('::127.0.0.1'),
+  tx_ref: joi.string().trim().max(100).required(),
+});
+ 
+const bulkTokenSchema = joi.object({
+  title: joi.string(),
+  retry_strategy: joi
+    .object({
+      retry_interval: joi.number().integer().positive().required().messages({
+        'any.required': 'Retry interval is required!',
+      }),
+      retry_amount_variable: joi
+        .number()
+        .integer()
+        .positive()
+        .required()
+        .messages({
+          'any.required': 'Retry amount variable is required!',
+        }),
+      retry_attempt_variable: joi
+        .number()
+        .integer()
+        .positive()
+        .required()
+        .messages({
+          'any.required': 'Retry attempt variable is required!',
+        }),
+      last_attempt_variable: joi
+        .number()
+        .integer()
+        .positive()
+        .required()
+        .messages({
+          'any.required': 'Last attempt variable is required!',
+        }),
+    })
+    .required(),
+  bulk_data: joi.array().items(bulkTokenDataSchema).required(),
+});
+ 
+// SCHEMA IS UNUSED, createBulkTransferSchema IS USED INSTEAD
+// const bulkTransferSchema = joi.object({
+//   title: joi.string(),
+//   bulk_data: joi
+//     .array()
+//     .items(
+//       joi.object({
+//         account_bank: joi.string().length(3).required(),
+//         account_number: joi.string().trim().max(20).required(),
+//         amount: joi.number().positive().required(),
+//         currency: joi.string().uppercase().length(3).default('NGN').required(),
+//         narration: joi.string(),
+//         reference: joi.string(),
+//         meta: joi.when('currency', {
+//           is: 'ZAR',
+//           then: joi
+//             .array()
+//             .items(
+//               joi.object({
+//                 first_name: joi.string(),
+//                 last_name: joi.string(),
+//                 email: joi.string().email().required(),
+//                 mobile_number: joi
+//                   .string()
+//                   .max(50)
+//                   .custom((value) => {
+//                     if (value && !/^\+?\d+$/.test(value))
+//                       throw new Error('phone number should be digits');
+//                     return value;
+//                   })
+//                   .required(),
+//                 recipient_address: joi.string().required(),
+//                 sender: joi.string().required(),
+//                 sender_country: joi
+//                   .string()
+//                   .uppercase()
+//                   .length(2)
+//                   .default('NG')
+//                   .required(),
+//               }),
+//             )
+//             .required(),
+//         }),
+//       }),
+//     )
+//     .required(),
+// });
+ 
+// THE VIRTUAL CARD SERVICE IS CURRENTLY UNAVAILABLE
+// const cardSchema = joi.object({
+//   currency: joi.string().uppercase().length(3).valid('USD').required(),
+//   amount: joi.number().required(),
+//   debit_currency: joi.string().uppercase().length(3).default('NGN'),
+//   billing_name: joi.string(),
+//   billing_address: joi.string(),
+//   billing_city: joi.string().trim(),
+//   billing_state: joi.string().trim().length(2),
+//   billing_postal_code: joi.string().trim(),
+//   billing_country: joi.string().trim().length(2),
+//   first_name: joi.string().trim().required(),
+//   last_name: joi.string().trim().required(),
+//   date_of_birth: joi.string().trim().length(10).required(),
+//   email: joi.string().email().required(),
+//   phone: joi
+//     .string()
+//     .max(50)
+//     .custom((value) => {
+//       if (value && !/^\+?\d+$/.test(value))
+//         throw new Error('phone number should be digits');
+//       return value;
+//     }),
+//   title: joi.string().uppercase().valid('MR', 'MRS', 'MISS').required(),
+//   gender: joi.string().length(1).valid('M', 'F').required(),
+//   callback_url: joi.string().uri(),
+// });
+ 
+// collect card payments
+const cardChargeSchema = joi.object({
+  enckey: joi.string().required(),
+  tx_ref: joi.string().trim().max(100).required(),
+  amount: joi.number().positive().required(),
+  currency: joi.string().uppercase().length(3).default('NGN'),
+  card_number: joi.string().creditCard().required(),
+  cvv: joi.string().min(3).max(4).required(),
+  expiry_month: joi
+    .string()
+    .length(2)
+    .trim()
+    .required()
+    .custom((value) => {
+      if (!Number(value) || Number(value) < 1 || Number(value) > 12)
+        throw new Error('Invalid expiry month');
+      return value;
+    }),
+  expiry_year: joi.string().length(2).trim().required(),
+  email: joi.string().max(100).email().required(),
+  fullname: joi.string().max(100),
+  phone_number: joi
+    .string()
+    .max(50)
+    .custom((value) => {
+      if (value && !/^\+?\d+$/.test(value))
+        throw new Error('phone number should be digits');
+      return value;
+    }),
+  client_ip: joi
+    .string()
+    .ip({
+      version: ['ipv4', 'ipv6'],
+    })
+    .default('::127.0.0.1'),
+  device_fingerprint: joi.string().trim().max(200),
+  redirect_url: joi.string().uri(),
+  authorization: joi.object({
+    mode: joi.string().max(15),
+    pin: joi.number().positive().max(9999),
+    address: joi.string(),
+    city: joi.string(),
+    state: joi.string(),
+    country: joi.string().uppercase().length(2).default('NG'),
+    zipcode: joi.string(),
+  }),
+  payment_plan: joi.string(),
+  meta: joi.object().pattern(/^[a-zA-Z0-9_]*$/, joi.any()),
+  subaccounts: joi
+    .array()
+    .items(
+      joi.object({
+        id: joi.string().trim().max(100).required(),
+        transaction_split_ratio: joi.number().positive(),
+        transaction_charge_type: joi
+          .string()
+          .valid('flat', 'percentage', 'flat_subaccount'),
+        transaction_charge: joi.number().positive(),
+      }),
+    )
+    .min(1),
+});
+ 
+// initiate collections for different payment methods
+const chargeSchema = joi.object({
+  amount: joi.number().positive().required(),
+  email: joi.string().max(100).email().required(),
+  tx_ref: joi.string().trim().max(100).required(),
+  currency: joi.string().uppercase().length(3).default('NGN').required(),
+  fullname: joi.string().max(100),
+  phone_number: joi
+    .string()
+    .max(50)
+    .custom((value) => {
+      if (value && !/^\+?\d+$/.test(value))
+        throw new Error('phone number should be digits');
+      return value;
+    }),
+  client_ip: joi
+    .string()
+    .ip({
+      version: ['ipv4', 'ipv6'],
+    })
+    .default('::127.0.0.1'),
+  device_fingerprint: joi.string().trim().max(200),
+  redirect_url: joi.string().uri(),
+  country: joi.string().uppercase().length(2).default('NG'),
+  billing_address: joi.string(),
+  billing_city: joi.string(),
+  billing_state: joi.string(),
+  billing_country: joi.string().uppercase().length(2).default('NG'),
+  billing_zip: joi.string(),
+  meta: joi.object().pattern(/^[a-zA-Z0-9_]*$/, joi.any()),
+  expires: joi.number().positive().max(31536000),
+  subaccounts: joi
+    .array()
+    .items(
+      joi.object({
+        id: joi.string().trim().max(100).required(),
+        transaction_split_ratio: joi.number().positive(),
+        transaction_charge_type: joi
+          .string()
+          .valid('flat', 'percentage', 'flat_subaccount'),
+        transaction_charge: joi.number().positive(),
+      }),
+    )
+    .min(1),
+  sa_bank_code: joi.string(),
+});
+ 
+// create eNaira charge
+const eNairaChargeSchema = joi.object({
+  amount: joi.number().positive().required(),
+  email: joi.string().max(100).email().required(),
+  tx_ref: joi.string().trim().max(100).required(),
+  currency: joi.string().uppercase().length(3).default('NGN').required(),
+  fullname: joi.string().max(100),
+  phone_number: joi
+    .string()
+    .max(50)
+    .custom((value) => {
+      if (value && !/^\+?\d+$/.test(value))
+        throw new Error('phone number should be digits');
+      return value;
+    }),
+  client_ip: joi
+    .string()
+    .ip({
+      version: ['ipv4', 'ipv6'],
+    })
+    .default('::127.0.0.1'),
+  device_fingerprint: joi.string().trim().max(200),
+  redirect_url: joi.string().uri(),
+  meta: joi.object().pattern(/^[a-zA-Z0-9_]*$/, joi.any()),
+  is_token: joi.number().positive(),
+  is_qr: joi.number().positive(),
+});
+ 
+// create mobile money charge
+const momoSchema = joi.object({
+  amount: joi.number().positive().required(),
+  email: joi.string().max(100).email().required(),
+  tx_ref: joi.string().trim().max(100).required(),
+  currency: joi.string().uppercase().length(3).required(),
+  phone_number: joi
+    .string()
+    .max(50)
+    .custom((value) => {
+      if (value && !/^\+?\d+$/.test(value))
+        throw new Error('phone number should be digits');
+      return value;
+    })
+    .required(),
+  network: joi.when('currency', {
+    is: 'GHS',
+    then: joi
+      .string()
+      .custom((val, helpers) => {
+        const upper = val.toUpperCase();
+        const valid = ['MTN', 'AIRTELTIGO', 'VODAFONE'];
+        if (!valid.includes(upper)) {
+          return helpers.error('any.only');
+        }
+        return upper;
+      })
+      .optional()
+      .messages({
+        'any.only': 'Only MTN, AIRTELTIGO, and VODAFONE are valid for GHS.',
+      }),
+    otherwise: joi.when('currency', {
+      is: 'UGX',
+      then: joi
+        .string()
+        .custom((val, helpers) => {
+          const upper = val.toUpperCase();
+          const valid = ['MTN', 'AIRTEL'];
+          if (!valid.includes(upper)) {
+            return helpers.error('any.only');
+          }
+          return upper;
+        })
+        .optional()
+        .messages({
+          'any.only': 'Only MTN and AIRTEL are valid for UGX.',
+        }),
+      otherwise: joi.when('currency', {
+        is: 'KES',
+        then: joi
+          .string()
+          .custom((val, helpers) => {
+            const upper = val.toUpperCase();
+            const valid = ['SAFARICOM', 'AIRTEL'];
+            if (!valid.includes(upper)) {
+              return helpers.error('any.only');
+            }
+            return upper;
+          })
+          .optional()
+          .messages({
+            'any.only': 'Only SAFARICOM and AIRTEL are valid for KES.',
+          }),
+        otherwise: joi.when('currency', {
+          is: 'RWF',
+          then: joi
+            .string()
+            .custom((val, helpers) => {
+              const upper = val.toUpperCase();
+              const valid = ['MTN', 'AIRTEL'];
+              if (!valid.includes(upper)) {
+                return helpers.error('any.only');
+              }
+              return upper;
+            })
+            .optional()
+            .messages({
+              'any.only': 'Only MTN and AIRTEL are valid for RWF.',
+            }),
+          otherwise: joi.when('currency', {
+            is: 'TZS',
+            then: joi
+              .string()
+              .custom((val, helpers) => {
+                const upper = val.toUpperCase();
+                const valid = ['HALOPESA', 'AIRTEL', 'TIGO', 'VODACOM'];
+                if (!valid.includes(upper)) {
+                  return helpers.error('any.only');
+                }
+                return upper;
+              })
+              .optional()
+              .messages({
+                'any.only':
+                  'Only HALOPESA, AIRTEL, TIGO, and VODACOM are valid for TZS.',
+              }),
+            otherwise: joi.when('currency', {
+              is: 'ZMW',
+              then: joi
+                .string()
+                .custom((val, helpers) => {
+                  const upper = val.toUpperCase();
+                  const valid = ['MTN', 'AIRTEL', 'ZAMTEL'];
+                  if (!valid.includes(upper)) {
+                    return helpers.error('any.only');
+                  }
+                  return upper;
+                })
+                .optional()
+                .messages({
+                  'any.only': 'Only MTN, AIRTEL, and ZAMTEL are valid for ZMW.',
+                }),
+              otherwise: joi.when('currency', {
+                is: 'XOF',
+                then: joi
+                  .string()
+                  .custom((val, helpers) => {
+                    const upper = val.toUpperCase();
+                    const valid = ['WAVE', 'MTN', 'ORANGEMONEY'];
+                    if (!valid.includes(upper)) {
+                      return helpers.error('any.only');
+                    }
+                    return upper;
+                  })
+                  .optional()
+                  .messages({
+                    'any.only':
+                      'Only WAVE, MTN, and ORANGEMONEY are valid for XOF.',
+                  }),
+                otherwise: joi.when('currency', {
+                  is: 'XAF',
+                  then: joi
+                    .string()
+                    .custom((val, helpers) => {
+                      const upper = val.toUpperCase();
+                      const valid = ['MTN', 'ORANGEMONEY'];
+                      if (!valid.includes(upper)) {
+                        return helpers.error('any.only');
+                      }
+                      return upper;
+                    })
+                    .optional()
+                    .messages({
+                      'any.only': 'Only MTN and ORANGEMONEY are valid for XAF.',
+                    }),
+                  otherwise: joi.string().optional(),
+                }),
+              }),
+            }),
+          }),
+        }),
+      }),
+    }),
+  }),
+  voucher: joi.number().optional(),
+  country: joi.when('currency', {
+    is: joi.valid('XAF', 'XOF'),
+    then: joi.string().uppercase().length(2).default('CM').required(),
+  }),
+  order_id: joi.when('currency', {
+    is: 'RWF',
+    then: joi.string().trim().max(100).required(),
+  }),
+  fullname: joi.string().max(100),
+  client_ip: joi
+    .string()
+    .ip({
+      version: ['ipv4', 'ipv6'],
+    })
+    .default('::127.0.0.1'),
+  meta: joi.object().pattern(/^[a-zA-Z0-9_]*$/, joi.any()),
+  device_fingerprint: joi.string().trim().max(200),
+  redirect_url: joi.string().uri(),
+});
+ 
+// create a payment plan
+const planSchema = joi.object({
+  amount: joi.number().positive(),
+  name: joi.string().trim().max(150).required(),
+  interval: joi
+    .string()
+    .max(20)
+    .valid('daily', 'weekly', 'monthly', 'quarterly', 'yearly')
+    .required(),
+  duration: joi.string().min(1),
+  currency: joi.string().uppercase().length(3),
+});
+ 
+// initiate the refunds
+const refundSchema = joi.object({
+  id: joi.string().required(),
+  amount: joi.number().positive().required(),
+});
+ 
+// create a subaccount
+const subaccountSchema = joi.object({
+  account_bank: joi.string().min(3).max(11).required(),
+  account_number: joi.string().trim().max(20).required(),
+  business_name: joi.string().trim().max(100).required(),
+  split_value: joi.number().min(0).max(1).required(),
+  business_mobile: joi.string().required(),
+  business_email: joi.string().email(),
+  business_contact: joi.string().trim().max(100),
+  business_contact_mobile: joi.string().trim().max(100),
+  country: joi.string().uppercase().length(2).default('NG'),
+  meta: joi.array().items(joi.object().pattern(/^[a-zA-Z0-9_]*$/, joi.any())),
+  split_type: joi.string().valid('percentage', 'flat'),
+});
+ 
+// initiate a transfer
+const transferSchema = joi.object({
+  amount: joi.number().positive().required(),
+  currency: joi.string().uppercase().length(3).default('NGN').required(),
+  account_bank: joi.when('currency', {
+    is: joi.valid('EUR', 'GBP', 'USD', 'KES'),
+    then: joi.string().optional(),
+    otherwise: joi.string().required(),
+  }),
+  account_number: joi.when('currency', {
+    is: joi.valid('EUR', 'GBP', 'USD', 'KES'),
+    then: joi.string().trim().max(20).optional(),
+    otherwise: joi.string().trim().max(20).required(),
+  }),
+  narration: joi.string().max(100),
+  debit_subaccount: joi.string().max(100),
+  debit_currency: joi.string().uppercase().length(3).default('NGN'),
+  reference: joi.string().trim().max(100),
+  beneficiary: joi.number(),
+  beneficiary_name: joi.string().max(100),
+  destination_branch_code: joi.string().max(10),
+  callback_url: joi.string().max(100),
+  meta: joi.when('currency', {
+    is: 'EUR',
+    then: joi.array().items(
+      joi
+        .object({
+          AccountNumber: joi.string().trim().required().messages({
+            'any.required': 'Account number is required!',
+          }),
+          RoutingNumber: joi.string().trim().required().messages({
+            'any.required': 'Routing number is required!',
+          }),
+          SwiftCode: joi.string().required().messages({
+            'any.required': 'Swift code is required!',
+          }),
+          BankName: joi.string().required().messages({
+            'any.required': 'Destination bank name is required!',
+          }),
+          BeneficiaryName: joi.string().required().messages({
+            'any.required': 'Beneficiary name is required!',
+          }),
+          BeneficiaryCountry: joi
+            .string()
+            .uppercase()
+            .length(2)
+            .required()
+            .messages({
+              'any.required': 'Beneficiary country is required!',
+            }),
+          PostalCode: joi.string().required().messages({
+            'any.required': 'Postal code is required!',
+          }),
+          StreetNumber: joi.string().required().messages({
+            'any.required': 'Street number is required!',
+          }),
+          StreetName: joi.string().required().messages({
+            'any.required': 'Street name is required!',
+          }),
+          City: joi.string().required().messages({
+            'any.required': 'City is required!',
+          }),
+        })
+        .required(),
+    ),
+  }),
+  otherwise: joi.when('currency', {
+    is: 'GBP',
+    then: joi.array().items(
+      joi.object({
+        AccountNumber: joi.string().trim().required().messages({
+          'any.required': 'Account number is required!',
+        }),
+        RoutingNumber: joi.string().trim().required().messages({
+          'any.required': 'Routing numver is required!',
+        }),
+        SwiftCode: joi.string().required().messages({
+          'any.required': 'Swift code is required!',
+        }),
+        BankName: joi.string().required().messages({
+          'any.required': 'Destination bank name is required!',
+        }),
+        BeneficiaryName: joi.string().required().messages({
+          'any.required': 'Beneficiary name is required!',
+        }),
+        BeneficiaryCountry: joi
+          .string()
+          .uppercase()
+          .length(2)
+          .required()
+          .messages({
+            'any.required': 'Beneficiary country is required!',
+          }),
+        PostalCode: joi.string().required().messages({
+          'any.required': 'Postal code is required!',
+        }),
+        StreetNumber: joi.string().required().messages({
+          'any.required': 'Street number is required!',
+        }),
+        StreetName: joi.string().required().messages({
+          'any.required': 'Street name is required!',
+        }),
+        City: joi.string().required().messages({
+          'any.required': 'City is required!',
+        }),
+      }),
+    ),
+  }),
+  otherwise: joi.when('currency', {
+    is: 'USD',
+    then: joi.array().items(
+      joi.object({
+        AccountNumber: joi.string().trim().required().messages({
+          'any.required': 'Account number is required!',
+        }),
+        RoutingNumber: joi.string().trim().required().messages({
+          'any.required': 'Routing number is required!',
+        }),
+        SwiftCode: joi.string().required().messages({
+          'any.required': 'Swift code is required!',
+        }),
+        BankName: joi.string().required().messages({
+          'any.required': 'Destination bank name is required!',
+        }),
+        BeneficiaryName: joi.string().required().messages({
+          'any.required': 'Beneficiary name is required!',
+        }),
+        BeneficiaryAddress: joi.string().required().messages({
+          'any.required': 'Beneficiary address is required!',
+        }),
+        BeneficiaryCountry: joi
+          .string()
+          .uppercase()
+          .length(2)
+          .required()
+          .messages({
+            'any.required': 'Beneficiary country is required!',
+          }),
+      }),
+    ),
+  }),
+  otherwise: joi.when('currency', {
+    is: 'KES',
+    then: joi.array().items(
+      joi.object({
+        sender: joi.string().required().messages({
+          'any.required': 'Sender is required!',
+        }),
+        mobile_number: joi
+          .string()
+          .max(50)
+          .custom((value) => {
+            if (value && !/^\+?\d+$/.test(value))
+              throw new Error('phone number should be digits');
+            return value;
+          })
+          .required()
+          .messages({
+            'any.required': 'Sender mobile is required!',
+          }),
+        sender_country: joi.string().uppercase().length(2).required().messages({
+          'any.required': 'Sender country is required!',
+        }),
+      }),
+    ),
+  }),
+});
+ 
+// to create a modified version of your original transferSchema to include bank_code.
+const modifiedTransferSchema = transferSchema.keys({
+  bank_code: joi.when('currency', {
+    is: joi.valid('EUR', 'GBP', 'USD', 'KES'),
+    then: joi.string().optional(),
+    otherwise: joi.string().required(),
+  }),
+});
+ 
+// create a bulk transfer
+const createBulkTransferSchema = joi.object({
+  title: joi.string(),
+  bulk_data: joi
+    .array()
+    .items(
+      modifiedTransferSchema
+        .keys({
+          account_bank: joi.forbidden(), // Remove account_bank
+        })
+        .rename('account_bank', 'bank_code'),
+    )
+    .required(),
+});
+ 
+// create a tokenized charge
+const tokenSchema = joi.object({
+  token: joi.string().required(),
+  currency: joi.string().uppercase().length(3).default('NGN').required(),
+  country: joi.string().uppercase().length(2).default('NG'),
+  amount: joi.number().positive().required(),
+  email: joi.string().email().required(),
+  full_name: joi.string(),
+  ip: joi
+    .string()
+    .ip({
+      version: ['ipv4', 'ipv6'],
+    })
+    .default('::127.0.0.1'),
+  narration: joi.string().required(),
+  device_fingerprint: joi.string(),
+  tx_ref: joi.string().trim().max(100).required(),
+  do_3ds: joi.boolean(),
+  preauthorize: joi.boolean(),
+  redirect_url: joi.string(),
+});
+ 
+// charge bank accounts: base for USSD charge
+const ussdChargeSchema = joi.object({
+  account_bank: joi.string().min(3).max(11).required(),
+  amount: joi.number().positive().required(),
+  email: joi.string().max(100).email().required(),
+  tx_ref: joi.string().trim().max(100).required(),
+  currency: joi.string().uppercase().length(3).default('NGN').required(),
+  fullname: joi.string().max(100),
+  phone_number: joi
+    .string()
+    .max(50)
+    .custom((value) => {
+      if (value && !/^\+?\d+$/.test(value))
+        throw new Error('phone number should be digits');
+      return value;
+    }),
+  client_ip: joi
+    .string()
+    .ip({
+      version: ['ipv4', 'ipv6'],
+    })
+    .default('::127.0.0.1'),
+  device_fingerprint: joi.string().trim().max(200),
+  redirect_url: joi.string().uri(),
+  meta: joi.object().pattern(/^[a-zA-Z0-9_]*$/, joi.any()),
+});
+ 
+// Initiate transfers from one F4B wallet to another
+const walletTransferSchema = joi.object({
+  amount: joi.number().positive().required(),
+  currency: joi.string().uppercase().length(3).default('NGN').required(),
+  account_bank: joi.string().default('flutterwave').required(),
+  account_number: joi.string().trim().max(20).required(),
+  narration: joi.string().max(100).required(),
+  debit_subaccount: joi.string().max(200),
+  debit_currency: joi.string().uppercase().length(3).default('NGN'),
+  reference: joi.string().trim().max(100),
+});
+ 
+module.exports = {
+  accountSchema,
+  bankChargeSchema,
+  beneficiarySchema,
+  bulkAccountSchema,
+  bulkTokenSchema,
+  // bulkTransferSchema,
+  // cardSchema,
+  cardChargeSchema,
+  chargeSchema,
+  createBulkTransferSchema,
+  eNairaChargeSchema,
+  momoSchema,
+  planSchema,
+  refundSchema,
+  subaccountSchema,
+  transferSchema,
+  tokenSchema,
+  ussdChargeSchema,
+  walletTransferSchema,
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/schema/index.html b/coverage/lcov-report/services/schema/index.html new file mode 100644 index 0000000..e871db6 --- /dev/null +++ b/coverage/lcov-report/services/schema/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for services/schema + + + + + + + + + +
+
+

All files services/schema

+
+ +
+ 100% + Statements + 127/127 +
+ + +
+ 100% + Branches + 61/61 +
+ + +
+ 100% + Functions + 19/19 +
+ + +
+ 100% + Lines + 127/127 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
auxillary.js +
+
100%24/24100%8/8100%2/2100%24/24
base.js +
+
100%6/6100%0/0100%0/0100%6/6
bill.js +
+
100%12/12100%4/4100%1/1100%12/12
create.js +
+
100%85/85100%49/49100%16/16100%85/85
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/settlements/index.html b/coverage/lcov-report/services/settlements/index.html new file mode 100644 index 0000000..f741fe0 --- /dev/null +++ b/coverage/lcov-report/services/settlements/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for services/settlements + + + + + + + + + +
+
+

All files services/settlements

+
+ +
+ 100% + Statements + 10/10 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 10/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
rave.retrieve-all.js +
+
100%3/3100%0/0100%1/1100%3/3
rave.retrieve.js +
+
100%7/7100%0/0100%1/1100%7/7
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/settlements/rave.retrieve-all.js.html b/coverage/lcov-report/services/settlements/rave.retrieve-all.js.html new file mode 100644 index 0000000..6775d53 --- /dev/null +++ b/coverage/lcov-report/services/settlements/rave.retrieve-all.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/settlements/rave.retrieve-all.js + + + + + + + + + +
+
+

All files / services/settlements rave.retrieve-all.js

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +131x +  +  +1x +  +  +  +  +  +  +  +1x + 
const { handleEmptyFetch } = require('../../utils/build');
+ 
+async function service(data, _rave) {
+  return handleEmptyFetch(
+    data,
+    `Fetch all settlements`,
+    `v3/settlements?`,
+    _rave,
+  );
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/settlements/rave.retrieve.js.html b/coverage/lcov-report/services/settlements/rave.retrieve.js.html new file mode 100644 index 0000000..74687ac --- /dev/null +++ b/coverage/lcov-report/services/settlements/rave.retrieve.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/settlements/rave.retrieve.js + + + + + + + + + +
+
+

All files / services/settlements rave.retrieve.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { listSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(listSchema, data);
+  data.method = 'GET';
+  const { body: response } = await _rave.request(
+    `/v3/settlements/${data.id}`,
+    data,
+  );
+  // logger(`Fetch a settlement`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/subscriptions/index.html b/coverage/lcov-report/services/subscriptions/index.html new file mode 100644 index 0000000..d223276 --- /dev/null +++ b/coverage/lcov-report/services/subscriptions/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for services/subscriptions + + + + + + + + + +
+
+

All files services/subscriptions

+
+ +
+ 100% + Statements + 24/24 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 100% + Lines + 24/24 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
rave.activate.js +
+
100%7/7100%0/0100%1/1100%7/7
rave.cancel.js +
+
100%7/7100%0/0100%1/1100%7/7
rave.retrieve.all.js +
+
100%3/3100%0/0100%1/1100%3/3
rave.retrieve.single.js +
+
100%7/7100%0/0100%1/1100%7/7
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/subscriptions/rave.activate.js.html b/coverage/lcov-report/services/subscriptions/rave.activate.js.html new file mode 100644 index 0000000..7978b70 --- /dev/null +++ b/coverage/lcov-report/services/subscriptions/rave.activate.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/subscriptions/rave.activate.js + + + + + + + + + +
+
+

All files / services/subscriptions rave.activate.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { fetchSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(fetchSchema, data);
+  data.method = 'PUT';
+  const { body: response } = await _rave.request(
+    `v3/subscriptions/${data.id}/activate`,
+    data,
+  );
+  // logger(`Activate a subscription`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/subscriptions/rave.cancel.js.html b/coverage/lcov-report/services/subscriptions/rave.cancel.js.html new file mode 100644 index 0000000..16519fd --- /dev/null +++ b/coverage/lcov-report/services/subscriptions/rave.cancel.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/subscriptions/rave.cancel.js + + + + + + + + + +
+
+

All files / services/subscriptions rave.cancel.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { fetchSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(fetchSchema, data);
+  data.method = 'PUT';
+  const { body: response } = await _rave.request(
+    `v3/subscriptions/${data.id}/cancel`,
+    data,
+  );
+  // logger(`Cancel a subscription`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/subscriptions/rave.retrieve.all.js.html b/coverage/lcov-report/services/subscriptions/rave.retrieve.all.js.html new file mode 100644 index 0000000..0ebe3ec --- /dev/null +++ b/coverage/lcov-report/services/subscriptions/rave.retrieve.all.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/subscriptions/rave.retrieve.all.js + + + + + + + + + +
+
+

All files / services/subscriptions rave.retrieve.all.js

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +131x +  +  +1x +  +  +  +  +  +  +  +1x + 
const { handleEmptyFetch } = require('../../utils/build');
+ 
+async function service(data, _rave) {
+  return handleEmptyFetch(
+    data,
+    `Fetch all subscriptions`,
+    `/v3/subscriptions?`,
+    _rave,
+  );
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/subscriptions/rave.retrieve.single.js.html b/coverage/lcov-report/services/subscriptions/rave.retrieve.single.js.html new file mode 100644 index 0000000..3c0ed49 --- /dev/null +++ b/coverage/lcov-report/services/subscriptions/rave.retrieve.single.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/subscriptions/rave.retrieve.single.js + + + + + + + + + +
+
+

All files / services/subscriptions rave.retrieve.single.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +1x +1x +1x +  +1x +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { listSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(listSchema, data);
+  data.method = 'GET';
+  const { body: response } = await _rave.request(`v3/subscriptions?`, data);
+  // logger(`Fetch a subscription`, _rave);
+  return response;
+}
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/tokenized-charges/index.html b/coverage/lcov-report/services/tokenized-charges/index.html new file mode 100644 index 0000000..0e01654 --- /dev/null +++ b/coverage/lcov-report/services/tokenized-charges/index.html @@ -0,0 +1,176 @@ + + + + + + Code coverage report for services/tokenized-charges + + + + + + + + + +
+
+

All files services/tokenized-charges

+
+ +
+ 100% + Statements + 33/33 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 33/33 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
rave.bulk.charge.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.charge.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.retrieve.a.bulk.js +
+
100%7/7100%0/0100%1/1100%7/7
rave.retrieve.charge.transactions.js +
+
100%7/7100%0/0100%1/1100%7/7
rave.update.tokens.js +
+
100%7/7100%0/0100%1/1100%7/7
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/tokenized-charges/rave.bulk.charge.js.html b/coverage/lcov-report/services/tokenized-charges/rave.bulk.charge.js.html new file mode 100644 index 0000000..aa03c68 --- /dev/null +++ b/coverage/lcov-report/services/tokenized-charges/rave.bulk.charge.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/tokenized-charges/rave.bulk.charge.js + + + + + + + + + +
+
+

All files / services/tokenized-charges rave.bulk.charge.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { bulkTokenSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(bulkTokenSchema, data);
+  const { body: response } = await _rave.request(
+    `v3/bulk-tokenized-charges`,
+    data,
+  );
+  // logger(`Create bulk tokenized payments`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/tokenized-charges/rave.charge.js.html b/coverage/lcov-report/services/tokenized-charges/rave.charge.js.html new file mode 100644 index 0000000..d276e24 --- /dev/null +++ b/coverage/lcov-report/services/tokenized-charges/rave.charge.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/tokenized-charges/rave.charge.js + + + + + + + + + +
+
+

All files / services/tokenized-charges rave.charge.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +1x +1x +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { tokenSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(tokenSchema, data);
+  const { body: response } = await _rave.request(`v3/tokenized-charges`, data);
+  // logger(`Create tokenized payments`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/tokenized-charges/rave.retrieve.a.bulk.js.html b/coverage/lcov-report/services/tokenized-charges/rave.retrieve.a.bulk.js.html new file mode 100644 index 0000000..ed9ca42 --- /dev/null +++ b/coverage/lcov-report/services/tokenized-charges/rave.retrieve.a.bulk.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/tokenized-charges/rave.retrieve.a.bulk.js + + + + + + + + + +
+
+

All files / services/tokenized-charges rave.retrieve.a.bulk.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { retrieveSchema } = require('../schema/auxillary');
+ 
+async function service(data, _rave) {
+  validator(retrieveSchema, data);
+  data.method = 'GET';
+  const { body: response } = await _rave.request(
+    `v3/bulk-tokenized-charges/${data.bulk_id}`,
+    data,
+  );
+  // logger(`Bulk tokenized status`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/tokenized-charges/rave.retrieve.charge.transactions.js.html b/coverage/lcov-report/services/tokenized-charges/rave.retrieve.charge.transactions.js.html new file mode 100644 index 0000000..f1fb131 --- /dev/null +++ b/coverage/lcov-report/services/tokenized-charges/rave.retrieve.charge.transactions.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for services/tokenized-charges/rave.retrieve.charge.transactions.js + + + + + + + + + +
+
+

All files / services/tokenized-charges rave.retrieve.charge.transactions.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { retrieveSchema } = require('../schema/auxillary');
+ 
+async function service(data, _rave) {
+  validator(retrieveSchema, data);
+  data.method = 'GET';
+  const { body: response } = await _rave.request(
+    `v3/bulk-tokenized-charges/${data.bulk_id}/transactions`,
+    data,
+  );
+  // logger(`Fetch bulk tokenized payments`, _rave);
+  return response;
+}
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/tokenized-charges/rave.update.tokens.js.html b/coverage/lcov-report/services/tokenized-charges/rave.update.tokens.js.html new file mode 100644 index 0000000..b13bc15 --- /dev/null +++ b/coverage/lcov-report/services/tokenized-charges/rave.update.tokens.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/tokenized-charges/rave.update.tokens.js + + + + + + + + + +
+
+

All files / services/tokenized-charges rave.update.tokens.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +2x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { updateTokenSchema } = require('../schema/auxillary');
+ 
+async function service(data, _rave) {
+  validator(updateTokenSchema, data);
+  data.method = 'PUT';
+  const { body: response } = await _rave.request(
+    `v3/tokens/${data.token}`,
+    data,
+  );
+  // logger(`Update card token`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transactions/index.html b/coverage/lcov-report/services/transactions/index.html new file mode 100644 index 0000000..b593820 --- /dev/null +++ b/coverage/lcov-report/services/transactions/index.html @@ -0,0 +1,206 @@ + + + + + + Code coverage report for services/transactions + + + + + + + + + +
+
+

All files services/transactions

+
+ +
+ 100% + Statements + 49/49 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 7/7 +
+ + +
+ 100% + Lines + 49/49 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
rave.events.js +
+
100%8/8100%0/0100%1/1100%8/8
rave.fee.js +
+
100%8/8100%0/0100%1/1100%8/8
rave.refund.js +
+
100%7/7100%0/0100%1/1100%7/7
rave.resend-hooks.js +
+
100%7/7100%0/0100%1/1100%7/7
rave.retrieve.js +
+
100%3/3100%0/0100%1/1100%3/3
rave.verify-by-txref.js +
+
100%8/8100%0/0100%1/1100%8/8
rave.verify.js +
+
100%8/8100%0/0100%1/1100%8/8
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transactions/rave.events.js.html b/coverage/lcov-report/services/transactions/rave.events.js.html new file mode 100644 index 0000000..f1eb041 --- /dev/null +++ b/coverage/lcov-report/services/transactions/rave.events.js.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for services/transactions/rave.events.js + + + + + + + + + +
+
+

All files / services/transactions rave.events.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +1x +1x +  +  +1x +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { fetchSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(fetchSchema, data);
+  data.method = 'GET';
+  data.excludeQuery = true;
+  const { body: response } = await _rave.request(
+    `/v3/transactions/${data.id}/events`,
+    data,
+  );
+  // logger(`View transaction events`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transactions/rave.fee.js.html b/coverage/lcov-report/services/transactions/rave.fee.js.html new file mode 100644 index 0000000..d6d89db --- /dev/null +++ b/coverage/lcov-report/services/transactions/rave.fee.js.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for services/transactions/rave.fee.js + + + + + + + + + +
+
+

All files / services/transactions rave.fee.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +1x +1x +  +  +1x +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { feeSchema } = require('../schema/auxillary');
+ 
+async function service(data, _rave) {
+  validator(feeSchema, data);
+  data.method = 'GET';
+  data.excludeQuery = true;
+  const { body: response } = await _rave.request(
+    `v3/transactions/fee?amount=${data.amount}&currency=${data.currency}`,
+    data,
+  );
+  // logger(`Create OTP`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transactions/rave.refund.js.html b/coverage/lcov-report/services/transactions/rave.refund.js.html new file mode 100644 index 0000000..980ce9a --- /dev/null +++ b/coverage/lcov-report/services/transactions/rave.refund.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/transactions/rave.refund.js + + + + + + + + + +
+
+

All files / services/transactions rave.refund.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { refundSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(refundSchema, data);
+  data.method = 'POST';
+  const { body: response } = await _rave.request(
+    `v3/transactions/${data.id}/refund`,
+    data,
+  );
+  // logger(`Initiate a refund`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transactions/rave.resend-hooks.js.html b/coverage/lcov-report/services/transactions/rave.resend-hooks.js.html new file mode 100644 index 0000000..f9409a7 --- /dev/null +++ b/coverage/lcov-report/services/transactions/rave.resend-hooks.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/transactions/rave.resend-hooks.js + + + + + + + + + +
+
+

All files / services/transactions rave.resend-hooks.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +1x +1x +  +  +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { fetchSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(fetchSchema, data);
+  data.method = 'POST';
+  const { body: response } = await _rave.request(
+    `v3/transactions/${data.id}/resend-hook`,
+    data,
+  );
+  // logger(`Resend failed webhooks`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transactions/rave.retrieve.js.html b/coverage/lcov-report/services/transactions/rave.retrieve.js.html new file mode 100644 index 0000000..e01eb35 --- /dev/null +++ b/coverage/lcov-report/services/transactions/rave.retrieve.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/transactions/rave.retrieve.js + + + + + + + + + +
+
+

All files / services/transactions rave.retrieve.js

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +131x +  +  +1x +  +  +  +  +  +  +  +1x + 
const { handleEmptyFetch } = require('../../utils/build');
+ 
+async function service(data, _rave) {
+  return handleEmptyFetch(
+    data,
+    `Fetch all transactions`,
+    `/v3/transactions?`,
+    _rave,
+  );
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transactions/rave.verify-by-txref.js.html b/coverage/lcov-report/services/transactions/rave.verify-by-txref.js.html new file mode 100644 index 0000000..eeae20f --- /dev/null +++ b/coverage/lcov-report/services/transactions/rave.verify-by-txref.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for services/transactions/rave.verify-by-txref.js + + + + + + + + + +
+
+

All files / services/transactions rave.verify-by-txref.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +171x +  +1x +  +  +1x +1x +1x +1x +  +  +  +  +1x +  +1x + 
const { listSchema } = require('../schema/base');
+// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+ 
+async function service(data, _rave) {
+  validator(listSchema, data);
+  data.method = 'GET';
+  data.excludeQuery = true;
+  const { body: response } = await _rave.request(
+    `v3/transactions/verify_by_reference?tx_ref=${data.tx_ref}`,
+    data,
+  );
+  // logger(`Verify Transactions by tx_ref`, _rave);
+  return response;
+}
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transactions/rave.verify.js.html b/coverage/lcov-report/services/transactions/rave.verify.js.html new file mode 100644 index 0000000..cb6be56 --- /dev/null +++ b/coverage/lcov-report/services/transactions/rave.verify.js.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for services/transactions/rave.verify.js + + + + + + + + + +
+
+

All files / services/transactions rave.verify.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +1x +1x +  +  +1x +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { fetchSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(fetchSchema, data);
+  data.method = 'GET';
+  data.excludeQuery = true;
+  const { body: response } = await _rave.request(
+    `v3/transactions/${data.id}/verify`,
+    data,
+  );
+  // logger(`Verify Transactions`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transfers/index.html b/coverage/lcov-report/services/transfers/index.html new file mode 100644 index 0000000..9cf1c4b --- /dev/null +++ b/coverage/lcov-report/services/transfers/index.html @@ -0,0 +1,191 @@ + + + + + + Code coverage report for services/transfers + + + + + + + + + +
+
+

All files services/transfers

+
+ +
+ 100% + Statements + 37/37 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 6/6 +
+ + +
+ 100% + Lines + 37/37 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
rave.bulk.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.fee.js +
+
100%8/8100%0/0100%1/1100%8/8
rave.fetch.js +
+
100%8/8100%0/0100%1/1100%8/8
rave.initiate.js +
+
100%6/6100%0/0100%1/1100%6/6
rave.retrieve.transfers.js +
+
100%3/3100%0/0100%1/1100%3/3
rave.wallet.js +
+
100%6/6100%0/0100%1/1100%6/6
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transfers/rave.bulk.js.html b/coverage/lcov-report/services/transfers/rave.bulk.js.html new file mode 100644 index 0000000..7544274 --- /dev/null +++ b/coverage/lcov-report/services/transfers/rave.bulk.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/transfers/rave.bulk.js + + + + + + + + + +
+
+

All files / services/transfers rave.bulk.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +1x +1x +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { createBulkTransferSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(createBulkTransferSchema, data);
+  const { body: response } = await _rave.request(`v3/bulk-transfers`, data);
+  // logger(`Initiate bulk ${data.bulk_data.currency} transfers`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transfers/rave.fee.js.html b/coverage/lcov-report/services/transfers/rave.fee.js.html new file mode 100644 index 0000000..c6221dc --- /dev/null +++ b/coverage/lcov-report/services/transfers/rave.fee.js.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for services/transfers/rave.fee.js + + + + + + + + + +
+
+

All files / services/transfers rave.fee.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +181x +  +1x +  +  +  +1x +1x +1x +1x +  +  +  +  +1x +  +1x + 
const { listSchema } = require('../schema/base');
+// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+// const enforceRequired = require('../../utils/build');
+ 
+async function service(data, _rave) {
+  validator(listSchema, data);
+  data.method = 'GET';
+  data.excludeQuery = true;
+  const { body: response } = await _rave.request(
+    `v3/transfers/fee?currency=${data.currency}&amount=${data.amount}`,
+    data,
+  );
+  // logger(`Fetch transfer fees`, _rave);
+  return response;
+}
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transfers/rave.fetch.js.html b/coverage/lcov-report/services/transfers/rave.fetch.js.html new file mode 100644 index 0000000..1e7a71b --- /dev/null +++ b/coverage/lcov-report/services/transfers/rave.fetch.js.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for services/transfers/rave.fetch.js + + + + + + + + + +
+
+

All files / services/transfers rave.fetch.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +1x +1x +  +  +1x +1x +1x +1x +  +  +  +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { fetchSchema } = require('../schema/base');
+ 
+async function service(data, _rave) {
+  validator(fetchSchema, data);
+  data.method = 'GET';
+  data.excludeQuery = true;
+  const { body: response } = await _rave.request(
+    `/v3/transfers/${data.id}`,
+    data,
+  );
+  // logger(`Fetch a transfer`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transfers/rave.initiate.js.html b/coverage/lcov-report/services/transfers/rave.initiate.js.html new file mode 100644 index 0000000..aeaf9a3 --- /dev/null +++ b/coverage/lcov-report/services/transfers/rave.initiate.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/transfers/rave.initiate.js + + + + + + + + + +
+
+

All files / services/transfers rave.initiate.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +3x +2x +  +2x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { transferSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(transferSchema, data);
+  const { body: response } = await _rave.request(`v3/transfers`, data);
+  // logger(`Initiate ${data.currency} transfers`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transfers/rave.retrieve.transfers.js.html b/coverage/lcov-report/services/transfers/rave.retrieve.transfers.js.html new file mode 100644 index 0000000..c820f5e --- /dev/null +++ b/coverage/lcov-report/services/transfers/rave.retrieve.transfers.js.html @@ -0,0 +1,106 @@ + + + + + + Code coverage report for services/transfers/rave.retrieve.transfers.js + + + + + + + + + +
+
+

All files / services/transfers rave.retrieve.transfers.js

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +81x +  +  +1x +  +  +1x + 
const { handleEmptyFetch } = require('../../utils/build');
+ 
+async function service(data, _rave) {
+  return handleEmptyFetch(data, `Fetch all transfers`, `/v3/transfers?`, _rave);
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/services/transfers/rave.wallet.js.html b/coverage/lcov-report/services/transfers/rave.wallet.js.html new file mode 100644 index 0000000..455ab44 --- /dev/null +++ b/coverage/lcov-report/services/transfers/rave.wallet.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for services/transfers/rave.wallet.js + + + + + + + + + +
+
+

All files / services/transfers rave.wallet.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +1x +1x +  +  +1x +1x +  +1x +  +  +1x + 
// const { logger } = require('../../utils/logger');
+const { validator } = require('../../utils/validator');
+const { walletTransferSchema } = require('../schema/create');
+ 
+async function service(data, _rave) {
+  validator(walletTransferSchema, data);
+  const { body: response } = await _rave.request(`v3/transfers`, data);
+  // logger(`Initiate interwallet transfers`, _rave);
+  return response;
+}
+ 
+module.exports = service;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed68316eb3f65dec9063332d2f69bf3093bbfab GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc literal 0 HcmV?d00001 diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js new file mode 100644 index 0000000..2bb296a --- /dev/null +++ b/coverage/lcov-report/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/coverage/lcov-report/utils/build.js.html b/coverage/lcov-report/utils/build.js.html new file mode 100644 index 0000000..d3c64ef --- /dev/null +++ b/coverage/lcov-report/utils/build.js.html @@ -0,0 +1,238 @@ + + + + + + Code coverage report for utils/build.js + + + + + + + + + +
+
+

All files / utils build.js

+
+ +
+ 100% + Statements + 20/20 +
+ + +
+ 80% + Branches + 8/10 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 20/20 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +521x +1x +  +1x +  +  +  +2x +1x +  +  +1x +2x +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +11x +3x +3x +  +3x +  +3x +  +  +3x +  +  +8x +8x +  +8x +8x +  +  +8x +  +  +1x + 
const joi = require('joi');
+const { listSchema } = require('../services/schema/base');
+// const { logger } = require('./logger');
+const { validator } = require('./validator');
+ 
+// make parameter required in the listSchema
+function enforceRequired(schema, paramList) {
+  if (!Array.isArray(paramList)) {
+    throw new Error('paramList must be an array');
+  }
+  // params.forEach((param) => {});
+  paramList.map((param) => {
+    schema.keys({
+      [param]: schema._ids._byKey[param].rules.concat(
+        joi
+          .string()
+          .required()
+          .messages({
+            'any.required': `${param} is required!`,
+          }),
+      ),
+    });
+  });
+  return schema;
+}
+ 
+// Graciously handle fetch queries with empty payload
+async function handleEmptyFetch(param, name, uri, _rave) {
+  if (param === undefined || param === null) {
+    param = {};
+    param.method = 'GET';
+ 
+    const response = await _rave.request(uri, param);
+ 
+    const responseBody = response.body || response;
+ 
+    // logger(name, _rave);
+    return responseBody;
+  }
+ 
+  validator(listSchema, param);
+  param.method = 'GET';
+ 
+  const response = await _rave.request(uri, param);
+  const responseBody = response.body || response;
+ 
+  // logger(name, _rave);
+  return responseBody;
+}
+ 
+module.exports = { enforceRequired, handleEmptyFetch };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/utils/error.js.html b/coverage/lcov-report/utils/error.js.html new file mode 100644 index 0000000..d97c5fc --- /dev/null +++ b/coverage/lcov-report/utils/error.js.html @@ -0,0 +1,142 @@ + + + + + + Code coverage report for utils/error.js + + + + + + + + + +
+
+

All files / utils error.js

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 9/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +201x +  +  +  +28x +28x +28x +  +  +  +1x +2x +1x +  +1x +  +  +  +1x + 
const { errorLog } = require('./logger');
+ 
+class validationError extends Error {
+  constructor(message) {
+    super(message);
+    this.name = this.constructor.name;
+    Error.captureStackTrace(this, this.constructor);
+  }
+}
+ 
+const getErrorMessage = (err) => {
+  if (err instanceof validationError) {
+    return err.message;
+  } else {
+    errorLog.error(err.message, err);
+  }
+};
+ 
+module.exports = { validationError, getErrorMessage };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/utils/index.html b/coverage/lcov-report/utils/index.html new file mode 100644 index 0000000..f170ff7 --- /dev/null +++ b/coverage/lcov-report/utils/index.html @@ -0,0 +1,176 @@ + + + + + + Code coverage report for utils + + + + + + + + + +
+
+

All files utils

+
+ +
+ 100% + Statements + 53/53 +
+ + +
+ 91.66% + Branches + 22/24 +
+ + +
+ 100% + Functions + 9/9 +
+ + +
+ 100% + Lines + 52/52 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
build.js +
+
100%20/2080%8/10100%3/3100%20/20
error.js +
+
100%9/9100%2/2100%2/2100%9/9
logger.js +
+
100%6/6100%0/0100%0/0100%6/6
rave.utils.js +
+
100%9/9100%10/10100%2/2100%9/9
validator.js +
+
100%9/9100%2/2100%2/2100%8/8
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/utils/logger.js.html b/coverage/lcov-report/utils/logger.js.html new file mode 100644 index 0000000..f6156fd --- /dev/null +++ b/coverage/lcov-report/utils/logger.js.html @@ -0,0 +1,184 @@ + + + + + + Code coverage report for utils/logger.js + + + + + + + + + +
+
+

All files / utils logger.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +341x +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +1x + 
const axios = require('axios');
+const packageJson = require('../package.json');
+const { createLogger, format, transports } = require('winston');
+const { combine, timestamp, colorize, errors, printf, json } = format;
+ 
+// function logger(name, _rave) {
+//   axios.post(
+//     'https://kgelfdz7mf.execute-api.us-east-1.amazonaws.com/staging/sendevent',
+//     {
+//       publicKey: _rave.getPublicKey(),
+//       language: 'NodeJs v3',
+//       version: packageJson.version,
+//       title: 'Incoming call',
+//       message: name,
+//     },
+//   );
+// }
+ 
+const errorLogger = createLogger({
+  transports: [
+    new transports.Console({
+      format: combine(
+        errors({
+          stack: true,
+        }),
+        timestamp(),
+        json(),
+      ),
+    }),
+  ],
+});
+ 
+module.exports = { errorLog: errorLogger };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/utils/rave.utils.js.html b/coverage/lcov-report/utils/rave.utils.js.html new file mode 100644 index 0000000..00c52fa --- /dev/null +++ b/coverage/lcov-report/utils/rave.utils.js.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for utils/rave.utils.js + + + + + + + + + +
+
+

All files / utils rave.utils.js

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 10/10 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 9/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +161x +  +  +1x +98x +98x +98x +1x +  +  +1x +23x +  +  +  +1x
var RaveUtils = {};
+ 
+ 
+RaveUtils.emptyCheck = function (value, message, error) {
+	message = message || 'Some error occured';
+	error = error || Error;
+	if (!value || typeof value == 'undefined')
+		throw new error(message);
+}
+ 
+RaveUtils.initDefaultValue = function (value, default_value) {
+	return value || default_value;
+}
+ 
+ 
+module.exports = RaveUtils;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/utils/validator.js.html b/coverage/lcov-report/utils/validator.js.html new file mode 100644 index 0000000..b278a03 --- /dev/null +++ b/coverage/lcov-report/utils/validator.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for utils/validator.js + + + + + + + + + +
+
+

All files / utils validator.js

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +131x +1x +  +1x +109x +109x +  +109x +26x +26x +  +  + 
const joi = require('joi');
+const { validationError } = require('./error');
+ 
+exports.validator = (schema, data) => {
+  const validation = schema.validate(data);
+  const { _, error } = validation;
+ 
+  if (error) {
+    const message = error.details.map((x) => x.message);
+    throw new validationError(message);
+  }
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov.info b/coverage/lcov.info new file mode 100644 index 0000000..e28bde1 --- /dev/null +++ b/coverage/lcov.info @@ -0,0 +1,2429 @@ +TN: +SF:lib/rave.banks.js +FN:4,Bank +FN:6,(anonymous_1) +FN:11,(anonymous_2) +FNF:3 +FNH:3 +FNDA:2,Bank +FNDA:1,(anonymous_1) +FNDA:1,(anonymous_2) +DA:1,1 +DA:2,1 +DA:6,2 +DA:8,1 +DA:11,2 +DA:13,1 +DA:17,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/rave.base.js +FN:6,(anonymous_0) +FN:19,(anonymous_1) +FN:23,(anonymous_2) +FN:27,(anonymous_3) +FN:31,(anonymous_4) +FN:37,(anonymous_5) +FN:101,(anonymous_6) +FN:106,(anonymous_7) +FN:114,(anonymous_8) +FN:116,(anonymous_9) +FN:124,(anonymous_10) +FN:127,(anonymous_11) +FN:128,(anonymous_12) +FN:133,(anonymous_13) +FN:138,(anonymous_14) +FN:139,(anonymous_15) +FN:141,(anonymous_16) +FN:149,(anonymous_17) +FN:152,(anonymous_18) +FN:153,(anonymous_19) +FN:158,(anonymous_20) +FNF:21 +FNH:21 +FNDA:48,(anonymous_0) +FNDA:4,(anonymous_1) +FNDA:9,(anonymous_2) +FNDA:16,(anonymous_3) +FNDA:1,(anonymous_4) +FNDA:7,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:1,(anonymous_7) +FNDA:3,(anonymous_8) +FNDA:2,(anonymous_9) +FNDA:1,(anonymous_10) +FNDA:1,(anonymous_11) +FNDA:1,(anonymous_12) +FNDA:1,(anonymous_13) +FNDA:4,(anonymous_14) +FNDA:4,(anonymous_15) +FNDA:3,(anonymous_16) +FNDA:1,(anonymous_17) +FNDA:2,(anonymous_18) +FNDA:2,(anonymous_19) +FNDA:1,(anonymous_20) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:6,1 +DA:7,48 +DA:8,48 +DA:10,48 +DA:11,48 +DA:12,48 +DA:15,48 +DA:16,1 +DA:19,48 +DA:20,4 +DA:23,48 +DA:24,9 +DA:27,48 +DA:28,16 +DA:31,48 +DA:32,1 +DA:33,1 +DA:37,48 +DA:38,7 +DA:39,7 +DA:43,7 +DA:44,7 +DA:45,7 +DA:51,7 +DA:54,7 +DA:63,7 +DA:64,1 +DA:65,1 +DA:66,1 +DA:67,1 +DA:68,1 +DA:69,1 +DA:70,1 +DA:75,6 +DA:77,3 +DA:78,3 +DA:79,3 +DA:80,3 +DA:85,7 +DA:86,7 +DA:87,7 +DA:88,7 +DA:89,7 +DA:90,7 +DA:92,7 +DA:93,3 +DA:94,3 +DA:96,4 +DA:101,1 +DA:102,1 +DA:103,1 +DA:106,1 +DA:107,1 +DA:114,1 +DA:115,3 +DA:117,2 +DA:122,2 +DA:125,1 +DA:128,1 +DA:129,1 +DA:134,1 +DA:138,1 +DA:139,4 +DA:140,4 +DA:142,3 +DA:147,3 +DA:150,1 +DA:153,2 +DA:154,2 +DA:159,1 +DA:164,1 +LF:75 +LH:75 +BRDA:15,0,0,1 +BRDA:15,0,1,47 +BRDA:15,1,0,48 +BRDA:15,1,1,1 +BRDA:32,2,0,1 +BRDA:32,2,1,0 +BRDA:41,3,0,7 +BRDA:41,3,1,0 +BRDA:43,4,0,7 +BRDA:43,4,1,0 +BRDA:43,5,0,7 +BRDA:43,5,1,1 +BRDA:44,6,0,7 +BRDA:44,6,1,0 +BRDA:63,7,0,1 +BRDA:63,7,1,6 +BRDA:65,8,0,1 +BRDA:65,8,1,0 +BRDA:68,9,0,1 +BRDA:68,9,1,0 +BRDA:69,10,0,0 +BRDA:69,10,1,1 +BRDA:75,11,0,3 +BRDA:75,11,1,3 +BRDA:92,12,0,3 +BRDA:92,12,1,4 +BRDA:129,13,0,1 +BRDA:129,13,1,0 +BRDA:154,14,0,2 +BRDA:154,14,1,0 +BRF:30 +BRH:21 +end_of_record +TN: +SF:lib/rave.beneficiaries.js +FN:6,Beneficiaries +FN:7,(anonymous_1) +FN:11,(anonymous_2) +FN:14,(anonymous_3) +FN:17,(anonymous_4) +FNF:5 +FNH:5 +FNDA:4,Beneficiaries +FNDA:1,(anonymous_1) +FNDA:1,(anonymous_2) +FNDA:1,(anonymous_3) +FNDA:1,(anonymous_4) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:7,4 +DA:8,1 +DA:11,4 +DA:12,1 +DA:14,4 +DA:15,1 +DA:17,4 +DA:18,1 +DA:21,1 +LF:13 +LH:13 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/rave.bills.js +FN:15,Bills +FN:16,(anonymous_1) +FN:20,(anonymous_2) +FN:24,(anonymous_3) +FN:28,(anonymous_4) +FN:32,(anonymous_5) +FN:36,(anonymous_6) +FN:39,(anonymous_7) +FN:42,(anonymous_8) +FN:45,(anonymous_9) +FN:49,(anonymous_10) +FN:53,(anonymous_11) +FNF:12 +FNH:12 +FNDA:12,Bills +FNDA:1,(anonymous_1) +FNDA:1,(anonymous_2) +FNDA:1,(anonymous_3) +FNDA:2,(anonymous_4) +FNDA:1,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:1,(anonymous_7) +FNDA:1,(anonymous_8) +FNDA:1,(anonymous_9) +FNDA:1,(anonymous_10) +FNDA:1,(anonymous_11) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:16,12 +DA:17,1 +DA:20,12 +DA:21,1 +DA:24,12 +DA:25,1 +DA:28,12 +DA:29,2 +DA:32,12 +DA:33,1 +DA:36,12 +DA:37,1 +DA:39,12 +DA:40,1 +DA:42,12 +DA:43,1 +DA:45,12 +DA:46,1 +DA:49,12 +DA:50,1 +DA:53,12 +DA:54,1 +DA:57,1 +LF:34 +LH:34 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/rave.charge.js +FN:14,Charge +FN:15,(anonymous_1) +FN:19,(anonymous_2) +FN:23,(anonymous_3) +FN:27,(anonymous_4) +FN:31,(anonymous_5) +FN:35,(anonymous_6) +FN:39,(anonymous_7) +FN:42,(anonymous_8) +FN:45,(anonymous_9) +FN:48,(anonymous_10) +FN:51,(anonymous_11) +FN:54,(anonymous_12) +FNF:13 +FNH:12 +FNDA:30,Charge +FNDA:5,(anonymous_1) +FNDA:2,(anonymous_2) +FNDA:2,(anonymous_3) +FNDA:1,(anonymous_4) +FNDA:2,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:2,(anonymous_8) +FNDA:4,(anonymous_9) +FNDA:4,(anonymous_10) +FNDA:4,(anonymous_11) +FNDA:3,(anonymous_12) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:15,30 +DA:16,5 +DA:19,30 +DA:20,2 +DA:23,30 +DA:24,2 +DA:27,30 +DA:28,1 +DA:31,30 +DA:32,2 +DA:35,30 +DA:36,1 +DA:39,30 +DA:40,0 +DA:42,30 +DA:43,2 +DA:45,30 +DA:46,4 +DA:48,30 +DA:49,4 +DA:51,30 +DA:52,4 +DA:54,30 +DA:55,3 +DA:58,1 +LF:37 +LH:36 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/rave.ebills.js +FN:4,Ebills +FN:6,(anonymous_1) +FN:12,(anonymous_2) +FNF:3 +FNH:3 +FNDA:4,Ebills +FNDA:3,(anonymous_1) +FNDA:1,(anonymous_2) +DA:1,1 +DA:2,1 +DA:6,4 +DA:8,3 +DA:12,4 +DA:14,1 +DA:18,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/rave.misc.js +FN:7,Misc +FN:8,(anonymous_1) +FN:12,(anonymous_2) +FN:16,(anonymous_3) +FN:20,(anonymous_4) +FN:24,(anonymous_5) +FNF:6 +FNH:6 +FNDA:5,Misc +FNDA:1,(anonymous_1) +FNDA:1,(anonymous_2) +FNDA:1,(anonymous_3) +FNDA:1,(anonymous_4) +FNDA:1,(anonymous_5) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:8,5 +DA:9,1 +DA:12,5 +DA:13,1 +DA:16,5 +DA:17,1 +DA:20,5 +DA:21,1 +DA:24,5 +DA:25,1 +DA:28,1 +LF:16 +LH:16 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/rave.mobile_money.js +FN:9,Mobile_money +FN:10,(anonymous_1) +FN:14,(anonymous_2) +FN:18,(anonymous_3) +FN:22,(anonymous_4) +FN:25,(anonymous_5) +FN:29,(anonymous_6) +FN:33,(anonymous_7) +FNF:8 +FNH:8 +FNDA:19,Mobile_money +FNDA:3,(anonymous_1) +FNDA:3,(anonymous_2) +FNDA:2,(anonymous_3) +FNDA:2,(anonymous_4) +FNDA:5,(anonymous_5) +FNDA:2,(anonymous_6) +FNDA:2,(anonymous_7) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:10,19 +DA:11,3 +DA:14,19 +DA:15,3 +DA:18,19 +DA:19,2 +DA:22,19 +DA:23,2 +DA:25,19 +DA:26,5 +DA:29,19 +DA:30,2 +DA:33,19 +DA:34,2 +DA:37,1 +LF:22 +LH:22 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/rave.otps.js +FN:5,Otp +FN:7,(anonymous_1) +FN:13,(anonymous_2) +FNF:3 +FNH:3 +FNDA:2,Otp +FNDA:1,(anonymous_1) +FNDA:1,(anonymous_2) +DA:1,1 +DA:2,1 +DA:7,2 +DA:9,1 +DA:13,2 +DA:15,1 +DA:22,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/rave.payment_plan.js +FN:9,Payment_plan +FN:12,(anonymous_1) +FN:18,(anonymous_2) +FN:23,(anonymous_3) +FN:28,(anonymous_4) +FN:33,(anonymous_5) +FNF:6 +FNH:6 +FNDA:5,Payment_plan +FNDA:1,(anonymous_1) +FNDA:1,(anonymous_2) +FNDA:1,(anonymous_3) +FNDA:1,(anonymous_4) +FNDA:1,(anonymous_5) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:12,5 +DA:14,1 +DA:18,5 +DA:20,1 +DA:23,5 +DA:25,1 +DA:28,5 +DA:30,1 +DA:33,5 +DA:35,1 +DA:40,1 +LF:16 +LH:16 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/rave.settlements.js +FN:5,Settlements +FN:8,(anonymous_1) +FN:14,(anonymous_2) +FNF:3 +FNH:3 +FNDA:2,Settlements +FNDA:1,(anonymous_1) +FNDA:1,(anonymous_2) +DA:1,1 +DA:2,1 +DA:8,2 +DA:10,1 +DA:14,2 +DA:16,1 +DA:22,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/rave.subscriptions.js +FN:7,Subscriptions +FN:10,(anonymous_1) +FN:16,(anonymous_2) +FN:22,(anonymous_3) +FN:28,(anonymous_4) +FNF:5 +FNH:5 +FNDA:4,Subscriptions +FNDA:1,(anonymous_1) +FNDA:1,(anonymous_2) +FNDA:1,(anonymous_3) +FNDA:1,(anonymous_4) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:10,4 +DA:12,1 +DA:16,4 +DA:18,1 +DA:22,4 +DA:24,1 +DA:28,4 +DA:30,1 +DA:35,1 +LF:13 +LH:13 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/rave.tokenized.js +FN:10,Tokenized +FN:13,(anonymous_1) +FN:18,(anonymous_2) +FN:24,(anonymous_3) +FN:30,(anonymous_4) +FN:37,(anonymous_5) +FNF:6 +FNH:6 +FNDA:6,Tokenized +FNDA:1,(anonymous_1) +FNDA:1,(anonymous_2) +FNDA:1,(anonymous_3) +FNDA:1,(anonymous_4) +FNDA:2,(anonymous_5) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:13,6 +DA:15,1 +DA:18,6 +DA:20,1 +DA:24,6 +DA:26,1 +DA:30,6 +DA:32,1 +DA:37,6 +DA:39,2 +DA:46,1 +LF:16 +LH:16 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/rave.transactions.js +FN:9,Transactions +FN:10,(anonymous_1) +FN:14,(anonymous_2) +FN:18,(anonymous_3) +FN:22,(anonymous_4) +FN:26,(anonymous_5) +FN:30,(anonymous_6) +FN:34,(anonymous_7) +FNF:8 +FNH:8 +FNDA:7,Transactions +FNDA:1,(anonymous_1) +FNDA:1,(anonymous_2) +FNDA:1,(anonymous_3) +FNDA:1,(anonymous_4) +FNDA:1,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:1,(anonymous_7) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:10,7 +DA:11,1 +DA:14,7 +DA:15,1 +DA:18,7 +DA:19,1 +DA:22,7 +DA:23,1 +DA:26,7 +DA:27,1 +DA:30,7 +DA:31,1 +DA:34,7 +DA:35,1 +DA:38,1 +LF:22 +LH:22 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/rave.transfers.js +FN:8,Transfers +FN:9,(anonymous_1) +FN:13,(anonymous_2) +FN:16,(anonymous_3) +FN:19,(anonymous_4) +FN:22,(anonymous_5) +FN:25,(anonymous_6) +FNF:7 +FNH:7 +FNDA:8,Transfers +FNDA:1,(anonymous_1) +FNDA:1,(anonymous_2) +FNDA:3,(anonymous_3) +FNDA:1,(anonymous_4) +FNDA:1,(anonymous_5) +FNDA:1,(anonymous_6) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:9,8 +DA:10,1 +DA:13,8 +DA:14,1 +DA:16,8 +DA:17,3 +DA:19,8 +DA:20,1 +DA:22,8 +DA:23,1 +DA:25,8 +DA:26,1 +DA:29,1 +LF:19 +LH:19 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/security.js +FN:6,getKey +FN:33,encrypt +FN:48,getIntegrityHash +FN:54,(anonymous_3) +FNF:4 +FNH:4 +FNDA:3,getKey +FNDA:2,encrypt +FNDA:2,getIntegrityHash +FNDA:5,(anonymous_3) +DA:2,1 +DA:7,3 +DA:8,3 +DA:9,3 +DA:11,3 +DA:12,3 +DA:14,3 +DA:34,2 +DA:35,2 +DA:39,2 +DA:42,2 +DA:43,2 +DA:44,2 +DA:45,2 +DA:50,2 +DA:51,2 +DA:52,2 +DA:53,2 +DA:56,5 +DA:57,4 +DA:60,2 +DA:61,2 +DA:62,2 +DA:66,1 +LF:24 +LH:24 +BRDA:56,0,0,1 +BRDA:56,0,1,4 +BRF:2 +BRH:2 +end_of_record +TN: +SF:services/banks/rave.banks-branches.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:14,1 +DA:17,1 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/banks/rave.banks-country.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:14,1 +DA:17,1 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/beneficiaries/rave.create.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:9,1 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/beneficiaries/rave.delete.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/beneficiaries/rave.retrieve.js +FN:3,service +FNF:1 +FNH:1 +FNDA:1,service +DA:1,1 +DA:4,1 +DA:12,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/beneficiaries/rave.single.retrieve.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/bills/rave.amount.to-be-paid.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/bills/rave.create-bill.payment.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:9,1 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/bills/rave.create-bulk.bills.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:9,1 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/bills/rave.create-order-billing-code.js +FN:5,service +FNF:1 +FNH:1 +FNDA:2,service +DA:2,1 +DA:3,1 +DA:6,2 +DA:7,1 +DA:12,1 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/bills/rave.get-bill-payments.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/bills/rave.get.bill-categories.js +FN:3,service +FNF:1 +FNH:1 +FNDA:1,service +DA:1,1 +DA:4,1 +DA:12,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/bills/rave.get.bill-payment-agencies.js +FN:3,service +FNF:1 +FNH:1 +FNDA:1,service +DA:1,1 +DA:4,1 +DA:12,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/bills/rave.get.status.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/bills/rave.products-under-an-agency.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:14,1 +DA:17,1 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/bills/rave.update-bills.order.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/bills/rave.validate-bill.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:14,1 +DA:17,1 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/charge/encryp.js +FN:2,encrypt +FNF:1 +FNH:1 +FNDA:3,encrypt +DA:1,1 +DA:3,3 +DA:7,3 +DA:10,3 +DA:11,3 +DA:12,3 +DA:13,3 +DA:16,1 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/charge/rave.ach.js +FN:5,service +FNF:1 +FNH:1 +FNDA:2,service +DA:2,1 +DA:3,1 +DA:6,2 +DA:7,2 +DA:12,2 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/charge/rave.applepay.js +FN:5,service +FNF:1 +FNH:1 +FNDA:4,service +DA:2,1 +DA:3,1 +DA:6,4 +DA:7,2 +DA:12,2 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/charge/rave.bank.transfer.js +FN:5,service +FNF:1 +FNH:1 +FNDA:2,service +DA:2,1 +DA:3,1 +DA:6,2 +DA:7,1 +DA:12,1 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/charge/rave.card.charge.js +FN:6,service +FNF:1 +FNH:1 +FNDA:5,service +DA:1,1 +DA:3,1 +DA:4,1 +DA:7,5 +DA:9,3 +DA:10,3 +DA:11,3 +DA:12,3 +DA:14,3 +DA:20,3 +DA:22,1 +LF:11 +LH:11 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/charge/rave.enaira.js +FN:5,service +FNF:1 +FNH:1 +FNDA:4,service +DA:2,1 +DA:3,1 +DA:6,4 +DA:7,2 +DA:12,2 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/charge/rave.fawrypay.js +FN:5,service +FNF:1 +FNH:1 +FNDA:3,service +DA:2,1 +DA:3,1 +DA:6,3 +DA:7,2 +DA:12,2 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/charge/rave.googlepay.js +FN:5,service +FNF:1 +FNH:1 +FNDA:4,service +DA:2,1 +DA:3,1 +DA:6,4 +DA:7,2 +DA:12,2 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/charge/rave.ng-banks.js +FN:5,service +FNF:1 +FNH:1 +FNDA:2,service +DA:2,1 +DA:3,1 +DA:6,2 +DA:7,1 +DA:9,1 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/charge/rave.uk-banks.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:12,1 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/charge/rave.ussd.js +FN:5,service +FNF:1 +FNH:1 +FNDA:2,service +DA:2,1 +DA:3,1 +DA:6,2 +DA:7,1 +DA:9,1 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/charge/rave.validate.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:9,1 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/charge/rave.voucher.js +FNF:0 +FNH:0 +LF:0 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/ebills/rave.order.js +FN:5,service +FNF:1 +FNH:1 +FNDA:3,service +DA:2,1 +DA:3,1 +DA:6,3 +DA:7,1 +DA:9,1 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/ebills/rave.update.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/misc/rave.balances-currency.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:14,1 +DA:17,1 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/misc/rave.balances.js +FN:3,service +FNF:1 +FNH:1 +FNDA:1,service +DA:1,1 +DA:4,1 +DA:7,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/misc/rave.initiate.bvn.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:9,1 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/misc/rave.resolve.account.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:10,1 +DA:13,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/misc/rave.verify.bvn.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:14,1 +DA:17,1 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/mobile-money/rave.francophone.js +FN:5,service +FNF:1 +FNH:1 +FNDA:5,service +DA:2,1 +DA:3,1 +DA:6,5 +DA:7,3 +DA:12,3 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/mobile-money/rave.ghana.js +FN:5,service +FNF:1 +FNH:1 +FNDA:3,service +DA:2,1 +DA:3,1 +DA:6,3 +DA:7,1 +DA:12,1 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/mobile-money/rave.mpesa.js +FN:5,service +FNF:1 +FNH:1 +FNDA:3,service +DA:2,1 +DA:3,1 +DA:6,3 +DA:7,2 +DA:9,2 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/mobile-money/rave.rwanda.js +FN:5,service +FNF:1 +FNH:1 +FNDA:2,service +DA:2,1 +DA:3,1 +DA:6,2 +DA:7,1 +DA:12,1 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/mobile-money/rave.tanzania.js +FN:5,service +FNF:1 +FNH:1 +FNDA:2,service +DA:2,1 +DA:3,1 +DA:6,2 +DA:7,1 +DA:12,1 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/mobile-money/rave.uganda.js +FN:5,service +FNF:1 +FNH:1 +FNDA:2,service +DA:2,1 +DA:3,1 +DA:6,2 +DA:7,1 +DA:12,1 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/mobile-money/rave.zambia.js +FN:5,service +FNF:1 +FNH:1 +FNDA:2,service +DA:2,1 +DA:3,1 +DA:6,2 +DA:7,1 +DA:12,1 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/otps/rave.create.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:9,1 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/otps/rave.validate.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:12,1 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/payment-plans/rave.cancel.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/payment-plans/rave.create.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:9,1 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/payment-plans/rave.retrieve.all.js +FN:3,service +FNF:1 +FNH:1 +FNDA:1,service +DA:1,1 +DA:4,1 +DA:7,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/payment-plans/rave.retrieve.single.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/payment-plans/rave.update.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/schema/auxillary.js +FN:79,(anonymous_0) +FN:120,(anonymous_1) +FNF:2 +FNH:2 +FNDA:2,(anonymous_0) +FNDA:2,(anonymous_1) +DA:1,1 +DA:4,1 +DA:23,1 +DA:40,1 +DA:45,1 +DA:50,1 +DA:55,1 +DA:62,1 +DA:80,2 +DA:81,1 +DA:82,1 +DA:87,1 +DA:95,1 +DA:100,1 +DA:107,1 +DA:114,1 +DA:121,2 +DA:122,1 +DA:123,1 +DA:130,1 +DA:136,1 +DA:142,1 +DA:149,1 +DA:153,1 +LF:24 +LH:24 +BRDA:80,0,0,1 +BRDA:80,0,1,1 +BRDA:80,1,0,2 +BRDA:80,1,1,2 +BRDA:121,2,0,1 +BRDA:121,2,1,1 +BRDA:121,3,0,2 +BRDA:121,3,1,2 +BRF:8 +BRH:8 +end_of_record +TN: +SF:services/schema/base.js +FNF:0 +FNH:0 +DA:1,1 +DA:4,1 +DA:9,1 +DA:48,1 +DA:53,1 +DA:59,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/schema/bill.js +FN:49,(anonymous_0) +FNF:1 +FNH:1 +FNDA:2,(anonymous_0) +DA:1,1 +DA:3,1 +DA:8,1 +DA:17,1 +DA:36,1 +DA:50,2 +DA:51,1 +DA:52,1 +DA:69,1 +DA:73,1 +DA:79,1 +DA:85,1 +LF:12 +LH:12 +BRDA:50,0,0,1 +BRDA:50,0,1,1 +BRDA:50,1,0,2 +BRDA:50,1,1,2 +BRF:4 +BRH:4 +end_of_record +TN: +SF:services/schema/create.js +FN:28,(anonymous_0) +FN:217,(anonymous_1) +FN:228,(anonymous_2) +FN:277,(anonymous_3) +FN:324,(anonymous_4) +FN:351,(anonymous_5) +FN:361,(anonymous_6) +FN:377,(anonymous_7) +FN:393,(anonymous_8) +FN:409,(anonymous_9) +FN:425,(anonymous_10) +FN:442,(anonymous_11) +FN:458,(anonymous_12) +FN:475,(anonymous_13) +FN:702,(anonymous_14) +FN:776,(anonymous_15) +FNF:16 +FNH:16 +FNDA:5,(anonymous_0) +FNDA:5,(anonymous_1) +FNDA:2,(anonymous_2) +FNDA:8,(anonymous_3) +FNDA:3,(anonymous_4) +FNDA:19,(anonymous_5) +FNDA:2,(anonymous_6) +FNDA:2,(anonymous_7) +FNDA:2,(anonymous_8) +FNDA:2,(anonymous_9) +FNDA:2,(anonymous_10) +FNDA:2,(anonymous_11) +FNDA:2,(anonymous_12) +FNDA:2,(anonymous_13) +FNDA:2,(anonymous_14) +FNDA:2,(anonymous_15) +DA:1,1 +DA:4,1 +DA:19,1 +DA:29,5 +DA:30,1 +DA:31,4 +DA:53,1 +DA:62,1 +DA:76,1 +DA:92,1 +DA:205,1 +DA:218,5 +DA:219,1 +DA:220,4 +DA:229,2 +DA:230,1 +DA:231,1 +DA:268,1 +DA:278,8 +DA:279,3 +DA:280,5 +DA:315,1 +DA:325,3 +DA:326,1 +DA:327,2 +DA:343,1 +DA:352,19 +DA:353,1 +DA:354,18 +DA:362,2 +DA:363,2 +DA:364,2 +DA:365,1 +DA:367,1 +DA:378,2 +DA:379,2 +DA:380,2 +DA:381,1 +DA:383,1 +DA:394,2 +DA:395,2 +DA:396,2 +DA:397,1 +DA:399,1 +DA:410,2 +DA:411,2 +DA:412,2 +DA:413,1 +DA:415,1 +DA:426,2 +DA:427,2 +DA:428,2 +DA:429,1 +DA:431,1 +DA:443,2 +DA:444,2 +DA:445,2 +DA:446,1 +DA:448,1 +DA:459,2 +DA:460,2 +DA:461,2 +DA:462,1 +DA:464,1 +DA:476,2 +DA:477,2 +DA:478,2 +DA:479,1 +DA:481,1 +DA:518,1 +DA:531,1 +DA:537,1 +DA:552,1 +DA:703,2 +DA:704,1 +DA:705,1 +DA:720,1 +DA:729,1 +DA:744,1 +DA:766,1 +DA:777,2 +DA:778,1 +DA:779,1 +DA:793,1 +DA:804,1 +LF:85 +LH:85 +BRDA:29,0,0,1 +BRDA:29,0,1,4 +BRDA:29,1,0,5 +BRDA:29,1,1,5 +BRDA:218,2,0,1 +BRDA:218,2,1,4 +BRDA:218,3,0,5 +BRDA:218,3,1,5 +BRDA:218,3,2,5 +BRDA:229,4,0,1 +BRDA:229,4,1,1 +BRDA:229,5,0,2 +BRDA:229,5,1,2 +BRDA:278,6,0,3 +BRDA:278,6,1,5 +BRDA:278,7,0,8 +BRDA:278,7,1,8 +BRDA:325,8,0,1 +BRDA:325,8,1,2 +BRDA:325,9,0,3 +BRDA:325,9,1,3 +BRDA:352,10,0,1 +BRDA:352,10,1,18 +BRDA:352,11,0,19 +BRDA:352,11,1,19 +BRDA:364,12,0,1 +BRDA:364,12,1,1 +BRDA:380,13,0,1 +BRDA:380,13,1,1 +BRDA:396,14,0,1 +BRDA:396,14,1,1 +BRDA:412,15,0,1 +BRDA:412,15,1,1 +BRDA:428,16,0,1 +BRDA:428,16,1,1 +BRDA:445,17,0,1 +BRDA:445,17,1,1 +BRDA:461,18,0,1 +BRDA:461,18,1,1 +BRDA:478,19,0,1 +BRDA:478,19,1,1 +BRDA:703,20,0,1 +BRDA:703,20,1,1 +BRDA:703,21,0,2 +BRDA:703,21,1,2 +BRDA:777,22,0,1 +BRDA:777,22,1,1 +BRDA:777,23,0,2 +BRDA:777,23,1,2 +BRF:49 +BRH:49 +end_of_record +TN: +SF:services/settlements/rave.retrieve-all.js +FN:3,service +FNF:1 +FNH:1 +FNDA:1,service +DA:1,1 +DA:4,1 +DA:12,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/settlements/rave.retrieve.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/subscriptions/rave.activate.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/subscriptions/rave.cancel.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/subscriptions/rave.retrieve.all.js +FN:3,service +FNF:1 +FNH:1 +FNDA:1,service +DA:1,1 +DA:4,1 +DA:12,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/subscriptions/rave.retrieve.single.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:10,1 +DA:12,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/tokenized-charges/rave.bulk.charge.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:12,1 +DA:15,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/tokenized-charges/rave.charge.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:9,1 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/tokenized-charges/rave.retrieve.a.bulk.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/tokenized-charges/rave.retrieve.charge.transactions.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:15,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/tokenized-charges/rave.update.tokens.js +FN:5,service +FNF:1 +FNH:1 +FNDA:2,service +DA:2,1 +DA:3,1 +DA:6,2 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/transactions/rave.events.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:14,1 +DA:17,1 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/transactions/rave.fee.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:14,1 +DA:17,1 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/transactions/rave.refund.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/transactions/rave.resend-hooks.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:13,1 +DA:16,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/transactions/rave.retrieve.js +FN:3,service +FNF:1 +FNH:1 +FNDA:1,service +DA:1,1 +DA:4,1 +DA:12,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/transactions/rave.verify-by-txref.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:1,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:14,1 +DA:16,1 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/transactions/rave.verify.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:14,1 +DA:17,1 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/transfers/rave.bulk.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:9,1 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/transfers/rave.fee.js +FN:6,service +FNF:1 +FNH:1 +FNDA:1,service +DA:1,1 +DA:3,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:10,1 +DA:15,1 +DA:17,1 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/transfers/rave.fetch.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:14,1 +DA:17,1 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/transfers/rave.initiate.js +FN:5,service +FNF:1 +FNH:1 +FNDA:3,service +DA:2,1 +DA:3,1 +DA:6,3 +DA:7,2 +DA:9,2 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/transfers/rave.retrieve.transfers.js +FN:3,service +FNF:1 +FNH:1 +FNDA:1,service +DA:1,1 +DA:4,1 +DA:7,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:services/transfers/rave.wallet.js +FN:5,service +FNF:1 +FNH:1 +FNDA:1,service +DA:2,1 +DA:3,1 +DA:6,1 +DA:7,1 +DA:9,1 +DA:12,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:utils/build.js +FN:7,enforceRequired +FN:12,(anonymous_1) +FN:28,handleEmptyFetch +FNF:3 +FNH:3 +FNDA:2,enforceRequired +FNDA:2,(anonymous_1) +FNDA:11,handleEmptyFetch +DA:1,1 +DA:2,1 +DA:4,1 +DA:8,2 +DA:9,1 +DA:12,1 +DA:13,2 +DA:24,1 +DA:29,11 +DA:30,3 +DA:31,3 +DA:33,3 +DA:35,3 +DA:38,3 +DA:41,8 +DA:42,8 +DA:44,8 +DA:45,8 +DA:48,8 +DA:51,1 +LF:20 +LH:20 +BRDA:8,0,0,1 +BRDA:8,0,1,1 +BRDA:29,1,0,3 +BRDA:29,1,1,8 +BRDA:29,2,0,11 +BRDA:29,2,1,8 +BRDA:35,3,0,3 +BRDA:35,3,1,0 +BRDA:45,4,0,8 +BRDA:45,4,1,0 +BRF:10 +BRH:8 +end_of_record +TN: +SF:utils/error.js +FN:4,(anonymous_0) +FN:11,(anonymous_1) +FNF:2 +FNH:2 +FNDA:28,(anonymous_0) +FNDA:2,(anonymous_1) +DA:1,1 +DA:5,28 +DA:6,28 +DA:7,28 +DA:11,1 +DA:12,2 +DA:13,1 +DA:15,1 +DA:19,1 +LF:9 +LH:9 +BRDA:12,0,0,1 +BRDA:12,0,1,1 +BRF:2 +BRH:2 +end_of_record +TN: +SF:utils/logger.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:19,1 +DA:33,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:utils/rave.utils.js +FN:4,(anonymous_0) +FN:11,(anonymous_1) +FNF:2 +FNH:2 +FNDA:98,(anonymous_0) +FNDA:23,(anonymous_1) +DA:1,1 +DA:4,1 +DA:5,98 +DA:6,98 +DA:7,98 +DA:8,1 +DA:11,1 +DA:12,23 +DA:16,1 +LF:9 +LH:9 +BRDA:5,0,0,98 +BRDA:5,0,1,1 +BRDA:6,1,0,98 +BRDA:6,1,1,98 +BRDA:7,2,0,1 +BRDA:7,2,1,97 +BRDA:7,3,0,98 +BRDA:7,3,1,97 +BRDA:12,4,0,23 +BRDA:12,4,1,11 +BRF:10 +BRH:10 +end_of_record +TN: +SF:utils/validator.js +FN:4,(anonymous_0) +FN:9,(anonymous_1) +FNF:2 +FNH:2 +FNDA:109,(anonymous_0) +FNDA:26,(anonymous_1) +DA:1,1 +DA:2,1 +DA:4,1 +DA:5,109 +DA:6,109 +DA:8,109 +DA:9,26 +DA:10,26 +LF:8 +LH:8 +BRDA:8,0,0,26 +BRDA:8,0,1,83 +BRF:2 +BRH:2 +end_of_record diff --git a/lib/rave.bills.js b/lib/rave.bills.js index df6b31f..94e0e0c 100644 --- a/lib/rave.bills.js +++ b/lib/rave.bills.js @@ -8,7 +8,7 @@ const bill_cat = require('../services/bills/rave.get.bill-categories'); const bill_agencies = require('../services/bills/rave.get.bill-payment-agencies'); // const get_recurring_bills = require ('../services/bills/rave.get.recurrings-bills') const status = require('../services/bills/rave.get.status'); -const prdts_under_agency = require('../services/bills/rave.products-under-an-agency'); +const products_under_agency = require('../services/bills/rave.products-under-an-agency'); const update_bills_order = require('../services/bills/rave.update-bills.order'); const validate_bill = require('../services/bills/rave.validate-bill'); @@ -42,8 +42,8 @@ function Bills(RaveBase) { this.fetch_status = function (data) { return status(data, RaveBase); }; - this.products_under_agency = function (data) { - return prdts_under_agency(data, RaveBase); + this.fetch_products_under_agency = function (data) { + return products_under_agency(data, RaveBase); }; this.update_bills = function (data) { diff --git a/lib/security.js b/lib/security.js index 8464528..17d1ed2 100644 --- a/lib/security.js +++ b/lib/security.js @@ -1,4 +1,5 @@ -var createHash = require('sha.js'); +// var createHash = require('sha.js'); +var crypto = require('crypto');//crypto is faster and managed by NodeJs // this is the getKey function that generates an encryption Key // for you by passing your Secret Key as a parameter. @@ -57,7 +58,7 @@ function getIntegrityHash(data, pubkey, seckey) { }); hashString += seckey; - var hash = createHash('sha256').update(hashString, 'utf8').digest('hex'); + var hash = crypto.createHash('sha256').update(hashString, 'utf8').digest('hex'); return hash; } diff --git a/package-lock.json b/package-lock.json index c73538e..6cd6537 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,26 +9,24 @@ "version": "1.2.0", "license": "MIT", "dependencies": { - "axios": "^1.8.4", + "axios": "1.13.3", "bluebird": "^3.7.2", "chai-as-promised-also-chain": "^1.0.2", "eslint-config-prettier": "^8.6.0", - "joi": "^17.8.3", + "joi": "17.8.3", "md5": "^2.3.0", - "node-forge": "^1.3.2", + "node-forge": "1.3.2", "q": "^1.5.1", - "sha.js": "^2.4.11", "winston": "^3.8.2" }, "devDependencies": { "chai": "^4.3.6", "chai-as-promised": "^7.1.1", - "codecov": "^3.8.3", "dotenv": "^10.0.0", "eslint": "^8.33.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.27.5", - "mocha": "^9.2.2", + "mocha": "^11.3.0", "nyc": "^15.1.0", "prettier": "2.8.3", "should": "^13.2.3", @@ -50,12 +48,15 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" @@ -113,31 +114,31 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.14", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", - "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.20.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, "node_modules/@babel/helper-compilation-targets": { @@ -168,27 +169,12 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -249,19 +235,21 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -276,61 +264,28 @@ } }, "node_modules/@babel/helpers": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", - "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.13", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@babel/parser": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@babel/types": "^7.28.6" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.20.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", - "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -339,58 +294,48 @@ } }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", - "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.13", - "@babel/types": "^7.20.7", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -436,17 +381,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -474,17 +408,6 @@ "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -503,6 +426,109 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "deprecated": "Use @eslint/object-schema instead" }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -551,10 +577,11 @@ } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -652,19 +679,21 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@nodelib/fs.scandir": { @@ -699,6 +728,17 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -752,15 +792,6 @@ "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -772,12 +803,6 @@ "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==" }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, "node_modules/acorn": { "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", @@ -797,18 +822,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -837,15 +850,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -855,30 +859,38 @@ } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 8" + "node": ">=7.0.0" } }, + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, "node_modules/append-transform": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", @@ -902,16 +914,6 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "node_modules/argv": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", - "integrity": "sha512-dEamhpPEwRUBpLNHeuCm/v+g0anFByHahxodVO/BbAarHVBBg2MccCwf9K+o1Pof+2btdnkJelYVUWjW/VrATw==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "engines": { - "node": ">=0.6.10" - } - }, "node_modules/array-includes": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", @@ -988,10 +990,14 @@ "license": "MIT" }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -1000,13 +1006,13 @@ } }, "node_modules/axios": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", - "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.3.tgz", + "integrity": "sha512-ERT8kdX7DZjtUm7IitEyV7InTHAF42iJuMArIiDIV5YtPanJkgw4hw5Dyg9fh0mihdWNn1GKaeIWErfe56UQ1g==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, @@ -1015,41 +1021,21 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -1100,13 +1086,19 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1125,6 +1117,23 @@ "node": ">= 0.4" } }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1195,52 +1204,22 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/chai-as-promised-also-chain/-/chai-as-promised-also-chain-1.0.2.tgz", "integrity": "sha1-ZBaiOz9zhOYnnJEeqATWe/xi7xw=" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/chalk/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "color-name": "~1.1.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chalk/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/chalk/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1278,30 +1257,19 @@ } }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/clean-stack": { @@ -1314,56 +1282,18 @@ } }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" - } - }, - "node_modules/codecov": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.3.tgz", - "integrity": "sha512-Y8Hw+V3HgR7V71xWH2vQ9lyS358CbGCldWlJFR0JirqoGtOoas3R3/OclRTvgUYFK29mmJICDPauVKmpqbwhOA==", - "deprecated": "https://about.codecov.io/blog/codecov-uploader-deprecation-plan/", - "dev": true, - "dependencies": { - "argv": "0.0.2", - "ignore-walk": "3.0.4", - "js-yaml": "3.14.1", - "teeny-request": "7.1.1", - "urlgrey": "1.0.0" - }, - "bin": { - "codecov": "bin/codecov" }, "engines": { - "node": ">=4.0" - } - }, - "node_modules/codecov/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/codecov/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "node": ">=12" } }, "node_modules/color": { @@ -1442,9 +1372,10 @@ "dev": true }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1463,11 +1394,12 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -1528,6 +1460,24 @@ "node": ">=8" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -1554,10 +1504,11 @@ } }, "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz", + "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -1596,6 +1547,13 @@ "node": ">= 0.4" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/electron-to-chromium": { "version": "1.4.288", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.288.tgz", @@ -1939,18 +1897,6 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/eslint-scope": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", @@ -2012,17 +1958,6 @@ "node": ">=10.13.0" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/espree": { "version": "9.4.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", @@ -2105,21 +2040,6 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, - "node_modules/fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", - "dev": true, - "dependencies": { - "punycode": "^1.3.2" - } - }, - "node_modules/fast-url-parser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, "node_modules/fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", @@ -2144,18 +2064,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -2240,12 +2148,19 @@ } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/foreground-child": { @@ -2262,14 +2177,15 @@ } }, "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -2301,20 +2217,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -2370,10 +2272,11 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -2460,18 +2363,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/globals": { "version": "13.20.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", @@ -2524,15 +2415,6 @@ "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -2554,22 +2436,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2666,33 +2540,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -2701,15 +2548,6 @@ "node": ">= 4" } }, - "node_modules/ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.4" - } - }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2802,18 +2640,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -2914,15 +2740,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", @@ -3025,16 +2842,13 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -3217,6 +3031,22 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/joi": { "version": "17.8.3", "resolved": "https://registry.npmjs.org/joi/-/joi-17.8.3.tgz", @@ -3242,12 +3072,14 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -3256,15 +3088,16 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-schema-traverse": { @@ -3467,86 +3300,114 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.3.0.tgz", + "integrity": "sha512-J0RLIM89xi8y6l77bgbX+03PeBRDQCOVQpnwOcCN7b8hCmbh6JvGI2ZDJ5WMoHz+IaPU+S4lvTd0j51GmBAdgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-stdout": "^1.3.1", + "chokidar": "^4.0.1", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "picocolors": "^1.1.1", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", "dependencies": { - "ms": "2.1.2" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=6.0" + "node": ">=14" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/mocha/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/mocha/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mocha/node_modules/has-flag": { @@ -3559,22 +3420,30 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "node_modules/mocha/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", @@ -3592,30 +3461,20 @@ } }, "node_modules/mocha/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -3635,30 +3494,10 @@ "path-to-regexp": "^1.7.0" } }, - "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/node-forge": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", - "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.2.tgz", + "integrity": "sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==", "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" @@ -3682,15 +3521,6 @@ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/nyc": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", @@ -3732,21 +3562,6 @@ "node": ">=8.9" } }, - "node_modules/nyc/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/nyc/node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -3758,24 +3573,6 @@ "wrap-ansi": "^6.2.0" } }, - "node_modules/nyc/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/nyc/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/nyc/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -4042,6 +3839,13 @@ "node": ">=8" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4083,11 +3887,36 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, + "license": "MIT", "dependencies": { "isarray": "0.0.1" } @@ -4102,22 +3931,11 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } + "license": "ISC" }, "node_modules/pkg-dir": { "version": "4.2.0", @@ -4183,6 +4001,16 @@ "node": ">=8" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -4266,6 +4094,7 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -4284,15 +4113,17 @@ } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, + "license": "MIT", "engines": { - "node": ">=8.10.0" + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/regexp.prototype.flags": { @@ -4463,19 +4294,21 @@ } }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -4486,16 +4319,22 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" }, - "bin": { - "sha.js": "bin.js" + "engines": { + "node": ">= 0.4" } }, "node_modules/shebang-command": { @@ -4689,15 +4528,6 @@ "node": "*" } }, - "node_modules/stream-events": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", - "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", - "dev": true, - "dependencies": { - "stubs": "^3.0.0" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -4720,6 +4550,22 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.trimend": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", @@ -4759,6 +4605,20 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -4779,24 +4639,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stubs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", - "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", - "dev": true - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -4809,31 +4651,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/teeny-request": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.1.tgz", - "integrity": "sha512-iwY6rkW5DDGq8hE2YgNQlKbptYpY5Nn2xecjQiNjOXWbKzPGUfmeUBCSQbbr306d7Z7U2N0TPl+/SwYRfua1Dg==", - "dev": true, - "dependencies": { - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", - "stream-events": "^1.0.5", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/teeny-request/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -4858,33 +4675,6 @@ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, "node_modules/triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", @@ -5005,36 +4795,11 @@ "punycode": "^2.1.0" } }, - "node_modules/urlgrey": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz", - "integrity": "sha512-hJfIzMPJmI9IlLkby8QrsCykQ+SXDeO2W5Q9QTW3QpqZVTx4a/K7p8/5q+/isD8vsbVaFgql/gvAoQCRQ2Cb5w==", - "dev": true, - "dependencies": { - "fast-url-parser": "^1.1.3" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5072,17 +4837,19 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "dev": true, + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5126,24 +4893,27 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "dev": true + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -5156,39 +4926,25 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -5211,6 +4967,7 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -5222,21 +4979,22 @@ "dev": true }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { @@ -5289,12 +5047,13 @@ } }, "node_modules/yargs/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yocto-queue": { diff --git a/package.json b/package.json index 23f0ee6..b53fa79 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "test": "mocha **/*.test.js", "test-watch": "nodemon --exec \"npm test\"", "coverage": "nyc npm run test", - "report-coverage": "nyc report --reporter=text-lcov > coverage.lcov && codecov" + "report-coverage": "nyc report --reporter=lcov --reporter=text" }, "nyc": { "coverage": "test", @@ -23,26 +23,24 @@ "author": "Flutterwave Developers", "license": "MIT", "dependencies": { - "axios": "^1.8.4", + "axios": "1.13.3", "bluebird": "^3.7.2", "chai-as-promised-also-chain": "^1.0.2", "eslint-config-prettier": "^8.6.0", - "joi": "^17.8.3", + "joi": "17.8.3", "md5": "^2.3.0", - "node-forge": "^1.3.2", + "node-forge": "1.3.2", "q": "^1.5.1", - "sha.js": "^2.4.11", "winston": "^3.8.2" }, "devDependencies": { "chai": "^4.3.6", "chai-as-promised": "^7.1.1", - "codecov": "^3.8.3", "dotenv": "^10.0.0", "eslint": "^8.33.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.27.5", - "mocha": "^9.2.2", + "mocha": "^11.3.0", "nyc": "^15.1.0", "prettier": "2.8.3", "should": "^13.2.3", diff --git a/services/schema/create.js b/services/schema/create.js index fbf9dc7..4b84db6 100644 --- a/services/schema/create.js +++ b/services/schema/create.js @@ -125,81 +125,81 @@ const bulkTokenSchema = joi.object({ bulk_data: joi.array().items(bulkTokenDataSchema).required(), }); -// create bulk transfers -const bulkTransferSchema = joi.object({ - title: joi.string(), - bulk_data: joi - .array() - .items( - joi.object({ - bank_code: joi.string().length(3).required(), - account_number: joi.string().trim().max(20).required(), - amount: joi.number().positive().required(), - currency: joi.string().uppercase().length(3).default('NGN').required(), - narration: joi.string(), - reference: joi.string(), - meta: joi.when('currency', { - is: 'ZAR', - then: joi - .array() - .items( - joi.object({ - first_name: joi.string(), - last_name: joi.string(), - email: joi.string().email().required(), - mobile_number: joi - .string() - .max(50) - .custom((value) => { - if (value && !/^\+?\d+$/.test(value)) - throw new Error('phone number should be digits'); - return value; - }) - .required(), - recipient_address: joi.string().required(), - sender: joi.string().required(), - sender_country: joi - .string() - .uppercase() - .length(2) - .default('NG') - .required(), - }), - ) - .required(), - }), - }), - ) - .required(), -}); +// SCHEMA IS UNUSED, createBulkTransferSchema IS USED INSTEAD +// const bulkTransferSchema = joi.object({ +// title: joi.string(), +// bulk_data: joi +// .array() +// .items( +// joi.object({ +// account_bank: joi.string().length(3).required(), +// account_number: joi.string().trim().max(20).required(), +// amount: joi.number().positive().required(), +// currency: joi.string().uppercase().length(3).default('NGN').required(), +// narration: joi.string(), +// reference: joi.string(), +// meta: joi.when('currency', { +// is: 'ZAR', +// then: joi +// .array() +// .items( +// joi.object({ +// first_name: joi.string(), +// last_name: joi.string(), +// email: joi.string().email().required(), +// mobile_number: joi +// .string() +// .max(50) +// .custom((value) => { +// if (value && !/^\+?\d+$/.test(value)) +// throw new Error('phone number should be digits'); +// return value; +// }) +// .required(), +// recipient_address: joi.string().required(), +// sender: joi.string().required(), +// sender_country: joi +// .string() +// .uppercase() +// .length(2) +// .default('NG') +// .required(), +// }), +// ) +// .required(), +// }), +// }), +// ) +// .required(), +// }); -// create virtual card -const cardSchema = joi.object({ - currency: joi.string().uppercase().length(3).valid('USD').required(), - amount: joi.number().required(), - debit_currency: joi.string().uppercase().length(3).default('NGN'), - billing_name: joi.string(), - billing_address: joi.string(), - billing_city: joi.string().trim(), - billing_state: joi.string().trim().length(2), - billing_postal_code: joi.string().trim(), - billing_country: joi.string().trim().length(2), - first_name: joi.string().trim().required(), - last_name: joi.string().trim().required(), - date_of_birth: joi.string().trim().length(10).required(), - email: joi.string().email().required(), - phone: joi - .string() - .max(50) - .custom((value) => { - if (value && !/^\+?\d+$/.test(value)) - throw new Error('phone number should be digits'); - return value; - }), - title: joi.string().uppercase().valid('MR', 'MRS', 'MISS').required(), - gender: joi.string().length(1).valid('M', 'F').required(), - callback_url: joi.string().uri(), -}); +// THE VIRTUAL CARD SERVICE IS CURRENTLY UNAVAILABLE +// const cardSchema = joi.object({ +// currency: joi.string().uppercase().length(3).valid('USD').required(), +// amount: joi.number().required(), +// debit_currency: joi.string().uppercase().length(3).default('NGN'), +// billing_name: joi.string(), +// billing_address: joi.string(), +// billing_city: joi.string().trim(), +// billing_state: joi.string().trim().length(2), +// billing_postal_code: joi.string().trim(), +// billing_country: joi.string().trim().length(2), +// first_name: joi.string().trim().required(), +// last_name: joi.string().trim().required(), +// date_of_birth: joi.string().trim().length(10).required(), +// email: joi.string().email().required(), +// phone: joi +// .string() +// .max(50) +// .custom((value) => { +// if (value && !/^\+?\d+$/.test(value)) +// throw new Error('phone number should be digits'); +// return value; +// }), +// title: joi.string().uppercase().valid('MR', 'MRS', 'MISS').required(), +// gender: joi.string().length(1).valid('M', 'F').required(), +// callback_url: joi.string().uri(), +// }); // collect card payments const cardChargeSchema = joi.object({ @@ -807,8 +807,8 @@ module.exports = { beneficiarySchema, bulkAccountSchema, bulkTokenSchema, - bulkTransferSchema, - cardSchema, + // bulkTransferSchema, + // cardSchema, cardChargeSchema, chargeSchema, createBulkTransferSchema, diff --git a/test/rave.bank.test.js b/test/rave.bank.test.js index 395fa0d..b4808a0 100644 --- a/test/rave.bank.test.js +++ b/test/rave.bank.test.js @@ -1,14 +1,10 @@ var banks = require('../lib/rave.banks'); var base = require('../lib/rave.base'); - -var Promise = require('bluebird'); var mocha = require('mocha'); var chai = require('chai'); var expect = chai.expect; var chaiAsPromised = require('chai-as-promised'); - var dotenv = require('dotenv').config(); - const sinon = require('sinon'); const sinonChai = require('sinon-chai'); @@ -21,9 +17,9 @@ describe('#Rave Bank', function () { const ravebase = new base(public_key, secret_key); let banksInstance; - let bankStub; beforeEach(() => { + // Initializing the Bank wrapper from lib/rave.banks banksInstance = new banks(ravebase); }); @@ -34,121 +30,57 @@ describe('#Rave Bank', function () { it('should return list of banks in NG ', async function () { this.timeout(10000); - const bankStub = sinon.stub(banksInstance, 'country').resolves({ + // The service destructures { body: response }, so defined stub must match + const BanksrequestStub = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success', message: 'Banks fetched successfully', data: [ - { - id: 1, - code: '044', - name: 'Access Bank', - }, - { - id: 2, - code: '023', - name: 'Citi Bank', - }, - { - id: 4, - code: '050', - name: 'EcoBank PLC', - }, - { - id: 5, - code: '011', - name: 'First Bank PLC', - }, - { - id: 6, - code: '214', - name: 'First City Monument Bank', - }, + { id: 1, code: '044', name: 'Access Bank' }, + { id: 2, code: '023', name: 'Citi Bank' } ], }, }); - var payload = { - country: 'NG', - }; + const payload = { country: 'NG' }; - var resp = await banksInstance.country(payload); - // console.log(resp); + // This executes the real logic in lib/rave.banks and services/banks/rave.banks-country + const resp = await banksInstance.country(payload); - expect(bankStub).to.have.been.calledOnce; - expect(bankStub).to.have.been.calledOnceWith(payload); - - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); - - expect(resp.body.data[0]).to.have.property('id'); - expect(resp.body.data[0]).to.have.property('code'); - expect(resp.body.data[0]).to.have.property('name'); + expect(BanksrequestStub).to.have.been.calledOnce; + expect(resp, "Service returned undefined - check destructuring").to.not.be.undefined; + expect(resp).to.have.property('status', 'success'); + expect(resp.data[0]).to.have.property('name', 'Access Bank'); }); it('should return list of bank branches ', async function () { this.timeout(10000); - const bankBranchStub = sinon.stub(banksInstance, 'branches').resolves({ + const BankbranchesrequestStub = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success', - message: 'Banks fetched successfully', + message: 'Branches fetched successfully', data: [ { id: 1804, branch_code: 'UG240647', branch_name: 'BWAISE BRANCH', - swift_code: 'GLTBUGKA', - bic: '', - bank_id: 280, - }, - { - id: 1805, - branch_code: 'UG240547', - branch_name: 'MUKONO BRANCH', - swift_code: 'GLTBUGKA', - bic: '', - bank_id: 280, - }, - { - id: 1806, - branch_code: 'UG240447', - branch_name: 'NATETE BRANCH', - swift_code: 'GLTBUGKA', - bic: '', - bank_id: 280, - }, - { - id: 1807, - branch_code: 'UG240347', - branch_name: 'PARLIAMENT BRANCH', - swift_code: 'GLTBUGKA', - bic: '', - bank_id: 280, - }, + swift_code: "SBICGHAC", + bic: "SBICGHACXXX", + bank_id: 280 + } ], }, }); - var payload = { - id: '280', - }; - - var resp = await banksInstance.branches(payload); - // console.log(resp); - - expect(bankBranchStub).to.have.been.calledOnce; - expect(bankBranchStub).to.have.been.calledOnceWith(payload); + const payload = { id: 280 }; - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + const resp = await banksInstance.branches(payload); - expect(resp.body.data[0]).to.have.property('id'); - expect(resp.body.data[0]).to.have.property('branch_code'); - expect(resp.body.data[0]).to.have.property('branch_name'); - expect(resp.body.data[0]).to.have.property('swift_code'); - expect(resp.body.data[0]).to.have.property('bank_id'); + expect(BankbranchesrequestStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + expect(resp.data[0]).to.have.property('branch_name', 'BWAISE BRANCH'); }); -}); +}); \ No newline at end of file diff --git a/test/rave.base.test.js b/test/rave.base.test.js new file mode 100644 index 0000000..ba36233 --- /dev/null +++ b/test/rave.base.test.js @@ -0,0 +1,138 @@ +const RaveBase = require('../lib/rave.base'); +const expect = require('chai').expect; +const sinon = require('sinon'); + +describe('RaveBase Deep Coverage', function () { + const pub_key = process.env.PUBLIC_KEY; + const sec_key = process.env.SECRET_KEY; + + afterEach(() => { + sinon.restore(); + }); + + it('should update the base URL via setBaseUrl', function () { + const base = new RaveBase(pub_key, sec_key); + base.setBaseUrl('https://new-api.com/'); + expect(base.getBaseUrl()).to.equal('https://new-api.com/'); + }); + + it('should trigger the internal encrypt and integrity hash methods', function () { + const base = new RaveBase(pub_key, sec_key); + const data = { amount: 100 }; + + const enc = base.encrypt(data); // Turns the encrypt block GREEN + const hash = base.getIntegrityHash(data); // Turns the integrity block GREEN + + expect(enc).to.be.a('string'); + expect(hash).to.be.a('string'); + }); + + it('should handle non-JSON responses in callback mode', function (done) { + const base = new RaveBase(pub_key, sec_key); + // Simulate a response that fails .json() but has .text() + sinon.stub(global, 'fetch').resolves({ + status: 500, + headers: new Map(), + json: () => Promise.reject(new Error('Not JSON')), + text: () => Promise.resolve('Error Page') + }); + + base.request('v3/path', {}, function (err, res, body) { + // This turns the (err) => response.text() block GREEN + expect(body).to.equal('Error Page'); + done(); + }); + }); + + it('should handle non-JSON responses in promise mode', async function () { + const base = new RaveBase(pub_key, sec_key); + sinon.stub(global, 'fetch').resolves({ + status: 404, + headers: new Map(), + json: () => Promise.reject(new Error('Not JSON')), + text: () => Promise.resolve('Not Found') + }); + + const result = await base.request('v3/path', {}); + expect(result.body).to.equal('Not Found'); // Turns the Promise Catch GREEN + }); + + it('should handle total network failure in callback mode', function (done) { + const base = new RaveBase(pub_key, sec_key); + // Simulate the fetch itself failing (e.g. no internet) + sinon.stub(global, 'fetch').rejects(new Error('Network Down')); + + base.request('v3/path', {}, function (err, res, body) { + // This turns the final .catch((err) => callback(err...)) GREEN + expect(err.message).to.equal('Network Down'); + done(); + }); + }); + + it('should override base_url if provided (Constructor Branch)', function () { + const customUrl = 'https://custom.api.com/'; + const base = new RaveBase(pub_key, sec_key, customUrl); + expect(base.getBaseUrl()).to.equal(customUrl); + }); + + it('should build query strings for GET requests (GET Branch)', async function () { + const base = new RaveBase(pub_key, sec_key); + // Stub global fetch to prevent actual network calls + const fetchStub = sinon.stub(global, 'fetch').resolves({ + status: 200, + headers: new Map(), + json: () => Promise.resolve({ status: 'success' }) + }); + + await base.request('v3/banks', { method: 'GET', country: 'NG' }); + + // Proves the query string logic ran (?country=NG) + expect(fetchStub.firstCall.args[0]).to.contain('?country=NG'); + }); + + it('should support legacy callbacks (Callback Branch)', function (done) { + const base = new RaveBase(pub_key, sec_key); + sinon.stub(global, 'fetch').resolves({ + status: 200, + headers: new Map(), + json: () => Promise.resolve({ data: 'ok' }) + }); + + // Passing a function as the 3rd argument triggers the 'if (callback)' branch + base.request('v3/test', { method: 'POST' }, function (err, res, body) { + expect(body.data).to.equal('ok'); + done(); // Tells Mocha the callback test is finished + }); + }); + + it('should handle JSON parsing errors (Catch Branch)', async function () { + const base = new RaveBase(pub_key, sec_key); + sinon.stub(global, 'fetch').resolves({ + status: 500, + headers: new Map(), + json: () => Promise.reject(new Error('Invalid JSON')), + text: () => Promise.resolve('Internal Server Error') + }); + + const result = await base.request('v3/error', { method: 'POST' }); + // Turns the .catch((err) => ... text()) logic GREEN + expect(result.body).to.equal('Internal Server Error'); + }); + + it('should trigger the promise reject block on network failure', async function () { + const base = new RaveBase(pub_key, sec_key); + + // Force fetch to REJECT instead of RESOLVE + // This mimics a total network failure (no internet/server down) + const networkError = new Error('Network Connection Failed'); + sinon.stub(global, 'fetch').rejects(networkError); + + // We expect the promise to reject, so we catch it in the test + try { + await base.request('v3/test', { method: 'POST' }); + } catch (err) { + // This is where the code enters the .catch((err) => reject(err)) + expect(err.message).to.equal('Network Connection Failed'); + } + }); +}); \ No newline at end of file diff --git a/test/rave.beneficiaries.test.js b/test/rave.beneficiaries.test.js index 026b327..87c1e01 100644 --- a/test/rave.beneficiaries.test.js +++ b/test/rave.beneficiaries.test.js @@ -1,14 +1,10 @@ var beneficiaries = require('../lib/rave.beneficiaries'); var base = require('../lib/rave.base'); - -var Promise = require('bluebird'); var mocha = require('mocha'); var chai = require('chai'); var expect = chai.expect; var chaiAsPromised = require('chai-as-promised'); - var dotenv = require('dotenv').config(); - const sinon = require('sinon'); const sinonChai = require('sinon-chai'); @@ -21,7 +17,6 @@ describe('#Rave Beneficiaries', function () { const ravebase = new base(public_key, secret_key); let beneficiariesInstance; - let beneficiariesStub; beforeEach(() => { beneficiariesInstance = new beneficiaries(ravebase); @@ -34,22 +29,19 @@ describe('#Rave Beneficiaries', function () { it('should create a Beneficiary', async function () { this.timeout(10000); - const createBeneficiariesSuccessStub = sinon - .stub(beneficiariesInstance, 'create') - .resolves({ - body: { - status: 'success', - message: 'Banks fetched successfully', - data: { - id: 3644, - account_number: '0690000034', - bank_code: '044', - full_name: 'Ade Bond', - created_at: '2020-01-16T18:01:28.000Z', - bank_name: 'ACCESS BANK NIGERIA', - }, + const CreatebeneficiaryrequestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Beneficiary created successfully', + data: { + id: 3644, + account_number: '0690000034', + bank_code: '044', + full_name: 'Ade Bond', + bank_name: 'ACCESS BANK NIGERIA', }, - }); + }, + }); var payload = { account_number: '0690000034', @@ -58,116 +50,87 @@ describe('#Rave Beneficiaries', function () { }; var resp = await beneficiariesInstance.create(payload); - // console.log(resp); - // success case - expect(createBeneficiariesSuccessStub).to.have.been.calledOnce; - expect(createBeneficiariesSuccessStub).to.have.been.calledOnceWith(payload); - - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); - - expect(resp.body.data).to.have.property('id'); - expect(resp.body.data).to.have.property('account_number'); - expect(resp.body.data).to.have.property('bank_code'); - expect(resp.body.data).to.have.property('full_name'); - expect(resp.body.data).to.have.property('bank_name'); + expect(CreatebeneficiaryrequestStub).to.have.been.calledOnce; + expect(resp, "Service returned undefined").to.not.be.undefined; + expect(resp).to.have.property('status', 'success'); + expect(resp.data).to.have.property('id', 3644); }); - it('should return Account resolve error', async function () { + it('should return a single beneficiary ', async function () { this.timeout(10000); - const createBeneficiariesFailedStub = sinon - .stub(beneficiariesInstance, 'create') - .resolves({ - body: { - status: 'error', - message: 'Account resolve failed', - data: null, - }, - }); - - var payload = { - account_number: '0690000034', - account_bank: '044', - }; - - var resp = await beneficiariesInstance.create(payload); + const SinglebeneficiaryrequestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Payout beneficiary fetched', + data: { id: 2923, full_name: 'Pastor Bright' }, + }, + }); - // failed case - expect(createBeneficiariesFailedStub).to.have.been.calledOnce; - expect(createBeneficiariesFailedStub).to.have.been.calledOnceWith(payload); + var payload = { id: '2923' }; + var resp = await beneficiariesInstance.fetch(payload); - expect(resp.body).to.have.property('status', 'error'); - expect(resp.body.message).to.eq('Account resolve failed'); + expect(SinglebeneficiaryrequestStub).to.have.been.calledOnce; + expect(resp.data.id).to.eq(2923); }); - it('should return a single beneficiary ', async function () { + it('should successfully fetch all transfer beneficiaries (Covers rave.retrieve-all.js)', async function () { this.timeout(10000); - const fetchBeneficiariesStub = sinon - .stub(beneficiariesInstance, 'fetch') - .resolves({ - body: { - status: 'success', - message: 'Payout beneficiary fetched', - data: { - id: 2923, - account_number: '0690000032', + const ListbeneficiaryrequestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Beneficiaries fetched', + data: [ + { + id: 12345, + account_number: '0690000040', bank_code: '044', - full_name: 'Pastor Bright', - meta: null, - created_at: '2019-11-28T08:15:29.000Z', - bank_name: 'ACCESS BANK NIGERIA', - }, - }, - }); - - var payload = { - id: '2923', + full_name: 'Alexis Sanchez', + bank_name: 'ACCESS BANK NIGERIA' + } + ], + meta: { + page_info: { + total: 1, + current_page: 1, + total_pages: 1 + } + } + } + }); + + // Use a string for the page parameter to satisfy strict validation + const payload = { + page: "1" }; - var resp = await beneficiariesInstance.fetch(payload); - - // success case - expect(fetchBeneficiariesStub).to.have.been.calledOnce; - expect(fetchBeneficiariesStub).to.have.been.calledOnceWith(payload); - - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + const resp = await beneficiariesInstance.fetch_all(payload); - expect(resp.body.data).to.have.property('id'); - expect(resp.body.data).to.have.property('account_number'); - expect(resp.body.data).to.have.property('bank_code'); - expect(resp.body.data).to.have.property('full_name'); - expect(resp.body.data).to.have.property('bank_name'); + expect(ListbeneficiaryrequestStub).to.have.been.calledOnce; - expect(resp.body.data.id).to.eq(2923); + // Assert against the response directly + expect(resp).to.have.property('status', 'success'); + expect(resp.data).to.be.an('array'); + expect(resp.data[0]).to.have.property('full_name', 'Alexis Sanchez'); }); it('should successfully delete beneficiary ', async function () { this.timeout(10000); - const deleteBeneficiariesStub = sinon - .stub(beneficiariesInstance, 'delete') - .resolves({ - body: { - status: 'success', - message: 'Beneficiary deleted', - data: 'Deleted', - }, - }); - - var payload = { - id: '3644', - }; + const DeletebeneficiaryrequestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Beneficiary deleted', + data: 'Deleted', + }, + }); + var payload = { id: '3644' }; var resp = await beneficiariesInstance.delete(payload); - expect(deleteBeneficiariesStub).to.have.been.calledOnce; - expect(deleteBeneficiariesStub).to.have.been.calledOnceWith(payload); - - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body.message).to.eq('Beneficiary deleted'); + expect(DeletebeneficiaryrequestStub).to.have.been.calledOnce; + expect(resp.message).to.eq('Beneficiary deleted'); }); -}); +}); \ No newline at end of file diff --git a/test/rave.bills.test.js b/test/rave.bills.test.js index f4c47d8..e2219ec 100644 --- a/test/rave.bills.test.js +++ b/test/rave.bills.test.js @@ -18,13 +18,14 @@ chai.use(sinonChai); describe('#Rave Bills', function () { const public_key = process.env.PUBLIC_KEY; const secret_key = process.env.SECRET_KEY; - const ravebase = new base(public_key, secret_key); let billsInstance; - let billStub; + let ravebase beforeEach(() => { + ravebase = new base(public_key, secret_key); billsInstance = new bills(ravebase); + }); afterEach(() => { @@ -35,7 +36,7 @@ describe('#Rave Bills', function () { this.timeout(10000); const createSingleBillSuccessStub = sinon - .stub(billsInstance, 'create_bill') + .stub(ravebase, 'request') .resolves({ body: { status: 'success', @@ -57,27 +58,26 @@ describe('#Rave Bills', function () { amount: 500, recurrence: 'ONCE', type: 'AIRTIME', - reference: '9300ko984', + reference: '9300ko984' }; var resp = await billsInstance.create_bill(payload); expect(createSingleBillSuccessStub).to.have.been.calledOnce; - expect(createSingleBillSuccessStub).to.have.been.calledOnceWith(payload); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); - expect(resp.body.data).to.have.property('flw_ref'); - expect(resp.body.data).to.have.property('amount'); - expect(resp.body.data).to.have.property('tx_ref'); + expect(resp.data).to.have.property('flw_ref'); + expect(resp.data).to.have.property('amount'); + expect(resp.data).to.have.property('tx_ref'); }); it('should create bulk bills payment ', async function () { this.timeout(10000); const createBulkBillSuccessStub = sinon - .stub(billsInstance, 'create_bulk') + .stub(ravebase, 'request') .resolves({ body: { status: 'success', @@ -113,22 +113,21 @@ describe('#Rave Bills', function () { var resp = await billsInstance.create_bulk(payload); expect(createBulkBillSuccessStub).to.have.been.calledOnce; - expect(createBulkBillSuccessStub).to.have.been.calledOnceWith(payload); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); - expect(resp.body.message).to.eq( + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); + expect(resp.message).to.eq( 'Bulk bill Payment was queued for processing', ); - expect(resp.body.data).to.have.property('batch_reference'); + expect(resp.data).to.have.property('batch_reference'); }); it('should return status of a bill purchase', async function () { this.timeout(10000); const fetchBillsStatusStub = sinon - .stub(billsInstance, 'fetch_status') + .stub(ravebase, 'request') .resolves({ body: { status: 'success', @@ -156,21 +155,64 @@ describe('#Rave Bills', function () { var resp = await billsInstance.fetch_status(payload); expect(fetchBillsStatusStub).to.have.been.calledOnce; - expect(fetchBillsStatusStub).to.have.been.calledOnceWith(payload); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); - expect(resp.body.data).to.have.property('product'); - expect(resp.body.data).to.have.property('amount'); - expect(resp.body.data).to.have.property('product_name'); - expect(resp.body.data).to.have.property('extra'); + expect(resp.data).to.have.property('product'); + expect(resp.data).to.have.property('amount'); + expect(resp.data).to.have.property('product_name'); + expect(resp.data).to.have.property('extra'); + }); + + it('should return supported bill categories', async function () { + this.timeout(10000); + + const fetchBillCategoriesStub = sinon + .stub(ravebase, 'request') + .resolves({ + body: { + status: 'success', + message: 'Bill status fetch successful', + data: + [ + { + id: 1, + name: "Airtime", + code: "AIRTIME", + description: "Airtime", + country_code: "NG" + }, + { + id: 2, + name: "Mobile Data Service", + code: "MOBILEDATA", + description: "Mobile Data Service", + country_code: "NG" + } + ] + }, + }); + + var payload = { + country: 'NG', + }; + var resp = await billsInstance.fetch_bills_Cat(payload); + + expect(fetchBillCategoriesStub).to.have.been.calledOnce; + + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); + + expect(resp.data[0]).to.have.property('name', 'Airtime'); + expect(resp.data[0]).to.have.property('code', 'AIRTIME'); + expect(resp.data[0]).to.have.property('id', 1); }); it('should update bills order', async function () { this.timeout(10000); - const updateBillsStub = sinon.stub(billsInstance, 'update_bills').resolves({ + const updateBillsStub = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success', message: 'bills order updated successfully', @@ -197,20 +239,19 @@ describe('#Rave Bills', function () { var resp = await billsInstance.update_bills(payload); expect(updateBillsStub).to.have.been.calledOnce; - expect(updateBillsStub).to.have.been.calledOnceWith(payload); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); - expect(resp.body.data).to.have.property('order_reference'); - expect(resp.body.data).to.have.property('flw_ref'); - expect(resp.body.data).to.have.property('tx_ref'); + expect(resp.data).to.have.property('order_reference'); + expect(resp.data).to.have.property('flw_ref'); + expect(resp.data).to.have.property('tx_ref'); }); it('should validate bills services', async function () { this.timeout(10000); - const validateBillsStub = sinon.stub(billsInstance, 'validate').resolves({ + const validateBillsStub = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success', message: 'Item validated successfully', @@ -239,21 +280,20 @@ describe('#Rave Bills', function () { var resp = await billsInstance.validate(payload); expect(validateBillsStub).to.have.been.calledOnce; - expect(validateBillsStub).to.have.been.calledOnceWith(payload); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); - expect(resp.body.data).to.have.property('response_message'); - expect(resp.body.data).to.have.property('name'); - expect(resp.body.data).to.have.property('customer'); + expect(resp.data).to.have.property('response_message'); + expect(resp.data).to.have.property('name'); + expect(resp.data).to.have.property('customer'); }); it('should return amount to be paid', async function () { this.timeout(10000); const verifyBillAmountStub = sinon - .stub(billsInstance, 'amt_to_be_paid') + .stub(ravebase, 'request') .resolves({ body: { status: 'success', @@ -296,22 +336,21 @@ describe('#Rave Bills', function () { var resp = await billsInstance.amt_to_be_paid(payload); expect(verifyBillAmountStub).to.have.been.calledOnce; - expect(verifyBillAmountStub).to.have.been.calledOnceWith(payload); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); - expect(resp.body.data).to.have.property('items'); - expect(resp.body.data).to.have.property('product_name'); - expect(resp.body.data).to.have.property('product_code'); - expect(resp.body.data).to.have.property('amount'); + expect(resp.data).to.have.property('items'); + expect(resp.data).to.have.property('product_name'); + expect(resp.data).to.have.property('product_code'); + expect(resp.data).to.have.property('amount'); }); it('should return history of all purchased bill services', async function () { this.timeout(10000); const fetchBillHistoryStub = sinon - .stub(billsInstance, 'fetch_bills') + .stub(ravebase, 'request') .resolves({ body: { status: 'success', @@ -340,17 +379,6 @@ describe('#Rave Bills', function () { created_at: '2018-08-24T05:35:07.213Z', tx_id: 7895, }, - { - currency: 'NGN', - customer_id: '+2349082930030', - frequency: 'One Time', - amount: '500.0000', - product: 'AIRTIME', - product_name: '9MOBILE', - commission: 10, - created_at: '2018-08-24T01:06:31.55Z', - tx_id: 7891, - }, { currency: 'NGN', customer_id: '2349082930030', @@ -378,24 +406,23 @@ describe('#Rave Bills', function () { var resp = await billsInstance.fetch_bills(payload); expect(fetchBillHistoryStub).to.have.been.calledOnce; - expect(fetchBillHistoryStub).to.have.been.calledOnceWith(payload); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); - expect(resp.body.data).to.have.property('summary'); - expect(resp.body.data).to.have.property('transactions'); + expect(resp.data).to.have.property('summary'); + expect(resp.data).to.have.property('transactions'); - expect(resp.body.data.transactions[0]).to.have.property('customer_id'); - expect(resp.body.data.transactions[0]).to.have.property('product'); - expect(resp.body.data.transactions[0]).to.have.property('tx_id'); + expect(resp.data.transactions[0]).to.have.property('customer_id'); + expect(resp.data.transactions[0]).to.have.property('product'); + expect(resp.data.transactions[0]).to.have.property('tx_id'); }); it('should return all products under a government agency.', async function () { this.timeout(10000); const fetchProductsByAgencyStub = sinon - .stub(billsInstance, 'products_under_agency') + .stub(ravebase, 'request') .resolves({ body: { status: 'success', @@ -424,27 +451,62 @@ describe('#Rave Bills', function () { }); var payload = { - id: 'BIL136', + id: 136 }; - var resp = await billsInstance.products_under_agency(payload); + var resp = await billsInstance.fetch_products_under_agency(payload); // console.log(resp); expect(fetchProductsByAgencyStub).to.have.been.calledOnce; - expect(fetchProductsByAgencyStub).to.have.been.calledOnceWith(payload); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); + + expect(resp.data).to.have.property('biller_code'); + expect(resp.data).to.have.property('products'); + }); + + + it('should return all bill payment government agency.', async function () { + this.timeout(10000); + + const fetchBillPaymentAgencies = sinon + .stub(ravebase, 'request') + .resolves({ + body: { + status: 'success', + message: 'billers retrieval successful', + data: [ + { + code: 'OT150', + name: 'GENESIS GROUP ACCOMODATION', + }, + { + code: 'OT151', + name: 'GENESIS GROUP COLLEGE GRADUATION FEES', + }, + ], + }, + }); + + + var resp = await billsInstance.fetch_bills_agencies(); + // console.log(resp); + + expect(fetchBillPaymentAgencies).to.have.been.calledOnce; + + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); + expect(resp.data[0]).to.have.property('name', 'GENESIS GROUP ACCOMODATION'); + - expect(resp.body.data).to.have.property('biller_code'); - expect(resp.body.data).to.have.property('products'); }); it('should Create order using billing code and product id', async function () { this.timeout(10000); const createOrderWithBillingCodeStub = sinon - .stub(billsInstance, 'create_ord_billing') + .stub(ravebase, 'request') .resolves({ body: { status: 'success', @@ -462,6 +524,7 @@ describe('#Rave Bills', function () { var payload = { id: '3644', + country: 'NG', product_id: 'OT151', amount: '3500.00', reference: 'FLWTTOT1000000029', @@ -487,12 +550,48 @@ describe('#Rave Bills', function () { var resp = await billsInstance.create_ord_billing(payload); expect(createOrderWithBillingCodeStub).to.have.been.calledOnce; - expect(createOrderWithBillingCodeStub).to.have.been.calledOnceWith(payload); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); + + expect(resp.data).to.have.property('tx_ref'); + expect(resp.data).to.have.property('order_reference'); + }); + + it('should trigger the Joi custom phone number validation for Creating Orders', async function () { + this.timeout(10000); + + + const requestStub = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success' } }); + + var payload = { + id: '3644', + country: 'NG', + product_id: 'OT151', + amount: '3500.00', + reference: 'FLWTTOT1000000029', + customer: { + name: 'emmanuel', + email: 'emmanuel@x.com', + phone_number: 'weewewewwewe', + }, + fields: [ + { + id: '42107711:42107712', + quantity: '1', + value: '3500', + }, + { + id: '42107710', + quantity: '1', + value: 't@x.com', + }, + ], + }; + + await expect(billsInstance.create_ord_billing(payload)) + .to.be.rejectedWith('phone number should be digits'); - expect(resp.body.data).to.have.property('tx_ref'); - expect(resp.body.data).to.have.property('order_reference'); + expect(requestStub).to.not.have.been.called; }); }); diff --git a/test/rave.card.charge.test.js b/test/rave.card.charge.test.js new file mode 100644 index 0000000..927de57 --- /dev/null +++ b/test/rave.card.charge.test.js @@ -0,0 +1,132 @@ +var charge = require('../lib/rave.charge'); +var base = require('../lib/rave.base'); + +var Promise = require('bluebird'); +var mocha = require('mocha'); +var chai = require('chai'); +var expect = chai.expect; +var chaiAsPromised = require('chai-as-promised'); + +var dotenv = require('dotenv').config(); + +const sinon = require('sinon'); +const sinonChai = require('sinon-chai'); + +chai.use(chaiAsPromised); +chai.use(sinonChai); + +describe('#Rave charge', function () { + const public_key = process.env.PUBLIC_KEY; + const secret_key = process.env.SECRET_KEY; + const encryption_key = process.env.ENCRYPTION_KEY; + + const ravebase = new base(public_key, secret_key); + + let chargeInstance; + let chargeStub; + + beforeEach(() => { + chargeInstance = new charge(ravebase); + }); + + afterEach(() => { + sinon.restore(); + }); + + it('Test To Check Expiry Monnth', async function () { + const requestStub = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success' } }); + const cardPayload = { + enckey: encryption_key, + card_number: '5531886652142950', + cvv: '564', + expiry_month: '13', + expiry_year: '32', + currency: 'NGN', + amount: '5000', + email: 'user@example.com', + tx_ref: 'MC-12345' + }; + await expect(chargeInstance.card(cardPayload)).to.be.rejectedWith("Invalid expiry month"); + expect(requestStub).to.not.have.been.called; + }); + + it('card charge should successfully reach the return statement with valid digits', async function () { + const requestStub = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success' } }); + const cardPayload = { + enckey: encryption_key, + card_number: '5531886652142950', + cvv: '564', + expiry_month: '11', + expiry_year: '32', + currency: 'NGN', + amount: '5000', + email: 'user@example.com', + tx_ref: 'MC-12345', + phone_number: "12332232322" + }; + const resp = await chargeInstance.card(cardPayload); + + expect(requestStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + }); + + it('Test To ensure phone number is a digit', async function () { + const requestStub = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success' } }); + const cardPayload = { + enckey: encryption_key, + card_number: '5531886652142950', + cvv: '564', + expiry_month: '11', + expiry_year: '32', + currency: 'NGN', + amount: '5000', + email: 'user@example.com', + tx_ref: 'MC-12345', + phone_number: "fretrttrtrtgt" + }; + await expect(chargeInstance.card(cardPayload)).to.be.rejectedWith("phone number should be digits"); + expect(requestStub).to.not.have.been.called; + }); + + it('should successfully encrypt and charge a card', async function () { + this.timeout(10000); + + // We stub the request engine + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + meta: { authorization: { mode: 'pin' } } + } + }); + + //Raw card data (not encrypted yet) + const cardPayload = { + enckey: 'FLWSECK_TEST742327c04be9', + card_number: '5531886652142950', + cvv: '564', + expiry_month: '09', + expiry_year: '32', + currency: 'NGN', + amount: '5000', + email: 'user@example.com', + tx_ref: 'MC-12345' + }; + + const resp = await chargeInstance.card(cardPayload); + + // THE SECURITY VERIFICATION: + // We check that the stub was called with an encrypted "client" string + // instead of the raw card number. + expect(requestStub).to.have.been.calledOnce; + + const callArgs = requestStub.firstCall.args[1]; + expect(callArgs).to.have.property('client'); + expect(callArgs.client).to.be.a('string'); + + // If it's encrypted, it shouldn't contain the raw card number + expect(callArgs.client).to.not.contain(cardPayload.card_number); + + expect(resp.status).to.equal('success'); + }); +}); \ No newline at end of file diff --git a/test/rave.charge.test.js b/test/rave.charge.test.js index 0551d84..f87e6f2 100644 --- a/test/rave.charge.test.js +++ b/test/rave.charge.test.js @@ -31,82 +31,51 @@ describe('#Rave charge', function () { sinon.restore(); }); - // it('should charge a card', async function () { - // this.timeout(10000); - - // var payload = { - // public_key: public_key, - // card_number: '4556052704172643', - // cvv: '899', - // expiry_month: '01', - // expiry_year: '21', - // currency: 'NGN', - // amount: '1000', - // enckey: '611d0eda25a3c931863d92c4', - // fullname: 'Ekene Eze', - // email: 'ekene@flw.com', - // phone_number: '0902620185', - // tx_ref: 'MC-3ijkguhkiyfsffsujhkj243e', - // redirect_url: 'https://webhook.site/3ed41e38-2c79-4c79-b455-97398730866c', - // type: 'card', - // authorization: { - // mode: 'avs_noauth', - // pin: '3310', - // zipcode: '07205', - // city: 'Hillside', - // address: '470 Mundet PI', - // state: 'NJ', - // country: 'US', - // }, - // }; - - // var resp = await chargeInstance.card(payload); - // return expect(resp).to.have.property('data'); - // }); - - it('should return charge Nigerian bank accounts', async function () { + it('should charge Nigerian bank accounts', async function () { this.timeout(10000); - const createNGCharge = sinon.stub(chargeInstance, 'ng').resolves({ - status: 'success', - message: 'Charge initiated', - data: { - id: 4475057, - tx_ref: 'MC-1585230ew9v5050e0', - flw_ref: '1689845911540-FLW-MOCK-REF', - device_fingerprint: 'N/A', - amount: 300, - charged_amount: 300, - app_fee: 4.2, - merchant_fee: 0, - processor_response: 'Pending validation', - auth_model: 'INTERNET_BANKING', - currency: 'NGN', - ip: '54.75.161.64', - narration: 'Flutterwave Developers', - status: 'pending', - auth_url: - 'https://ravesandboxapi.flutterwave.com/flwv3-pug/getpaid/api/short-url/aqp45TtNl', - payment_type: 'account', - fraud_status: 'ok', - created_at: '2023-07-20T09:38:31.000Z', - account_id: 20937, - customer: { - id: 2151369, - phone_number: '08074568890', - name: 'john doe', - email: 'johndoe@gmail.com', - created_at: '2023-07-20T09:37:34.000Z', - }, - meta: { - authorization: { - mode: 'redirect', - redirect: - 'https://ravesandboxapi.flutterwave.com/flwv3-pug/getpaid/api/short-url/aqp45TtNl', - validate_instructions: '', + const createNGCharge = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 4475057, + tx_ref: 'MC-1585230ew9v5050e0', + flw_ref: '1689845911540-FLW-MOCK-REF', + device_fingerprint: 'N/A', + amount: 300, + charged_amount: 300, + app_fee: 4.2, + merchant_fee: 0, + processor_response: 'Pending validation', + auth_model: 'INTERNET_BANKING', + currency: 'NGN', + ip: '54.75.161.64', + narration: 'Flutterwave Developers', + status: 'pending', + auth_url: + 'https://ravesandboxapi.flutterwave.com/flwv3-pug/getpaid/api/short-url/aqp45TtNl', + payment_type: 'account', + fraud_status: 'ok', + created_at: '2023-07-20T09:38:31.000Z', + account_id: 20937, + customer: { + id: 2151369, + phone_number: '08074568890', + name: 'john doe', + email: 'johndoe@gmail.com', + created_at: '2023-07-20T09:37:34.000Z', + }, + meta: { + authorization: { + mode: 'redirect', + redirect: + 'https://ravesandboxapi.flutterwave.com/flwv3-pug/getpaid/api/short-url/aqp45TtNl', + validate_instructions: '', + }, }, }, - }, + } }); var payload = { @@ -119,34 +88,96 @@ describe('#Rave charge', function () { }; var resp = await chargeInstance.ng(payload); expect(createNGCharge).to.have.been.calledOnce; - expect(createNGCharge).to.have.been.calledOnceWith(payload); expect(resp).to.have.property('status', 'success'); expect(resp).to.have.property('message', 'Charge initiated'); - expect(resp.data).to.have.property('currency', 'NGN'); + expect(resp.data).to.have.property('id', 4475057); expect(resp.data.meta.authorization).to.have.property('mode', 'redirect'); }); + it('testing phone number validation for bank account charge', async function () { + // This forces execution into the 'catch' logic + requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 4475057, + tx_ref: 'MC-1585230ew9v5050e0', + flw_ref: '1689845911540-FLW-MOCK-REF', + device_fingerprint: 'N/A', + amount: 300, + charged_amount: 300, + app_fee: 4.2, + merchant_fee: 0, + processor_response: 'Pending validation', + auth_model: 'INTERNET_BANKING', + currency: 'NGN', + ip: '54.75.161.64', + narration: 'Flutterwave Developers', + status: 'pending', + auth_url: + 'https://ravesandboxapi.flutterwave.com/flwv3-pug/getpaid/api/short-url/aqp45TtNl', + payment_type: 'account', + fraud_status: 'ok', + created_at: '2023-07-20T09:38:31.000Z', + account_id: 20937, + customer: { + id: 2151369, + phone_number: '08074568890', + name: 'john doe', + email: 'johndoe@gmail.com', + created_at: '2023-07-20T09:37:34.000Z', + }, + meta: { + authorization: { + mode: 'redirect', + redirect: + 'https://ravesandboxapi.flutterwave.com/flwv3-pug/getpaid/api/short-url/aqp45TtNl', + validate_instructions: '', + }, + }, + }, + } + }); + + var payload = { + tx_ref: 'MC-1585230ew9v5050e0', + amount: '300', + currency: 'NGN', + email: 'johndoe@gmail.com', + phone_number: 'assaasasasasas', + fullname: 'john doe', + }; + + await expect(chargeInstance.ng(payload)) + .to.be.rejectedWith('phone number should be digits'); + expect(requestStub).to.not.have.been.called; + + }); + it('should return charge with bank transfer', async function () { this.timeout(10000); const createPWBTCharge = sinon - .stub(chargeInstance, 'bank_transfer') + .stub(ravebase, 'request') .resolves({ - status: 'success', - message: 'Charge initiated', - meta: { - authorization: { - transfer_reference: 'MockFLWRef-1689847855598', - transfer_account: '0067100155', - transfer_bank: 'Mock Bank', - account_expiration: 1689847855598, - transfer_note: 'Mock note', - transfer_amount: '1500.00', - mode: 'banktransfer', + body: { + status: 'success', + message: 'Charge initiated', + meta: { + authorization: { + transfer_reference: 'MockFLWRef-1689847855598', + transfer_account: '0067100155', + transfer_bank: 'Mock Bank', + account_expiration: 1689847855598, + transfer_note: 'Mock note', + transfer_amount: '1500.00', + mode: 'banktransfer', + }, }, - }, + } }); var payload = { @@ -157,13 +188,10 @@ describe('#Rave charge', function () { currency: 'NGN', client_ip: '154.123.220.1', device_fingerprint: '62wd23423rq324323qew1', - narration: 'All star college salary for May', - is_permanent: false, expires: 3600, }; var resp = await chargeInstance.bank_transfer(payload); expect(createPWBTCharge).to.have.been.calledOnce; - expect(createPWBTCharge).to.have.been.calledOnceWith(payload); expect(resp).to.have.property('status', 'success'); expect(resp).to.have.property('message', 'Charge initiated'); @@ -172,48 +200,284 @@ describe('#Rave charge', function () { expect(resp.meta.authorization).to.have.property('transfer_bank'); expect(resp.meta.authorization).to.have.property('mode', 'banktransfer'); }); + + it('should validate phone number for bank transfer charge', async function () { + this.timeout(10000); + + const createPWBTCharge = sinon + .stub(ravebase, 'request') + .resolves({ + body: { + status: 'success', + message: 'Charge initiated', + meta: { + authorization: { + transfer_reference: 'MockFLWRef-1689847855598', + transfer_account: '0067100155', + transfer_bank: 'Mock Bank', + account_expiration: 1689847855598, + transfer_note: 'Mock note', + transfer_amount: '1500.00', + mode: 'banktransfer', + }, + }, + } + }); + + var payload = { + tx_ref: 'MC-1585230950508', + amount: '1500', + email: 'johnmadakin@gmail.com', + phone_number: 'fddfdfdfddfdf', + currency: 'NGN', + client_ip: '154.123.220.1', + device_fingerprint: '62wd23423rq324323qew1', + expires: 3600, + }; + await expect(chargeInstance.bank_transfer(payload)) + .to.be.rejectedWith('phone number should be digits'); + expect(createPWBTCharge).to.not.have.been.called; + }); + + it('should return USSD charge', async function () { + this.timeout(10000); + + const createUssdCharge = sinon + .stub(ravebase, 'request') + .resolves({ + body: { + "status": "success", + "message": "Charge initiated", + "data": { + "id": 9956412, + "tx_ref": "MC-15852309v5050e8", + "flw_ref": "flwm3s4m0c1769004659672", + "device_fingerprint": "62wd23423rq324323qew1", + "amount": 5000, + "charged_amount": 5000, + "app_fee": 170, + "merchant_fee": 0, + "processor_response": "Transaction in progress", + "auth_model": "USSD", + "currency": "NGN", + "ip": "you", + "narration": "Dotuns Fashion Limited", + "status": "pending", + "payment_type": "ussd", + "fraud_status": "ok", + "charge_type": "normal", + "created_at": "2026-01-21T14:10:59.000Z", + "account_id": 92319, + "customer": { + "id": 3451768, + "phone_number": "07054748747", + "name": "Dotuns Fashion Limited", + "email": "ravesb_f5196adeedf522b7d710_dcracker.dt@gmail.com", + "created_at": "2026-01-21T14:10:59.000Z" + }, + "payment_code": "9956412" + }, + "meta": { + "authorization": { + "mode": "ussd", + "note": "*566*002*9956412#" + } + } + } + }); + + var payload = { + tx_ref: "MC-15852309v5050e8", + account_bank: "044", + amount: "5000", + currency: "NGN", + email: "dcracker.dt@gmail.com", + phone_number: "07054748747", + fullname: "James Bond", + client_ip: "192.168.1.1", + device_fingerprint: "62wd23423rq324323qew1" + }; + + var resp = await chargeInstance.ussd(payload); + expect(createUssdCharge).to.have.been.calledOnce; + + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('message', 'Charge initiated'); + + expect(resp.meta.authorization).to.have.property('mode'); + expect(resp.meta.authorization).to.have.property('note'); + expect(resp.meta.authorization).to.have.property('mode', 'ussd'); + }); + + it('should validate phone number for USSD charge', async function () { + this.timeout(10000); + + const createUssdCharge = sinon + .stub(ravebase, 'request') + .resolves({ + body: { + "status": "success", + "message": "Charge initiated", + "data": { + "id": 9956412, + "tx_ref": "MC-15852309v5050e8", + "flw_ref": "flwm3s4m0c1769004659672", + "device_fingerprint": "62wd23423rq324323qew1", + "amount": 5000, + "charged_amount": 5000, + "app_fee": 170, + "merchant_fee": 0, + "processor_response": "Transaction in progress", + "auth_model": "USSD", + "currency": "NGN", + "ip": "you", + "narration": "Dotuns Fashion Limited", + "status": "pending", + "payment_type": "ussd", + "fraud_status": "ok", + "charge_type": "normal", + "created_at": "2026-01-21T14:10:59.000Z", + "account_id": 92319, + "customer": { + "id": 3451768, + "phone_number": "07054748747", + "name": "Dotuns Fashion Limited", + "email": "ravesb_f5196adeedf522b7d710_dcracker.dt@gmail.com", + "created_at": "2026-01-21T14:10:59.000Z" + }, + "payment_code": "9956412" + }, + "meta": { + "authorization": { + "mode": "ussd", + "note": "*566*002*9956412#" + } + } + } + }); + + var payload = { + tx_ref: "MC-15852309v5050e8", + account_bank: "044", + amount: "5000", + currency: "NGN", + email: "dcracker.dt@gmail.com", + phone_number: "ereererererer", + fullname: "James Bond", + client_ip: "192.168.1.1", + device_fingerprint: "62wd23423rq324323qew1" + }; + await expect(chargeInstance.ussd(payload)).to.be.rejectedWith('phone number should be digits'); + expect(createUssdCharge).to.not.have.been.called; + }); + + it('should validate a card charge', async function () { + this.timeout(10000); + + const validateCharge = sinon + .stub(ravebase, 'request') + .resolves({ + body: { + "status": "success", + "message": "Charge validated", + "data": { + "id": 288200108, + "tx_ref": "LiveCardTest", + "flw_ref": "FLW275407301", + "device_fingerprint": "N/A", + "amount": 100, + "charged_amount": 100, + "app_fee": 1.4, + "merchant_fee": 0, + "processor_response": "Approved by Financial Institution", + "auth_model": "PIN", + "currency": "NGN", + "ip": "::ffff:10.5.179.3", + "narration": "CARD Transaction ", + "status": "successful", + "auth_url": "N/A", + "payment_type": "card", + "fraud_status": "ok", + "charge_type": "normal", + "created_at": "2020-07-15T14:31:16.000Z", + "account_id": 17321, + "customer": { + "id": 216519823, + "phone_number": null, + "name": "Yemi Desola", + "email": "user@gmail.com", + "created_at": "2020-07-15T14:31:15.000Z" + }, + "card": { + "first_6digits": "232343", + "last_4digits": "4567", + "issuer": "VERVE FIRST CITY MONUMENT BANK PLC", + "country": "NG", + "type": "VERVE", + "expiry": "03/23" + } + } + } + }); + + var payload = { + otp: "1234567", + flw_ref: "FLW247999960", + type: "card" + }; + var resp = await chargeInstance.validate(payload); + expect(validateCharge).to.have.been.calledOnce; + + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('message', 'Charge validated'); + + expect(resp.data).to.have.property('status'); + expect(resp.data).to.have.property('status', 'successful'); + }); it('should return Charge UK & EU bank accounts', async function () { this.timeout(10000); - const createUKCharge = sinon.stub(chargeInstance, 'uk').resolves({ - status: 'success', - message: 'Charge initiated', - data: { - id: 4474995, - tx_ref: 'MC-1585230ew9v5050e8', - flw_ref: 'LFTT5300124270590', - device_fingerprint: 'N/A', - amount: 10, - charged_amount: 10, - app_fee: 0.14, - merchant_fee: 0, - processor_response: 'Transaction is pending authentication', - auth_model: 'TOKEN', - currency: 'GBP', - ip: '52.209.154.143', - narration: 'Flutterwave Developers', - status: 'pending', - payment_type: 'account-ach-uk', - fraud_status: 'ok', - charge_type: 'normal', - created_at: '2023-07-20T09:22:11.000Z', - account_id: 20937, - customer: { - id: 2151343, - phone_number: '07086234518', - name: 'Olufemi Obafunmiso', - email: 'olufemi@flw.com', + const createUKCharge = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 4474995, + tx_ref: 'MC-1585230ew9v5050e8', + flw_ref: 'LFTT5300124270590', + device_fingerprint: 'N/A', + amount: 10, + charged_amount: 10, + app_fee: 0.14, + merchant_fee: 0, + processor_response: 'Transaction is pending authentication', + auth_model: 'TOKEN', + currency: 'GBP', + ip: '52.209.154.143', + narration: 'Flutterwave Developers', + status: 'pending', + payment_type: 'account-ach-uk', + fraud_status: 'ok', + charge_type: 'normal', created_at: '2023-07-20T09:22:11.000Z', + account_id: 20937, + customer: { + id: 2151343, + phone_number: '07086234518', + name: 'Olufemi Obafunmiso', + email: 'olufemi@flw.com', + created_at: '2023-07-20T09:22:11.000Z', + }, }, - }, - meta: { - authorization: { - mode: 'redirect', - redirect: - 'https://token-io-fe.dev-flutterwave.com/transactions?reference=LFTT5300124270590', + meta: { + authorization: { + mode: 'redirect', + redirect: + 'https://token-io-fe.dev-flutterwave.com/transactions?reference=LFTT5300124270590', + }, }, - }, + } }); var payload = { @@ -228,7 +492,6 @@ describe('#Rave charge', function () { }; var resp = await chargeInstance.uk(payload); expect(createUKCharge).to.have.been.calledOnce; - expect(createUKCharge).to.have.been.calledOnceWith(payload); expect(resp).to.have.property('status', 'success'); expect(resp).to.have.property('message', 'Charge initiated'); @@ -241,11 +504,13 @@ describe('#Rave charge', function () { this.timeout(10000); const createGooglePayCharge = sinon - .stub(chargeInstance, 'googlepay') + .stub(ravebase, 'request') .resolves({ - status: 'error', - message: 'Merchant is not enabled to accept googlepay transactions.', - data: null, + body: { + status: 'error', + message: 'Merchant is not enabled to accept googlepay transactions.', + data: null, + } }); var payload = { @@ -269,7 +534,6 @@ describe('#Rave charge', function () { }; var resp = await chargeInstance.googlepay(payload); expect(createGooglePayCharge).to.have.been.calledOnce; - expect(createGooglePayCharge).to.have.been.calledOnceWith(payload); expect(resp).to.have.property('status', 'error'); expect(resp).to.have.property( @@ -283,47 +547,49 @@ describe('#Rave charge', function () { this.timeout(10000); const createGooglePayCharge = sinon - .stub(chargeInstance, 'googlepay') + .stub(ravebase, 'request') .resolves({ - status: 'success', - message: 'Charge initiated', - data: { - id: 2615403, - tx_ref: 'MC-TEST-1234568_success_mock', - flw_ref: 'RQFA6549001367743', - device_fingerprint: 'gdgdhdh738bhshsjs', - amount: 10, - charged_amount: 10, - app_fee: 0.38, - merchant_fee: 0, - processor_response: 'Payment token retrieval has been initiated', - auth_model: 'GOOGLEPAY_NOAUTH', - currency: 'USD', - ip: '54.75.56.55', - narration: 'Test Google Pay charge', - status: 'pending', - auth_url: - 'https://rave-api-v2.herokuapp.com/flwv3-pug/getpaid/api/short-url/XPtNw-WkQ', - payment_type: 'googlepay', - fraud_status: 'ok', - charge_type: 'normal', - created_at: '2022-05-11T20:36:15.000Z', - account_id: 20937, - customer: { - id: 955307, - phone_number: null, - name: 'Yolande Aglaé Colbert', - email: 'user@example.com', - created_at: '2022-05-11T20:36:14.000Z', - }, - meta: { - authorization: { - mode: 'redirect', - redirect: - 'https://rave-api-v2.herokuapp.com/flwv3-pug/getpaid/api/short-url/XPtNw-WkQ', + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 2615403, + tx_ref: 'MC-TEST-1234568_success_mock', + flw_ref: 'RQFA6549001367743', + device_fingerprint: 'gdgdhdh738bhshsjs', + amount: 10, + charged_amount: 10, + app_fee: 0.38, + merchant_fee: 0, + processor_response: 'Payment token retrieval has been initiated', + auth_model: 'GOOGLEPAY_NOAUTH', + currency: 'USD', + ip: '54.75.56.55', + narration: 'Test Google Pay charge', + status: 'pending', + auth_url: + 'https://rave-api-v2.herokuapp.com/flwv3-pug/getpaid/api/short-url/XPtNw-WkQ', + payment_type: 'googlepay', + fraud_status: 'ok', + charge_type: 'normal', + created_at: '2022-05-11T20:36:15.000Z', + account_id: 20937, + customer: { + id: 955307, + phone_number: null, + name: 'Yolande Aglaé Colbert', + email: 'user@example.com', + created_at: '2022-05-11T20:36:14.000Z', + }, + meta: { + authorization: { + mode: 'redirect', + redirect: + 'https://rave-api-v2.herokuapp.com/flwv3-pug/getpaid/api/short-url/XPtNw-WkQ', + }, }, }, - }, + } }); var payload = { @@ -347,7 +613,6 @@ describe('#Rave charge', function () { }; var resp = await chargeInstance.googlepay(payload); expect(createGooglePayCharge).to.have.been.calledOnce; - expect(createGooglePayCharge).to.have.been.calledOnceWith(payload); expect(resp).to.have.property('status', 'success'); expect(resp).to.have.property('message', 'Charge initiated'); @@ -356,6 +621,81 @@ describe('#Rave charge', function () { expect(resp.data.meta.authorization).to.have.property('mode', 'redirect'); }); + it('should validate phone number for Googlepay charge', async function () { + this.timeout(10000); + + const createGooglePayCharge = sinon + .stub(ravebase, 'request') + .resolves({ + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 2615403, + tx_ref: 'MC-TEST-1234568_success_mock', + flw_ref: 'RQFA6549001367743', + device_fingerprint: 'gdgdhdh738bhshsjs', + amount: 10, + charged_amount: 10, + app_fee: 0.38, + merchant_fee: 0, + processor_response: 'Payment token retrieval has been initiated', + auth_model: 'GOOGLEPAY_NOAUTH', + currency: 'USD', + ip: '54.75.56.55', + narration: 'Test Google Pay charge', + status: 'pending', + auth_url: + 'https://rave-api-v2.herokuapp.com/flwv3-pug/getpaid/api/short-url/XPtNw-WkQ', + payment_type: 'googlepay', + fraud_status: 'ok', + charge_type: 'normal', + created_at: '2022-05-11T20:36:15.000Z', + account_id: 20937, + customer: { + id: 955307, + phone_number: null, + name: 'Yolande Aglaé Colbert', + email: 'user@example.com', + created_at: '2022-05-11T20:36:14.000Z', + }, + meta: { + authorization: { + mode: 'redirect', + redirect: + 'https://rave-api-v2.herokuapp.com/flwv3-pug/getpaid/api/short-url/XPtNw-WkQ', + }, + }, + }, + } + }); + + var payload = { + tx_ref: 'MC-TEST-1234568_success_mock', + amount: '10', + phone_number: "ferfeefrerrefrefre", + currency: 'USD', + email: 'user@example.com', + fullname: 'Yolande Aglaé Colbert', + redirect_url: 'https://flutterwave.ng', + client_ip: '192.168.0.1', + device_fingerprint: 'gdgdhdh738bhshsjs', + billing_zip: '15101', + billing_city: 'allison park', + billing_address: '3563 Huntertown Rd', + billing_state: 'Pennsylvania', + billing_country: 'US', + meta: { + metaname: 'testmeta', + metavalue: 'testvalue', + }, + }; + + await expect(chargeInstance.googlepay(payload)).to.be.rejectedWith('phone number should be digits'); + + expect(createGooglePayCharge).to.not.have.been.called; + }); + it('should return ValidationError for Googlepay charge', async function () { this.timeout(10000); @@ -390,11 +730,13 @@ describe('#Rave charge', function () { this.timeout(10000); const createApplePayCharge = sinon - .stub(chargeInstance, 'applepay') + .stub(ravebase, 'request') .resolves({ - status: 'error', - message: 'Merchant is not enabled for ApplePay collections.', - data: null, + body: { + status: 'error', + message: 'Merchant is not enabled for ApplePay collections.', + data: null, + } }); var payload = { @@ -419,7 +761,6 @@ describe('#Rave charge', function () { }; var resp = await chargeInstance.applepay(payload); expect(createApplePayCharge).to.have.been.calledOnce; - expect(createApplePayCharge).to.have.been.calledOnceWith(payload); expect(resp).to.have.property('status', 'error'); expect(resp).to.have.property( @@ -433,47 +774,49 @@ describe('#Rave charge', function () { this.timeout(10000); const createApplePayCharge = sinon - .stub(chargeInstance, 'applepay') + .stub(ravebase, 'request') .resolves({ - status: 'success', - message: 'Charge initiated', - data: { - id: 645498756, - tx_ref: 'MC-TEST-1234523', - flw_ref: 'TKVH48681032738026', - device_fingerprint: 'gdgdhdh738bhshsjs', - amount: 1, - charged_amount: 1.04, - app_fee: 0.04, - merchant_fee: 0, - processor_response: 'Pending validation', - auth_model: 'APPLEPAY', - currency: 'GBP', - ip: '192.168.0.1', - narration: 'Test payment', - status: 'pending', - auth_url: - 'https://applepay.aq2-flutterwave.com?reference=TKVH48681032738026', - payment_type: 'applepay', - fraud_status: 'ok', - charge_type: 'normal', - created_at: '2022-06-11T12:18:11.000Z', - account_id: 3442, - customer: { - id: 379560157, - phone_number: '09012345678', - name: 'Flutterwave Developers', - email: 'developers@flutterwavego.com', + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 645498756, + tx_ref: 'MC-TEST-1234523', + flw_ref: 'TKVH48681032738026', + device_fingerprint: 'gdgdhdh738bhshsjs', + amount: 1, + charged_amount: 1.04, + app_fee: 0.04, + merchant_fee: 0, + processor_response: 'Pending validation', + auth_model: 'APPLEPAY', + currency: 'GBP', + ip: '192.168.0.1', + narration: 'Test payment', + status: 'pending', + auth_url: + 'https://applepay.aq2-flutterwave.com?reference=TKVH48681032738026', + payment_type: 'applepay', + fraud_status: 'ok', + charge_type: 'normal', created_at: '2022-06-11T12:18:11.000Z', - }, - meta: { - authorization: { - mode: 'redirect', - redirect: - 'https://applepay.aq2-flutterwave.com?reference=TKVH48681032738026', + account_id: 3442, + customer: { + id: 379560157, + phone_number: '09012345678', + name: 'Flutterwave Developers', + email: 'developers@flutterwavego.com', + created_at: '2022-06-11T12:18:11.000Z', + }, + meta: { + authorization: { + mode: 'redirect', + redirect: + 'https://applepay.aq2-flutterwave.com?reference=TKVH48681032738026', + }, }, }, - }, + } }); var payload = { @@ -498,7 +841,6 @@ describe('#Rave charge', function () { }; var resp = await chargeInstance.applepay(payload); expect(createApplePayCharge).to.have.been.calledOnce; - expect(createApplePayCharge).to.have.been.calledOnceWith(payload); expect(resp).to.have.property('status', 'success'); expect(resp).to.have.property('message', 'Charge initiated'); @@ -507,6 +849,81 @@ describe('#Rave charge', function () { expect(resp.data.meta.authorization).to.have.property('mode', 'redirect'); }); + it('should validate phone number for Applepay charge', async function () { + this.timeout(10000); + + const createApplePayCharge = sinon + .stub(ravebase, 'request') + .resolves({ + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 645498756, + tx_ref: 'MC-TEST-1234523', + flw_ref: 'TKVH48681032738026', + device_fingerprint: 'gdgdhdh738bhshsjs', + amount: 1, + charged_amount: 1.04, + app_fee: 0.04, + merchant_fee: 0, + processor_response: 'Pending validation', + auth_model: 'APPLEPAY', + currency: 'GBP', + ip: '192.168.0.1', + narration: 'Test payment', + status: 'pending', + auth_url: + 'https://applepay.aq2-flutterwave.com?reference=TKVH48681032738026', + payment_type: 'applepay', + fraud_status: 'ok', + charge_type: 'normal', + created_at: '2022-06-11T12:18:11.000Z', + account_id: 3442, + customer: { + id: 379560157, + phone_number: '09012345678', + name: 'Flutterwave Developers', + email: 'developers@flutterwavego.com', + created_at: '2022-06-11T12:18:11.000Z', + }, + meta: { + authorization: { + mode: 'redirect', + redirect: + 'https://applepay.aq2-flutterwave.com?reference=TKVH48681032738026', + }, + }, + }, + } + }); + + var payload = { + tx_ref: 'MC-TEST-123456', + amount: '10', + currency: 'USD', + email: 'user@example.com', + fullname: 'Yolande Aglaé Colbert', + redirect_url: 'https://flutterwave.ng', + client_ip: '192.168.0.1', + device_fingerprint: 'gdgdhdh738bhshsjs', + billing_zip: '15101', + billing_city: 'allison park', + billing_address: '3563 Huntertown Rd', + billing_state: 'Pennsylvania', + billing_country: 'US', + phone_number: 'erreferfrereerr', + meta: { + metaname: 'testmeta', + metavalue: 'testvalue', + }, + }; + + await expect(chargeInstance.applepay(payload)).to.be.rejectedWith('phone number should be digits'); + + expect(createApplePayCharge).to.not.have.been.called; + }); + it('should return ValidationError for Applepay charge', async function () { this.timeout(10000); @@ -541,10 +958,13 @@ describe('#Rave charge', function () { it('should return Unauthorized eNaira charge', async function () { this.timeout(10000); - const createeNairaCharge = sinon.stub(chargeInstance, 'enaira').resolves({ - status: 'error', - message: 'Merchant is not enabled for eNaira collections.', - data: null, + const createeNairaCharge = sinon.stub(ravebase, 'request').resolves({ + body: + { + status: 'error', + message: 'Merchant is not enabled for eNaira collections.', + data: null, + } }); var payload = { @@ -558,8 +978,6 @@ describe('#Rave charge', function () { }; var resp = await chargeInstance.enaira(payload); expect(createeNairaCharge).to.have.been.calledOnce; - expect(createeNairaCharge).to.have.been.calledOnceWith(payload); - expect(resp).to.have.property('status', 'error'); expect(resp).to.have.property( 'message', @@ -571,44 +989,46 @@ describe('#Rave charge', function () { it('should return eNaira charge', async function () { this.timeout(10000); - const createeNairaCharge = sinon.stub(chargeInstance, 'enaira').resolves({ - status: 'success', - message: 'Charge initiated', - data: { - id: 4197118, - tx_ref: '12345test_05', - flw_ref: 'ZZYO0021678723801871881', - device_fingerprint: 'N/A', - amount: 200, - charged_amount: 200, - app_fee: 2.8, - merchant_fee: 0, - processor_response: 'pending', - auth_model: 'ENAIRA', - currency: 'NGN', - ip: '54.75.161.64', - narration: 'Flutterwave Developers', - status: 'pending', - payment_type: 'enaira', - fraud_status: 'ok', - charge_type: 'normal', - created_at: '2023-03-13T16:10:00.000Z', - account_id: 20937, - customer: { - id: 1953337, - phone_number: '08092269174', - name: 'Wisdom Joshua', - email: 'wsdmjsh@gmail.com', - created_at: '2023-01-18T13:22:14.000Z', - }, - meta: { - authorization: { - mode: 'redirect', - redirect: - 'https://camltest.azurewebsites.net/enairapay/?invoiceId=01GVDVRTG80MVSRJJQQYRFTZK3&amount=200&token=438890', + const createeNairaCharge = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 4197118, + tx_ref: '12345test_05', + flw_ref: 'ZZYO0021678723801871881', + device_fingerprint: 'N/A', + amount: 200, + charged_amount: 200, + app_fee: 2.8, + merchant_fee: 0, + processor_response: 'pending', + auth_model: 'ENAIRA', + currency: 'NGN', + ip: '54.75.161.64', + narration: 'Flutterwave Developers', + status: 'pending', + payment_type: 'enaira', + fraud_status: 'ok', + charge_type: 'normal', + created_at: '2023-03-13T16:10:00.000Z', + account_id: 20937, + customer: { + id: 1953337, + phone_number: '08092269174', + name: 'Wisdom Joshua', + email: 'wsdmjsh@gmail.com', + created_at: '2023-01-18T13:22:14.000Z', + }, + meta: { + authorization: { + mode: 'redirect', + redirect: + 'https://camltest.azurewebsites.net/enairapay/?invoiceId=01GVDVRTG80MVSRJJQQYRFTZK3&amount=200&token=438890', + }, }, }, - }, + } }); var payload = { @@ -622,7 +1042,6 @@ describe('#Rave charge', function () { }; var resp = await chargeInstance.enaira(payload); expect(createeNairaCharge).to.have.been.calledOnce; - expect(createeNairaCharge).to.have.been.calledOnceWith(payload); expect(resp).to.have.property('status', 'success'); expect(resp).to.have.property('message', 'Charge initiated'); @@ -631,6 +1050,64 @@ describe('#Rave charge', function () { expect(resp.data.meta.authorization).to.have.property('mode', 'redirect'); }); + it('should validate phone number for eNaira charge', async function () { + this.timeout(10000); + + const createeNairaCharge = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 4197118, + tx_ref: '12345test_05', + flw_ref: 'ZZYO0021678723801871881', + device_fingerprint: 'N/A', + amount: 200, + charged_amount: 200, + app_fee: 2.8, + merchant_fee: 0, + processor_response: 'pending', + auth_model: 'ENAIRA', + currency: 'NGN', + ip: '54.75.161.64', + narration: 'Flutterwave Developers', + status: 'pending', + payment_type: 'enaira', + fraud_status: 'ok', + charge_type: 'normal', + created_at: '2023-03-13T16:10:00.000Z', + account_id: 20937, + customer: { + id: 1953337, + phone_number: '08092269174', + name: 'Wisdom Joshua', + email: 'wsdmjsh@gmail.com', + created_at: '2023-01-18T13:22:14.000Z', + }, + meta: { + authorization: { + mode: 'redirect', + redirect: + 'https://camltest.azurewebsites.net/enairapay/?invoiceId=01GVDVRTG80MVSRJJQQYRFTZK3&amount=200&token=438890', + }, + }, + }, + } + }); + + var payload = { + tx_ref: 'MC-TEST-123456', + amount: '100', + currency: 'NGN', + email: 'user@example.com', + fullname: 'Yemi Desola', + phone_number: 'fdfdfdfdfdfdf', + redirect_url: 'https://flutterwave.ng', + }; + await expect(chargeInstance.enaira(payload)).to.be.rejectedWith('phone number should be digits'); + expect(createeNairaCharge).to.not.have.been.called; + }); + it('should return ValidationError for eNaira charge', async function () { this.timeout(10000); @@ -655,45 +1132,47 @@ describe('#Rave charge', function () { this.timeout(10000); const createFawryPayCharge = sinon - .stub(chargeInstance, 'fawrypay') + .stub(ravebase, 'request') .resolves({ - status: 'success', - message: 'Charge initiated', - data: { - id: 4511926, - tx_ref: 'fawrySample1', - order_ref: 'URF_FAWRY_1691396932978_2086335', - flw_ref: '9263673349', - device_fingerprint: 'N/A', - amount: 10, - charged_amount: 10, - app_fee: 0.23, - merchant_fee: 0, - processor_response: 'Request is pending', - currency: 'EGP', - narration: 'Flutterwave Developers', - status: 'pending', - auth_url: 'N/A', - payment_type: 'fawry_pay', - fraud_status: 'ok', - charge_type: 'normal', - created_at: '2023-08-07T08:28:52.000Z', - account_id: 20937, - customer: { - id: 1869436, - phone_number: '09012345678', - name: 'Anonymous customer', - email: 'user@flw.com', - created_at: '2022-10-30T22:25:31.000Z', + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 4511926, + tx_ref: 'fawrySample1', + order_ref: 'URF_FAWRY_1691396932978_2086335', + flw_ref: '9263673349', + device_fingerprint: 'N/A', + amount: 10, + charged_amount: 10, + app_fee: 0.23, + merchant_fee: 0, + processor_response: 'Request is pending', + currency: 'EGP', + narration: 'Flutterwave Developers', + status: 'pending', + auth_url: 'N/A', + payment_type: 'fawry_pay', + fraud_status: 'ok', + charge_type: 'normal', + created_at: '2023-08-07T08:28:52.000Z', + account_id: 20937, + customer: { + id: 1869436, + phone_number: '09012345678', + name: 'Anonymous customer', + email: 'user@flw.com', + created_at: '2022-10-30T22:25:31.000Z', + }, }, - }, - meta: { - authorization: { - mode: 'fawry_pay', - instruction: - 'Please make payment with the flw_ref returned in the response which should be the same as the reference sent via SMS', + meta: { + authorization: { + mode: 'fawry_pay', + instruction: + 'Please make payment with the flw_ref returned in the response which should be the same as the reference sent via SMS', + }, }, - }, + } }); var payload = { @@ -709,7 +1188,6 @@ describe('#Rave charge', function () { }; var resp = await chargeInstance.fawrypay(payload); expect(createFawryPayCharge).to.have.been.calledOnce; - expect(createFawryPayCharge).to.have.been.calledOnceWith(payload); expect(resp).to.have.property('status', 'success'); expect(resp).to.have.property('message', 'Charge initiated'); @@ -722,11 +1200,13 @@ describe('#Rave charge', function () { this.timeout(10000); const createFawryPayCharge = sinon - .stub(chargeInstance, 'fawrypay') + .stub(ravebase, 'request') .resolves({ - status: 'error', - message: 'Merchant is not enabled for Fawry Pay collections.', - data: null, + body: { + status: 'error', + message: 'Merchant is not enabled for Fawry Pay collections.', + data: null, + } }); var payload = { @@ -742,7 +1222,6 @@ describe('#Rave charge', function () { }; var resp = await chargeInstance.fawrypay(payload); expect(createFawryPayCharge).to.have.been.calledOnce; - expect(createFawryPayCharge).to.have.been.calledOnceWith(payload); expect(resp).to.have.property('status', 'error'); expect(resp).to.have.property( @@ -777,47 +1256,49 @@ describe('#Rave charge', function () { it('should return charge into collection subaccounts', async function () { this.timeout(10000); - const createCardChargeStub = sinon.stub(chargeInstance, 'card').resolves({ - status: 'success', - message: 'Successful', - data: { - id: 4918672, - tx_ref: 'MC-3243e000', - flw_ref: 'FLW-MOCK-365702bdb12af7938bdd02860caf2bc2', - device_fingerprint: 'N/A', - amount: 100, - charged_amount: 100, - app_fee: 1.4, - merchant_fee: 0, - processor_response: - 'Please enter the OTP sent to your mobile number 080****** and email te**@rave**.com', - auth_model: 'NOAUTH', - currency: 'NGN', - ip: '54.75.161.64', - narration: 'CARD Transaction ', - status: 'successful', - auth_url: - 'https://ravesandboxapi.flutterwave.com/mockvbvpage?ref=FLW-MOCK-365702bdb12af7938bdd02860caf2bc2&code=00&message=Approved.%20Successful&receiptno=RN1708329200239', - payment_type: 'card', - plan: null, - fraud_status: 'ok', - charge_type: 'normal', - created_at: '2024-02-19T07:53:20.000Z', - account_id: 20937, - customer: { - id: 2356420, - phone_number: null, - name: 'Yolande Aglaé', - email: 'user@example.com', + const createCardChargeStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Successful', + data: { + id: 4918672, + tx_ref: 'MC-3243e000', + flw_ref: 'FLW-MOCK-365702bdb12af7938bdd02860caf2bc2', + device_fingerprint: 'N/A', + amount: 100, + charged_amount: 100, + app_fee: 1.4, + merchant_fee: 0, + processor_response: + 'Please enter the OTP sent to your mobile number 080****** and email te**@rave**.com', + auth_model: 'NOAUTH', + currency: 'NGN', + ip: '54.75.161.64', + narration: 'CARD Transaction ', + status: 'successful', + auth_url: + 'https://ravesandboxapi.flutterwave.com/mockvbvpage?ref=FLW-MOCK-365702bdb12af7938bdd02860caf2bc2&code=00&message=Approved.%20Successful&receiptno=RN1708329200239', + payment_type: 'card', + plan: null, + fraud_status: 'ok', + charge_type: 'normal', created_at: '2024-02-19T07:53:20.000Z', - }, - card: { - first_6digits: '553188', - last_4digits: '2950', - issuer: 'MASTERCARD CREDIT', - country: 'NG', - type: 'MASTERCARD', - expiry: '09/32', + account_id: 20937, + customer: { + id: 2356420, + phone_number: null, + name: 'Yolande Aglaé', + email: 'user@example.com', + created_at: '2024-02-19T07:53:20.000Z', + }, + card: { + first_6digits: '553188', + last_4digits: '2950', + issuer: 'MASTERCARD CREDIT', + country: 'NG', + type: 'MASTERCARD', + expiry: '09/32', + }, }, }, }); @@ -840,24 +1321,11 @@ describe('#Rave charge', function () { transaction_split_ratio: 2, transaction_charge_type: 'flat', transaction_charge: 100, - }, - { - id: 'RS_47CC41E35953182AC35E952D4F4CA713', - transaction_split_ratio: 3, - transaction_charge_type: 'flat', - transaction_charge: 100, - }, - { - id: 'RS_EEF0D016C26BBF1543F09CEF6090AB49', - transaction_split_ratio: 5, - transaction_charge_type: 'flat', - transaction_charge: 100, - }, + } ], }; var resp = await chargeInstance.card(payload); expect(createCardChargeStub).to.have.been.calledOnce; - expect(createCardChargeStub).to.have.been.calledOnceWith(payload); expect(resp).to.have.property('status', 'success'); @@ -867,56 +1335,59 @@ describe('#Rave charge', function () { it('should create an ACH charge', async function () { this.timeout(10000); - const createACHCharge = sinon.stub(chargeInstance, 'ach').resolves({ - status: 'success', - message: 'Charge initiated', - data: { - id: 8473445, - tx_ref: 'YOUR_UNIQUE_REFERENCE_001', - flw_ref: '1743062863530-FLW-MOCK-REF', - device_fingerprint: 'N/A', - amount: 100, - charged_amount: 100, - app_fee: null, - merchant_fee: 0, - processor_response: 'Pending validation', - auth_model: 'AUTH', - currency: 'ZAR', - ip: '52.209.154.143', - narration: 'Flutterwave Developers', - status: 'pending', - auth_url: - 'https://ravesandboxapi.flutterwave.com/ozow_page?transactionIdentifier=1743062863530-FLW-MOCK-REF&responsecode=00&responsemessage=Successful&transactionreference=1743062863530-FLW-MOCK-REF', - payment_type: 'account', - fraud_status: 'ok', - created_at: '2025-03-27T08:07:43.000Z', - account_id: 20937, - customer: { - id: 2611309, - phone_number: '08056789051', - name: 'John Doe', - email: 'user@example.com', - created_at: '2025-03-27T08:05:00.000Z', - }, - account: { - account_number: '0000000000', - bank_code: '000', - first_name: 'John', - last_name: 'Doe', - }, - meta: { - authorization: { - mode: 'redirect', - redirect: - 'https://ravesandboxapi.flutterwave.com/ozow_page?transactionIdentifier=1743062863530-FLW-MOCK-REF&responsecode=00&responsemessage=Successful&transactionreference=1743062863530-FLW-MOCK-REF', - validate_instructions: '', + const createACHCharge = sinon.stub(ravebase, 'request').resolves({ + body: + { + status: 'success', + message: 'Charge initiated', + data: { + id: 8473445, + tx_ref: 'YOUR_UNIQUE_REFERENCE_001', + flw_ref: '1743062863530-FLW-MOCK-REF', + device_fingerprint: 'N/A', + amount: 100, + charged_amount: 100, + app_fee: null, + merchant_fee: 0, + processor_response: 'Pending validation', + auth_model: 'AUTH', + currency: 'ZAR', + ip: '52.209.154.143', + narration: 'Flutterwave Developers', + status: 'pending', + auth_url: + 'https://ravesandboxapi.flutterwave.com/ozow_page?transactionIdentifier=1743062863530-FLW-MOCK-REF&responsecode=00&responsemessage=Successful&transactionreference=1743062863530-FLW-MOCK-REF', + payment_type: 'account', + fraud_status: 'ok', + created_at: '2025-03-27T08:07:43.000Z', + account_id: 20937, + customer: { + id: 2611309, + phone_number: '08056789051', + name: 'John Doe', + email: 'user@example.com', + created_at: '2025-03-27T08:05:00.000Z', + }, + account: { + account_number: '0000000000', + bank_code: '000', + first_name: 'John', + last_name: 'Doe', + }, + meta: { + authorization: { + mode: 'redirect', + redirect: + 'https://ravesandboxapi.flutterwave.com/ozow_page?transactionIdentifier=1743062863530-FLW-MOCK-REF&responsecode=00&responsemessage=Successful&transactionreference=1743062863530-FLW-MOCK-REF', + validate_instructions: '', + }, }, }, }, }); var payload = { - tx_ref: 'YOUR_UNIQUE_REFERENCE_01', + tx_ref: 'TRX_UNIQUE_01', amount: '100', currency: 'ZAR', country: 'ZA', @@ -926,7 +1397,6 @@ describe('#Rave charge', function () { }; var resp = await chargeInstance.ach(payload); expect(createACHCharge).to.have.been.calledOnce; - expect(createACHCharge).to.have.been.calledOnceWith(payload); expect(resp).to.have.property('status', 'success'); expect(resp).to.have.property('message', 'Charge initiated'); @@ -937,52 +1407,55 @@ describe('#Rave charge', function () { it('should create an ACH charge for a specific SA bank', async function () { this.timeout(10000); - const createACHCharge = sinon.stub(chargeInstance, 'ach').resolves({ - status: 'success', - message: 'Charge initiated', - data: { - id: 8473455, - tx_ref: 'YOUR_UNIQUE_REFERENCE_02', - flw_ref: '1743063355241-FLW-MOCK-REF', - device_fingerprint: 'N/A', - amount: 100, - charged_amount: 100, - app_fee: null, - merchant_fee: 0, - processor_response: 'Pending validation', - auth_model: 'AUTH', - currency: 'ZAR', - ip: '54.75.161.64', - narration: 'Flutterwave Developers', - status: 'pending', - auth_url: - 'https://ravesandboxapi.flutterwave.com/ozow_page?transactionIdentifier=1743063355241-FLW-MOCK-REF&responsecode=00&responsemessage=Successful&transactionreference=1743063355241-FLW-MOCK-REF', - payment_type: 'account', - fraud_status: 'ok', - created_at: '2025-03-27T08:15:54.000Z', - account_id: 20937, - customer: { - id: 2611309, - phone_number: '08056789051', - name: 'John Doe', - email: 'user@example.com', - created_at: '2025-03-27T08:05:00.000Z', - }, - account: { - account_number: '0000000000', - bank_code: '000', - first_name: 'John', - last_name: 'Doe', - }, - meta: { - authorization: { - mode: 'redirect', - redirect: - 'https://ravesandboxapi.flutterwave.com/ozow_page?transactionIdentifier=1743063355241-FLW-MOCK-REF&responsecode=00&responsemessage=Successful&transactionreference=1743063355241-FLW-MOCK-REF', - validate_instructions: '', + const createACHCharge = sinon.stub(ravebase, 'request').resolves({ + body: + { + status: 'success', + message: 'Charge initiated', + data: { + id: 8473455, + tx_ref: 'YOUR_UNIQUE_REFERENCE_02', + flw_ref: '1743063355241-FLW-MOCK-REF', + device_fingerprint: 'N/A', + amount: 100, + charged_amount: 100, + app_fee: null, + merchant_fee: 0, + processor_response: 'Pending validation', + auth_model: 'AUTH', + currency: 'ZAR', + ip: '54.75.161.64', + narration: 'Flutterwave Developers', + status: 'pending', + auth_url: + 'https://ravesandboxapi.flutterwave.com/ozow_page?transactionIdentifier=1743063355241-FLW-MOCK-REF&responsecode=00&responsemessage=Successful&transactionreference=1743063355241-FLW-MOCK-REF', + payment_type: 'account', + fraud_status: 'ok', + created_at: '2025-03-27T08:15:54.000Z', + account_id: 20937, + customer: { + id: 2611309, + phone_number: '08056789051', + name: 'John Doe', + email: 'user@example.com', + created_at: '2025-03-27T08:05:00.000Z', + }, + account: { + account_number: '0000000000', + bank_code: '000', + first_name: 'John', + last_name: 'Doe', + }, + meta: { + authorization: { + mode: 'redirect', + redirect: + 'https://ravesandboxapi.flutterwave.com/ozow_page?transactionIdentifier=1743063355241-FLW-MOCK-REF&responsecode=00&responsemessage=Successful&transactionreference=1743063355241-FLW-MOCK-REF', + validate_instructions: '', + }, }, }, - }, + } }); var payload = { @@ -997,7 +1470,6 @@ describe('#Rave charge', function () { }; var resp = await chargeInstance.ach(payload); expect(createACHCharge).to.have.been.calledOnce; - expect(createACHCharge).to.have.been.calledOnceWith(payload); expect(resp).to.have.property('status', 'success'); expect(resp).to.have.property('message', 'Charge initiated'); diff --git a/test/rave.ebills.test.js b/test/rave.ebills.test.js index dd318aa..0483feb 100644 --- a/test/rave.ebills.test.js +++ b/test/rave.ebills.test.js @@ -1,14 +1,10 @@ var ebills = require('../lib/rave.ebills'); var base = require('../lib/rave.base'); - -var Promise = require('bluebird'); var mocha = require('mocha'); var chai = require('chai'); var expect = chai.expect; var chaiAsPromised = require('chai-as-promised'); - var dotenv = require('dotenv').config(); - const sinon = require('sinon'); const sinonChai = require('sinon-chai'); @@ -21,7 +17,6 @@ describe('#Rave Ebills', function () { const ravebase = new base(public_key, secret_key); let ebillsInstance; - let ebillsStub; beforeEach(() => { ebillsInstance = new ebills(ravebase); @@ -31,25 +26,23 @@ describe('#Rave Ebills', function () { sinon.restore(); }); - it('should create a new Ebills order ', async function () { + it('should create a new Ebills order', async function () { this.timeout(10000); - const createEbillsSuccessStub = sinon - .stub(ebillsInstance, 'order') - .resolves({ - body: { - status: 'success', - message: 'Ebills ordered', - data: { - flw_ref: 'RVEBLS-F35542EA3BFE-73362', - tx_ref: 'akhlm-pstmn-109470393', - response_message: 'Pending funds transfer or bank branch payment', - }, + // STUB: request to ensure services/ebills logic is hit + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Ebills ordered', + data: { + flw_ref: 'RVEBLS-F35542EA3BFE-73362', + tx_ref: 'akhlm-pstmn-109470393', + response_message: 'Pending funds transfer', }, - }); + }, + }); var payload = { - narration: 'mndkn blls', number_of_units: 2, currency: 'NGN', amount: 100, @@ -61,33 +54,46 @@ describe('#Rave Ebills', function () { country: 'NG', }; - var resp = await ebillsInstance.order(payload); + const resp = await ebillsInstance.order(payload); - expect(createEbillsSuccessStub).to.have.been.calledOnce; - expect(createEbillsSuccessStub).to.have.been.calledOnceWith(payload); + expect(requestStub).to.have.been.calledOnce; + expect(resp, "Service returned undefined").to.not.be.undefined; + expect(resp).to.have.property('status', 'success'); + }); + + it('testing the phone number validation required to create a new Ebills order', async function () { + this.timeout(10000); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + const requestStub = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success' } }); - expect(resp.body.data).to.have.property('flw_ref'); - expect(resp.body.data).to.have.property('tx_ref'); - expect(resp.body.data).to.have.property('response_message'); + var payload = { + number_of_units: 2, + currency: 'NGN', + amount: 100, + phone_number: 'ffrrrtrrtr', + email: 'jake@rad.com', + tx_ref: 'akhlm-pstmn-109470393', + ip: '127.9.0.7', + custom_business_name: 'John Madakin', + country: 'NG', + }; + + await expect(ebillsInstance.order(payload)) + .to.be.rejectedWith('phone number should be digits'); + + expect(requestStub).to.not.have.been.called; }); - it('should return list of bank branches ', async function () { + it('should update an Ebills order', async function () { this.timeout(10000); - const updateEbillsSuccessStub = sinon - .stub(ebillsInstance, 'update') - .resolves({ - body: { - status: 'success', - message: 'Ebills order updated', - data: { - updated: true, - }, - }, - }); + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Ebills order updated', + data: { updated: true }, + }, + }); var payload = { currency: 'NGN', @@ -95,12 +101,19 @@ describe('#Rave Ebills', function () { reference: 'RVEBLS-F81CEEEE8218-73362', }; - var resp = await ebillsInstance.update(payload); + const resp = await ebillsInstance.update(payload); - expect(updateEbillsSuccessStub).to.have.been.calledOnce; - expect(updateEbillsSuccessStub).to.have.been.calledOnceWith(payload); + expect(requestStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + }); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + it('should fail if email is missing', async function () { + + const requestStub = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success' } }); + + var invalidPayload = { amount: 100 }; // Missing email and other fields + + await expect(ebillsInstance.order(invalidPayload)).to.be.rejectedWith(/"email" is required/); + expect(requestStub).to.not.have.been.called; }); -}); +}); \ No newline at end of file diff --git a/test/rave.misc.test.js b/test/rave.misc.test.js index fa7e392..749507b 100644 --- a/test/rave.misc.test.js +++ b/test/rave.misc.test.js @@ -15,15 +15,16 @@ const sinonChai = require('sinon-chai'); chai.use(chaiAsPromised); chai.use(sinonChai); -describe('#Rave Misc', function () { +describe('#Rave Misc Coverage', function () { const public_key = process.env.PUBLIC_KEY; const secret_key = process.env.SECRET_KEY; - const ravebase = new base(public_key, secret_key); + let ravebase; let miscInstance; - let miscStub; beforeEach(() => { + // Fresh instantiation to ensure clean coverage metrics + ravebase = new base(public_key, secret_key); miscInstance = new misc(ravebase); }); @@ -31,272 +32,108 @@ describe('#Rave Misc', function () { sinon.restore(); }); - it('should return NGN balance', async function () { - this.timeout(10000); - - const fetchSingleBalanceSuccessStub = sinon - .stub(miscInstance, 'bal_currency') - .resolves({ - body: { - status: 'success', - message: 'Wallet balance fetched', - data: { - currency: 'NGN', - available_balance: 2168880, - ledger_balance: 253125.82, - }, - }, - }); - - var payload = { - currency: 'NGN', - }; - - var resp = await miscInstance.bal_currency(payload); - - expect(fetchSingleBalanceSuccessStub).to.have.been.calledOnce; - expect(fetchSingleBalanceSuccessStub).to.have.been.calledOnceWith(payload); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); - - expect(resp.body.data).to.have.property('currency'); - expect(resp.body.data).to.have.property('available_balance'); - expect(resp.body.data).to.have.property('ledger_balance'); - }); - - it('should return all wallet balances', async function () { + it('should successfully resolve bank account (Covers rave.verify.account.js)', async function () { this.timeout(10000); - const fetchBalanceSuccessStub = sinon.stub(miscInstance, 'bal').resolves({ + const requestStub = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success', - message: 'Wallet balances fetched', - data: [ - { - currency: 'NGN', - available_balance: 2367840, - ledger_balance: 253125.82, - }, - { - currency: 'KES', - available_balance: 0, - ledger_balance: 1226.72, - }, - { - currency: 'GHS', - available_balance: 0, - ledger_balance: 0, - }, - { - currency: 'USD', - available_balance: 0, - ledger_balance: 472.08, - }, - { - currency: 'EUR', - available_balance: 0, - ledger_balance: 0, - }, - { - currency: 'ZAR', - available_balance: 0, - ledger_balance: 0, - }, - { - currency: 'GBP', - available_balance: 0, - ledger_balance: 0, - }, - { - currency: 'TZS', - available_balance: 0, - ledger_balance: 0, - }, - { - currency: 'UGX', - available_balance: 0, - ledger_balance: 0, - }, - { - currency: 'RWF', - available_balance: 0, - ledger_balance: 5000, - }, - { - currency: 'ZMW', - available_balance: 0, - ledger_balance: 0, - }, - { - currency: 'INR', - available_balance: 0, - ledger_balance: 0, - }, - { - currency: 'XOF', - available_balance: 0, - ledger_balance: 0, - }, - { - currency: 'MUR', - available_balance: 0, - ledger_balance: 0, - }, - { - currency: 'ETB', - available_balance: 0, - ledger_balance: 0, - }, - ], - }, + data: { account_name: 'Pastor Bright' } + } }); - var resp = await miscInstance.bal(); + const payload = { account_number: '0690000032', account_bank: '044' }; + const resp = await miscInstance.verify_Account(payload); - expect(fetchBalanceSuccessStub).to.have.been.calledOnce; - - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); - - expect(resp.body.data[0]).to.have.property('currency'); - expect(resp.body.data[0]).to.have.property('available_balance'); - expect(resp.body.data[0]).to.have.property('ledger_balance'); + expect(requestStub).to.have.been.calledOnce; + expect(resp.data.account_name).to.equal('Pastor Bright'); }); - it('should initiate BVN consent and return success message', async function () { + it('should successfully fetch balance by currency (Covers rave.bal.currency.js)', async function () { this.timeout(10000); - const resolveInitBVNSuccessStub = sinon.stub(miscInstance, 'bvn').resolves({ + const requestStub = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success', - message: 'Bvn verification initiated', - data: { - url: 'https://nibss-bvn-consent-management.dev-flutterwave.com/cms/BvnConsent?session=MWNkNDI4ZWYtMjgwNy00ZjA1LWE5NzUtNzUyZGUyZDRjZWQz', - reference: 'FLW71DC60942BAD76D2BD5B4E' - } - }, + data: { currency: 'NGN', available_balance: 1000 } + } }); - var payload = { - bvn: "12347832211", - firstname: "Lyra", - lastname: "Balacqua", - redirect_url: "https://example-url.company.com" - }; - - var resp = await miscInstance.bvn(payload); - - expect(resolveInitBVNSuccessStub).to.have.been.calledOnce; - expect(resolveInitBVNSuccessStub).to.have.been.calledOnceWith(payload); - - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('message', 'Bvn verification initiated'); - expect(resp.body).to.have.property('data'); + const payload = { currency: 'NGN' }; + const resp = await miscInstance.bal_currency(payload); - expect(resp.body.data).to.have.property('reference'); - expect(resp.body.data).to.have.property('url'); + expect(requestStub).to.have.been.calledOnce; + expect(resp.status).to.equal('success'); }); - it('should verify BVN consent and return success message', async function () { + it('should successfully verify BVN consent (Covers rave.verifybvn.js)', async function () { this.timeout(10000); - const resolveVerifyBVNSuccessStub = sinon.stub(miscInstance, 'verifybvn').resolves({ + const requestStub = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success', message: 'Bvn details fetched', - data: { - first_name: 'Lyra', - last_name: 'Balacqua', - status: 'INITIATED', - reference: 'FLW71DC60942BAD76D2BD5B4E', - callback_url: null, - bvn_data: null, - created_at: '2024-02-16T08:28:10.000Z' - } - }, + data: { reference: 'FLW71DC60942' } + } }); - var payload = { - reference: "FLW71DC60942BAD76D2BD5B4E" + const payload = { + reference: "FLW71DC60942" }; - var resp = await miscInstance.verifybvn(payload); - - expect(resolveVerifyBVNSuccessStub).to.have.been.calledOnce; - expect(resolveVerifyBVNSuccessStub).to.have.been.calledOnceWith(payload); + const resp = await miscInstance.verifybvn(payload); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('message', 'Bvn details fetched'); - expect(resp.body).to.have.property('data'); + expect(requestStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); }); - it('should verify resolve bank account details', async function () { + it('should successfully fetch all wallet balances (Covers rave.bal.js)', async function () { this.timeout(10000); - const resolveAccountSuccessStub = sinon - .stub(miscInstance, 'verify_Account') - .resolves({ - body: { - status: 'success', - message: 'Account details fetched', - data: { - account_number: '0690000032', - account_name: 'Pastor Bright', - }, - }, - }); - - var payload = { - account_number: '0690000032', - account_bank: '044', - }; - - var resp = await miscInstance.verify_Account(payload); - // console.log(resp); - - expect(resolveAccountSuccessStub).to.have.been.calledOnce; - expect(resolveAccountSuccessStub).to.have.been.calledOnceWith(payload); + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + data: [{ currency: 'NGN', available_balance: 2000 }] + } + }); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + // Passing an empty object to satisfy handleEmptyFetch(data, ...) + const resp = await miscInstance.bal({}); - expect(resp.body.data).to.have.property('account_number'); - expect(resp.body.data).to.have.property('account_name'); + expect(requestStub).to.have.been.calledOnce; + expect(resp.data[0]).to.have.property('currency', 'NGN'); }); - - it('should fetch a balance by currency', async function () { + + it('should successfully initiate BVN consent (Covers 100% of rave.bvn.js)', async function () { this.timeout(10000); - const fetchBalanceByCurrencySuccessStub = sinon - .stub(miscInstance, 'bal_currency') - .resolves({ - body: { - status: 'success', - message: 'Wallet balance fetched', - data: { - currency: 'NGN', - available_balance: 4988877.82, - ledger_balance: 21072145.6 - } - }, - }); + const initiateBVNStub = sinon.stub(ravebase, 'request').resolves({ + // CRITICAL: The service destructures { body }, so the stub MUST have it + body: { + status: 'success', + message: 'Bvn verification initiated', + data: { + url: 'https://nibss-bvn-consent.flutterwave.com/cms/BvnConsent?session=MWNkNDI4ZWY', + reference: 'FLW71DC60942BAD76D2BD5B4E' + } + } + }); - var payload = { - currency: 'NGN', + // Ensure payload matches initiateBVNSchema requirements + const payload = { + bvn: "12347832211", + firstname: "Lyra", + lastname: "Balacqua", + redirect_url: "https://example-url.company.com" }; - var resp = await miscInstance.bal_currency(payload); - // console.log(resp); - - expect(fetchBalanceByCurrencySuccessStub).to.have.been.calledOnce; - expect(fetchBalanceByCurrencySuccessStub).to.have.been.calledOnceWith(payload); + const resp = await miscInstance.bvn(payload); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + expect(initiateBVNStub).to.have.been.calledOnce; - expect(resp.body.data).to.have.property('currency'); - expect(resp.body.data).to.have.property('available_balance'); - expect(resp.body.data).to.have.property('ledger_balance'); + // Asserting on resp directly proves the code reached the 'return response' line + expect(resp).to.have.property('status', 'success'); + expect(resp.data).to.have.property('reference'); }); }); diff --git a/test/rave.momo.test.js b/test/rave.momo.test.js index 438569a..b8ac5e0 100644 --- a/test/rave.momo.test.js +++ b/test/rave.momo.test.js @@ -34,7 +34,7 @@ describe('#Rave Mobile Money', function () { it('should successfully charge GHS MoMo ', async function () { this.timeout(10000); - const createGHSMoMo = sinon.stub(momoInstance, 'ghana').resolves({ + const createGHSMoMo = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success', message: 'Charge initiated', @@ -54,24 +54,138 @@ describe('#Rave Mobile Money', function () { currency: 'GHS', network: 'VODAFONE', email: 'JoeBloggs@acme.co', - tx_ref: 'HGHYGIHIKU', + tx_ref: 'HGHYGIHIKU' }; var resp = await momoInstance.ghana(payload); expect(createGHSMoMo).to.have.been.calledOnce; - expect(createGHSMoMo).to.have.been.calledOnceWith(payload); + expect(resp).to.have.property('status', 'success'); + expect(resp.meta).to.have.property('authorization'); + expect(resp.meta.authorization).to.have.property('redirect'); + }); + + it('should successfully charge Mpesa ', async function () { + this.timeout(10000); + + const createKESMoMo = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 4193428, + tx_ref: 'test987', + flw_ref: '2993238342', + device_fingerprint: 'N/A', + amount: 10, + charged_amount: 10, + app_fee: 0.29, + merchant_fee: 0, + processor_response: 'Successful', + auth_model: 'LIPA_MPESA', + currency: 'KES', + ip: '::127.0.0.1', + narration: 'FLW-PBF MPESA Transaction ', + status: 'pending', + auth_url: 'N/A', + payment_type: 'mpesa', + fraud_status: 'ok', + charge_type: 'normal', + created_at: '2023-03-10T02:25:16.000Z', + account_id: 20937, + customer: { + id: 1998111, + phone_number: '25454709929220', + name: 'Yolande Aglaé', + email: 'stefan.wexler@hotmail.eu', + created_at: '2023-03-10T02:25:16.000Z', + }, + }, + }, + }); + + var payload = { + tx_ref: 'test987', + amount: '10', + currency: 'KES', + email: 'stefan.wexler@hotmail.eu', + phone_number: '25454709929220', + fullname: 'Yolande Aglaé Colbert' + }; + + var resp = await momoInstance.mpesa(payload); + + expect(createKESMoMo).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); + expect(resp.data).to.have.property('payment_type'); + expect(resp.data.auth_model).to.eq('LIPA_MPESA'); + }); + + it('should validate phone number for GHS MoMo ', async function () { + this.timeout(10000); + + const createGHSMoMo = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + meta: { + authorization: { + redirect: + 'https://ravemodal-dev.herokuapp.com/captcha/verify/83940:dede0352930befaac522ca71e969f0e2', + mode: 'redirect', + }, + }, + }, + }); + + var payload = { + phone_number: 'hjdfhjfdjhdf', + amount: 1500, + currency: 'GHS', + network: 'VODAFONE', + email: 'JoeBloggs@acme.co', + tx_ref: 'HGHYGIHIKU' + }; + + await expect(momoInstance.ghana(payload)).to.be.rejectedWith('phone number should be digits'); + expect(createGHSMoMo).to.not.have.been.called; + }); + + it('should validate network for GHS MoMo ', async function () { + this.timeout(10000); + + const createGHSMoMo = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + meta: { + authorization: { + redirect: + 'https://ravemodal-dev.herokuapp.com/captcha/verify/83940:dede0352930befaac522ca71e969f0e2', + mode: 'redirect', + }, + }, + }, + }); - expect(resp.body).to.have.property('status', 'success'); + var payload = { + phone_number: '12121212121', + amount: 1500, + currency: 'GHS', + network: 'VIFA', + email: 'JoeBloggs@acme.co', + tx_ref: 'HGHYGIHIKU' + }; - expect(resp.body.meta).to.have.property('authorization'); - expect(resp.body.meta.authorization).to.have.property('redirect'); + await expect(momoInstance.ghana(payload)).to.be.rejectedWith('Only MTN, AIRTELTIGO, and VODAFONE are valid for GHS.'); + expect(createGHSMoMo).to.not.have.been.called; }); it('should successfully charge Mpesa ', async function () { this.timeout(10000); - const createKESMoMo = sinon.stub(momoInstance, 'mpesa').resolves({ + const createKESMoMo = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success', message: 'Charge initiated', @@ -111,27 +225,79 @@ describe('#Rave Mobile Money', function () { tx_ref: 'test987', amount: '10', currency: 'KES', + network:'AIRTEL', email: 'stefan.wexler@hotmail.eu', phone_number: '25454709929220', - fullname: 'Yolande Aglaé Colbert', + fullname: 'Yolande Aglaé Colbert' }; var resp = await momoInstance.mpesa(payload); expect(createKESMoMo).to.have.been.calledOnce; - expect(createKESMoMo).to.have.been.calledOnceWith(payload); + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); + expect(resp.data).to.have.property('payment_type'); + expect(resp.data.auth_model).to.eq('LIPA_MPESA'); + }); + + it('should successfully validate network for charge Mpesa ', async function () { + this.timeout(10000); + + const createKESMoMo = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 4193428, + tx_ref: 'test987', + flw_ref: '2993238342', + device_fingerprint: 'N/A', + amount: 10, + charged_amount: 10, + app_fee: 0.29, + merchant_fee: 0, + processor_response: 'Successful', + auth_model: 'LIPA_MPESA', + currency: 'KES', + ip: '::127.0.0.1', + narration: 'FLW-PBF MPESA Transaction ', + status: 'pending', + auth_url: 'N/A', + payment_type: 'mpesa', + fraud_status: 'ok', + charge_type: 'normal', + created_at: '2023-03-10T02:25:16.000Z', + account_id: 20937, + customer: { + id: 1998111, + phone_number: '25454709929220', + name: 'Yolande Aglaé', + email: 'stefan.wexler@hotmail.eu', + created_at: '2023-03-10T02:25:16.000Z', + }, + }, + }, + }); + + var payload = { + tx_ref: 'test987', + network: 'VIFA', + amount: '10', + currency: 'KES', + email: 'stefan.wexler@hotmail.eu', + phone_number: '25454709929220', + fullname: 'Yolande Aglaé Colbert' + }; - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); - expect(resp.body.data).to.have.property('payment_type'); - expect(resp.body.data.auth_model).to.eq('LIPA_MPESA'); + await expect(momoInstance.mpesa(payload)).to.be.rejectedWith('Only SAFARICOM and AIRTEL are valid for KES.'); + expect(createKESMoMo).to.not.have.been.called; }); it('should successfully charge RWF MoMo ', async function () { this.timeout(10000); - const createRWFMoMo = sinon.stub(momoInstance, 'rwanda').resolves({ + const createRWFMoMo = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success', message: 'Charge initiated', @@ -150,26 +316,56 @@ describe('#Rave Mobile Money', function () { order_id: 'USS_URG_893982923s2323', amount: '10', currency: 'RWF', + network:'MTN', email: 'stefan.wexler@hotmail.eu', phone_number: '054709929220', - fullname: 'Yolande Aglaé Colbert', + fullname: 'Yolande Aglaé Colbert' }; var resp = await momoInstance.rwanda(payload); expect(createRWFMoMo).to.have.been.calledOnce; - expect(createRWFMoMo).to.have.been.calledOnceWith(payload); + expect(resp).to.have.property('status', 'success'); + expect(resp.meta).to.have.property('authorization'); + expect(resp.meta.authorization).to.have.property('redirect'); + }); - expect(resp.body).to.have.property('status', 'success'); + it('should validate network for RWF MoMo charge ', async function () { + this.timeout(10000); - expect(resp.body.meta).to.have.property('authorization'); - expect(resp.body.meta.authorization).to.have.property('redirect'); - }); + const createRWFMoMo = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + meta: { + authorization: { + redirect: + 'https://ravemodal-dev.herokuapp.com/captcha/verify/83941:9a08f472e33cd311c17351a4e1497ca2', + mode: 'redirect', + }, + }, + }, + }); + var payload = { + tx_ref: 'test654', + order_id: 'USS_URG_893982923s2323', + amount: '10', + network: "MT", + currency: 'RWF', + email: 'stefan.wexler@hotmail.eu', + phone_number: '054709929220', + fullname: 'Yolande Aglaé Colbert' + }; + + await expect(momoInstance.rwanda(payload)).to.be.rejectedWith('Only MTN and AIRTEL are valid for RWF'); + expect(createRWFMoMo).to.not.have.been.called; + }); + it('should successfully charge UGX MoMo ', async function () { this.timeout(10000); - const createUGXMoMo = sinon.stub(momoInstance, 'uganda').resolves({ + const createUGXMoMo = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success', message: 'Charge initiated', @@ -202,18 +398,52 @@ describe('#Rave Mobile Money', function () { var resp = await momoInstance.uganda(payload); expect(createUGXMoMo).to.have.been.calledOnce; - expect(createUGXMoMo).to.have.been.calledOnceWith(payload); + expect(resp).to.have.property('status', 'success'); + expect(resp.meta).to.have.property('authorization'); + expect(resp.meta.authorization).to.have.property('redirect'); + }); + + it('should validate network charge UGX MoMo ', async function () { + this.timeout(10000); - expect(resp.body).to.have.property('status', 'success'); + const createUGXMoMo = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + meta: { + authorization: { + redirect: + 'https://ravemodal-dev.herokuapp.com/captcha/verify/83942:3c49de4a49e18edeceb0d84717b00f11', + mode: 'redirect', + }, + }, + }, + }); - expect(resp.body.meta).to.have.property('authorization'); - expect(resp.body.meta.authorization).to.have.property('redirect'); + var payload = { + tx_ref: 'test456', + amount: '150', + currency: 'UGX', + voucher: '128373', + network: 'UGN', + email: 'stefan.wexler@hotmail.eu', + phone_number: '054709929220', + fullname: 'Yolande Aglaé Colbert', + client_ip: '154.123.220.1', + device_fingerprint: '62wd23423rq324323qew1', + meta: { + flightID: '213213AS', + } + }; + + await expect(momoInstance.uganda(payload)).to.be.rejectedWith('Only MTN and AIRTEL are valid for UGX.'); + expect(createUGXMoMo).to.not.have.been.called; }); - it('should successfully charge XAF MoMo ', async function () { + it('should successfully charge XAF MoMo', async function () { this.timeout(10000); - const createXAFMoMo = sinon.stub(momoInstance, 'franco_phone').resolves({ + const createXAFMoMo = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success', message: 'Charge initiated', @@ -256,26 +486,76 @@ describe('#Rave Mobile Money', function () { country: 'CM', email: 'stefan.wexler@hotmail.eu', phone_number: '23700000020', - fullname: 'Yolande Aglaé Colbert', + fullname: 'Yolande Aglaé Colbert' }; var resp = await momoInstance.franco_phone(payload); - // console.log(resp); expect(createXAFMoMo).to.have.been.calledOnce; - expect(createXAFMoMo).to.have.been.calledOnceWith(payload); + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); + expect(resp.data).to.have.property('payment_type'); + expect(resp.data.payment_type).to.eq('mobilemoneysn'); + }); + + it('should validate network for XAF MoMo ', async function () { + this.timeout(10000); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); + const createXAFMoMo = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 4193429, + tx_ref: 'test321', + flw_ref: 'JFIX8206716784151202', + device_fingerprint: 'N/A', + amount: 10, + charged_amount: 10, + app_fee: 0.25, + merchant_fee: 0, + processor_response: 'Transaction in progress', + auth_model: 'AUTH', + currency: 'XAF', + ip: '::127.0.0.1', + narration: 'Flutterwave Developers', + status: 'pending', + payment_type: 'mobilemoneysn', + fraud_status: 'ok', + charge_type: 'normal', + created_at: '2023-03-10T02:25:18.000Z', + account_id: 20937, + customer: { + id: 1998112, + phone_number: '23700000020', + name: 'Yolande Aglaé', + email: 'stefan.wexler@hotmail.eu', + created_at: '2023-03-10T02:25:18.000Z', + }, + }, + meta: { authorization: { mode: 'callback', redirect_url: null } }, + }, + }); - expect(resp.body.data).to.have.property('payment_type'); - expect(resp.body.data.payment_type).to.eq('mobilemoneysn'); + var payload = { + tx_ref: 'test321', + amount: '10', + currency: 'XAF', + network: "NWW", + country: 'CM', + email: 'stefan.wexler@hotmail.eu', + phone_number: '23700000020', + fullname: 'Yolande Aglaé Colbert' + }; + + await expect(momoInstance.franco_phone(payload)).to.be.rejectedWith('Only MTN and ORANGEMONEY are valid for XAF.'); + expect(createXAFMoMo).to.not.have.been.called; }); it('should successfully charge ZMW MoMo ', async function () { this.timeout(10000); - const createZMWMoMo = sinon.stub(momoInstance, 'zambia').resolves({ + const createZMWMoMo = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success', message: 'Charge initiated', @@ -302,23 +582,58 @@ describe('#Rave Mobile Money', function () { device_fingerprint: '62wd23423rq324323qew1', meta: { flightID: '213213AS', - }, + } }; var resp = await momoInstance.zambia(payload); expect(createZMWMoMo).to.have.been.calledOnce; - expect(createZMWMoMo).to.have.been.calledOnceWith(payload); + expect(resp).to.have.property('status', 'success'); + expect(resp.meta).to.have.property('authorization'); + expect(resp.meta.authorization).to.have.property('redirect'); + }); - expect(resp.body).to.have.property('status', 'success'); + it('should validate network for ZMW MoMo charge ', async function () { + this.timeout(10000); - expect(resp.body.meta).to.have.property('authorization'); - expect(resp.body.meta.authorization).to.have.property('redirect'); + const createZMWMoMo = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + meta: { + authorization: { + redirect: + 'https://ravemodal-dev.herokuapp.com/captcha/verify/83943:39fe383196e9bf34ee5e407f39508b8b', + mode: 'redirect', + }, + }, + }, + }); + + var payload = { + tx_ref: 'test123', + amount: '150', + currency: 'ZMW', + order_id: 'URF_MMGH_1585323540079_5981535', + network: 'TN', + email: 'stefan.wexler@hotmail.eu', + phone_number: '054709929220', + fullname: 'Yolande Aglaé Colbert', + client_ip: '154.123.220.1', + device_fingerprint: '62wd23423rq324323qew1', + meta: { + flightID: '213213AS', + } + }; + + await expect(momoInstance.zambia(payload)).to.be.rejectedWith('Only MTN, AIRTEL, and ZAMTEL are valid for ZMW.'); + expect(createZMWMoMo).to.not.have.been.called; }); + it('should successfully charge TZS MoMo ', async function () { this.timeout(10000); - const createTZSMoMo = sinon.stub(momoInstance, 'tanzania').resolves({ + const createTZSMoMo = sinon.stub(ravebase, 'request').resolves({ body: { status: 'success', message: 'Charge initiated', @@ -366,18 +681,245 @@ describe('#Rave Mobile Money', function () { device_fingerprint: '62wd23423rq324323qew1', meta: { flightID: '213213AS', - }, + } }; var resp = await momoInstance.tanzania(payload); expect(createTZSMoMo).to.have.been.calledOnce; - expect(createTZSMoMo).to.have.been.calledOnceWith(payload); + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('message', 'Charge initiated'); + expect(resp.data).to.have.property('currency', 'TZS'); + expect(resp.data).to.have.property('customer'); + }); + + it('should validate wrong network for TZS charge MoMo ', async function () { + this.timeout(10000); + + const createTZSMoMo = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 976392302, + tx_ref: 'MC-158523s09v5050e8', + flw_ref: 'SWWD88181689192176819143', + device_fingerprint: '62wd23423rq324323qew1', + amount: 150, + charged_amount: 150, + app_fee: 1000, + merchant_fee: 0, + processor_response: + 'request successful 20230712200256022250 Payment Request has been Accepted Successfully Waiting for Confirmation', + auth_model: 'MOBILEMONEY', + currency: 'TZS', + ip: '154.123.220.1', + narration: 'Adekunle Odujoko', + status: 'pending', + payment_type: 'mobilemoneytz', + fraud_status: 'ok', + charge_type: 'normal', + created_at: '2023-07-12T20:02:56.000Z', + account_id: 1834035, + customer: { + id: 617886609, + phone_number: '0782835136', + name: 'Yolande Aglaé', + email: 'user@example.com', + created_at: '2023-07-12T20:02:56.000Z', + }, + }, + }, + }); + + var payload = { + tx_ref: 'MC-158523s09v5050e8', + amount: '150', + currency: 'TZS', + network: 'Halo', + email: 'user@example.com', + phone_number: '0782835136', + fullname: 'Yolande Aglaé Colbert', + client_ip: '154.123.220.1', + device_fingerprint: '62wd23423rq324323qew1', + meta: { + flightID: '213213AS', + } + }; + + await expect(momoInstance.tanzania(payload)).to.be.rejectedWith('Only HALOPESA, AIRTEL, TIGO, and VODACOM are valid for TZS.'); + expect(createTZSMoMo).to.not.have.been.called; + }); + + it('should successfully charge XAF MoMo ', async function () { + this.timeout(10000); + + const createXAFMoMo = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 4193429, + tx_ref: 'test321', + flw_ref: 'JFIX8206716784151202', + device_fingerprint: 'N/A', + amount: 10, + charged_amount: 10, + app_fee: 0.25, + merchant_fee: 0, + processor_response: 'Transaction in progress', + auth_model: 'AUTH', + currency: 'XAF', + ip: '::127.0.0.1', + narration: 'Flutterwave Developers', + status: 'pending', + payment_type: 'mobilemoneysn', + fraud_status: 'ok', + charge_type: 'normal', + created_at: '2023-03-10T02:25:18.000Z', + account_id: 20937, + customer: { + id: 1998112, + phone_number: '23700000020', + name: 'Yolande Aglaé', + email: 'stefan.wexler@hotmail.eu', + created_at: '2023-03-10T02:25:18.000Z', + }, + }, + meta: { authorization: { mode: 'callback', redirect_url: null } }, + }, + }); + + var payload = { + tx_ref: 'test321', + amount: '10', + network: 'MTN', + currency: 'XAF', + country: 'CM', + email: 'stefan.wexler@hotmail.eu', + phone_number: '23700000020', + fullname: 'Yolande Aglaé Colbert' + }; + + var resp = await momoInstance.franco_phone(payload); + + expect(createXAFMoMo).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); + expect(resp.data).to.have.property('payment_type'); + expect(resp.data.payment_type).to.eq('mobilemoneysn'); + }); + + it('should successfully charge XOF MoMo ', async function () { + this.timeout(10000); + + const createXOFMoMo = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 4193429, + tx_ref: 'test321', + flw_ref: 'JFIX8206716784151202', + device_fingerprint: 'N/A', + amount: 10, + charged_amount: 10, + app_fee: 0.25, + merchant_fee: 0, + processor_response: 'Transaction in progress', + auth_model: 'AUTH', + currency: 'XOF', + ip: '::127.0.0.1', + narration: 'Flutterwave Developers', + status: 'pending', + payment_type: 'mobilemoneysn', + fraud_status: 'ok', + charge_type: 'normal', + created_at: '2023-03-10T02:25:18.000Z', + account_id: 20937, + customer: { + id: 1998112, + phone_number: '23700000020', + name: 'Yolande Aglaé', + email: 'stefan.wexler@hotmail.eu', + created_at: '2023-03-10T02:25:18.000Z', + }, + }, + meta: { authorization: { mode: 'callback', redirect_url: null } }, + }, + }); + + var payload = { + tx_ref: 'test321', + amount: '10', + network: 'MTN', + currency: 'XOF', + country: 'BF', + email: 'stefan.wexler@hotmail.eu', + phone_number: '23700000020', + fullname: 'Yolande Aglaé Colbert' + }; + + var resp = await momoInstance.franco_phone(payload); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('message', 'Charge initiated'); + expect(createXOFMoMo).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('data'); + expect(resp.data).to.have.property('payment_type'); + expect(resp.data.payment_type).to.eq('mobilemoneysn'); + }); + + it('should validate network for XOF MoMo ', async function () { + this.timeout(10000); + + const createXOFMoMo = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Charge initiated', + data: { + id: 4193429, + tx_ref: 'test321', + flw_ref: 'JFIX8206716784151202', + device_fingerprint: 'N/A', + amount: 10, + charged_amount: 10, + app_fee: 0.25, + merchant_fee: 0, + processor_response: 'Transaction in progress', + auth_model: 'AUTH', + currency: 'XOF', + ip: '::127.0.0.1', + narration: 'Flutterwave Developers', + status: 'pending', + payment_type: 'mobilemoneysn', + fraud_status: 'ok', + charge_type: 'normal', + created_at: '2023-03-10T02:25:18.000Z', + account_id: 20937, + customer: { + id: 1998112, + phone_number: '23700000020', + name: 'Yolande Aglaé', + email: 'stefan.wexler@hotmail.eu', + created_at: '2023-03-10T02:25:18.000Z', + }, + }, + meta: { authorization: { mode: 'callback', redirect_url: null } }, + }, + }); - expect(resp.body.data).to.have.property('currency', 'TZS'); - expect(resp.body.data).to.have.property('customer'); + var payload = { + tx_ref: 'test321', + amount: '10', + currency: 'XOF', + network: "NWW", + country: 'BF', + email: 'stefan.wexler@hotmail.eu', + phone_number: '23700000020', + fullname: 'Yolande Aglaé Colbert' + }; + + await expect(momoInstance.franco_phone(payload)).to.be.rejectedWith('Only WAVE, MTN, and ORANGEMONEY are valid for XOF.'); + expect(createXOFMoMo).to.not.have.been.called; }); -}); +}); \ No newline at end of file diff --git a/test/rave.otp.test.js b/test/rave.otp.test.js index c286061..9e1614c 100644 --- a/test/rave.otp.test.js +++ b/test/rave.otp.test.js @@ -1,7 +1,6 @@ var otp = require('../lib/rave.otps'); var base = require('../lib/rave.base'); - -var Promise = require('bluebird'); +// var Promise = require('bluebird'); var mocha = require('mocha'); var chai = require('chai'); var expect = chai.expect; @@ -15,13 +14,12 @@ const sinonChai = require('sinon-chai'); chai.use(chaiAsPromised); chai.use(sinonChai); -describe('#Rave OTP', function () { +describe('#Rave OTP Coverage', function () { const public_key = process.env.PUBLIC_KEY; const secret_key = process.env.SECRET_KEY; const ravebase = new base(public_key, secret_key); let otpInstance; - let otpStub; beforeEach(() => { otpInstance = new otp(ravebase); @@ -34,8 +32,8 @@ describe('#Rave OTP', function () { it('should generate OTP and return success message', async function () { this.timeout(10000); - const generateOTPSuccessStub = sinon.stub(otpInstance, 'create').resolves({ - body: { + const generateOTPSuccessStub = sinon.stub(ravebase, 'request').resolves({ + body: { // The service extracts this 'body' status: 'success', message: 'OTP generated successfully', data: [ @@ -44,18 +42,12 @@ describe('#Rave OTP', function () { reference: 'CF-BARTER-20230305031441503636', otp: '1495545', expiry: '2023-03-05T03:19:41.8110726+00:00', - }, - { - medium: 'whatsapp', - reference: 'CF-BARTER-20230305031443536582', - otp: '1495545', - expiry: '2023-03-05T03:19:43.4362097+00:00', - }, + } ], }, }); - var payload = { + const payload = { length: 7, customer: { name: 'Kazan', @@ -65,50 +57,37 @@ describe('#Rave OTP', function () { sender: 'Test Sender', send: true, medium: ['email', 'whatsapp'], - expiry: 5, + expiry: 5 }; - var resp = await otpInstance.create(payload); - // console.log(resp); + const resp = await otpInstance.create(payload); expect(generateOTPSuccessStub).to.have.been.calledOnce; - expect(generateOTPSuccessStub).to.have.been.calledOnceWith(payload); - - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); - expect(resp.body.message).to.eq('OTP generated successfully'); - - expect(resp.body.data[0]).to.have.property('medium'); - expect(resp.body.data[0]).to.have.property('reference'); - expect(resp.body.data[0]).to.have.property('expiry'); + expect(resp).to.have.property('status', 'success'); + expect(resp.message).to.eq('OTP generated successfully'); + expect(resp.data[0]).to.have.property('medium'); }); it('should validate OTP and return success message', async function () { this.timeout(10000); - const validateOTPSuccessStub = sinon - .stub(otpInstance, 'validate') - .resolves({ - body: { - status: 'success', - message: 'Otp Authenticated successfully', - data: null, - }, - }); - - var payload = { + const validateOTPSuccessStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Otp Authenticated successfully', + data: null, + }, + }); + + const payload = { reference: 'CF-BARTER-20230305031441503636', otp: '1495545', }; - var resp = await otpInstance.validate(payload); - // console.log(resp); + const resp = await otpInstance.validate(payload); expect(validateOTPSuccessStub).to.have.been.calledOnce; - expect(validateOTPSuccessStub).to.have.been.calledOnceWith(payload); - - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); - expect(resp.body.message).to.eq('Otp Authenticated successfully'); + expect(resp).to.have.property('status', 'success'); + expect(resp.message).to.eq('Otp Authenticated successfully'); }); -}); +}); \ No newline at end of file diff --git a/test/rave.payment-plan.test.js b/test/rave.payment-plan.test.js index d77bc56..3efac70 100644 --- a/test/rave.payment-plan.test.js +++ b/test/rave.payment-plan.test.js @@ -1,7 +1,7 @@ const PaymentPlan = require('../lib/rave.payment_plan'); var base = require('../lib/rave.base'); -var Promise = require('bluebird'); +// var Promise = require('bluebird'); var mocha = require('mocha'); var chai = require('chai'); var expect = chai.expect; @@ -15,303 +15,124 @@ const sinonChai = require('sinon-chai'); chai.use(chaiAsPromised); chai.use(sinonChai); -describe('#Rave Payment-plan', function () { +describe('#Rave Payment-plan Coverage', function () { const public_key = process.env.PUBLIC_KEY; const secret_key = process.env.SECRET_KEY; - const ravebase = new base(public_key, secret_key); + let ravebase; let paymentPlanInstance; - let paymentPlanStub; beforeEach(() => { - paymentPlanInstance = new PaymentPlan(ravebase) + ravebase = new base(public_key, secret_key); + paymentPlanInstance = new PaymentPlan(ravebase); }); afterEach(() => { sinon.restore(); }); - it('should update a payment plan', async function () { - this.timeout(10000); + it('should create a payment plan (Covers rave.create.js)', async function () { + this.timeout(10000); - const updatePaymentPlanStub = sinon - .stub(paymentPlanInstance, 'update') - .resolves({ + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { // SDK services destructure { body } status: 'success', - message: 'Payment plan updated', - data: { - id: 34185, - name: 'A sample KES monthly plan', - plan_token: 'rpp_2f711270c4de5c2393d3', - status: 'active', - currency: 'NGN', - amount: 0, - duration: 12, - interval: 'monthly', - created_at: '2023-03-15T00:34:50.000Z' - } - }) - - var payload = { - id: "34185", - name: "A sample KES monthly plan", - status: "active" - }; - var resp = await paymentPlanInstance.update(payload); - expect(updatePaymentPlanStub).to.have.been.calledOnce; - - expect(resp).to.have.property('status', 'success'); - expect(resp).to.have.property('message', 'Payment plan updated'); - expect(resp).to.have.property('data'); - - expect(resp.data).to.have.property('id', 34185); - expect(resp.data).to.have.property('name', 'A sample KES monthly plan'); - expect(resp.data).to.have.property('status', 'active'); + message: 'Payment plan created', + data: { id: 52045, status: 'active' } + } }); - it("should create a payment plan", async function () { - this.timeout(10000); + const payload = { + amount: "100", + name: "SDK test Plan", + interval: "monthly" + }; - const createPaymentPlanStub = sinon - .stub(paymentPlanInstance, 'create') - .resolves({ - status: 'success', - message: 'Payment plan created', - data: { - id: 52045, - name: 'SDK test Plan', - amount: '100', - interval: 'monthly', - duration: 0, - status: 'active', - currency: 'NGN', - plan_token: 'rpp_cd93e2fa88e065b960bf', - created_at: '2023-07-04T09:16:42.000Z' - } - }) + const resp = await paymentPlanInstance.create(payload); + expect(requestStub).to.have.been.calledOnce; + expect(resp.status).to.equal('success'); + }); - var payload = { - amount: "100", - name: "SDK test Plan", - interval: "monthly" - }; - var resp = await paymentPlanInstance.create(payload); - expect(createPaymentPlanStub).to.have.been.calledOnce; + it('should update a payment plan (Covers rave.update.js)', async function () { + this.timeout(10000); - expect(resp).to.have.property('status', 'success'); - expect(resp).to.have.property('message', 'Payment plan created'); - expect(resp).to.have.property('data'); - - expect(resp.data).to.have.property('id'); - expect(resp.data).to.have.property('currency'); - expect(resp.data).to.have.property('status', 'active'); + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Payment plan updated', + data: { id: 34185, status: 'active' } + } }); - it('should get all payment plans', async function () { - this.timeout(10000); + const payload = { + id: "34185", + name: "Updated Plan Name", + status: "active" + }; - const getAllPaymentPlanStub = sinon - .stub(paymentPlanInstance, 'get_all') - .resolves({ - status: 'success', - message: 'Payment plans fetched', - meta: { page_info: { total: 106, current_page: 1, total_pages: 11 } }, - data: [ - { - id: 37829, - name: 'testing', - amount: 100, - interval: 'weekly', - duration: 4, - status: 'cancelled', - currency: 'NGN', - plan_token: 'rpp_0aac3d0aa3f0c18565c0', - created_at: '2023-06-14T11:57:26.000Z' - }, - { - id: 37828, - name: 'API monitor', - amount: 100, - interval: 'monthly', - duration: 0, - status: 'cancelled', - currency: 'NGN', - plan_token: 'rpp_27ea9a4ef60dae5e7fc8', - created_at: '2023-06-14T11:48:26.000Z' - }, - { - id: 36074, - name: 'the akhlm postman plan 2', - amount: 100, - interval: 'monthly', - duration: 5, - status: 'cancelled', - currency: 'NGN', - plan_token: 'rpp_134b476d4d1f9181a219', - created_at: '2023-05-22T14:15:05.000Z' - }, - { - id: 34444, - name: 'postman plan 0', - amount: 100, - interval: 'monthly', - duration: 8, - status: 'cancelled', - currency: 'NGN', - plan_token: 'rpp_89b6c76c0394af004913', - created_at: '2023-03-26T21:05:26.000Z' - }, - { - id: 34185, - name: 'A sample KES monthly plan', - amount: 0, - interval: 'monthly', - duration: 12, - status: 'active', - currency: 'NGN', - plan_token: 'rpp_2f711270c4de5c2393d3', - created_at: '2023-03-15T00:34:50.000Z' - }, - { - id: 33857, - name: 'PHPSDK Test Plan', - amount: 1600, - interval: 'monthly', - duration: 1, - status: 'cancelled', - currency: 'NGN', - plan_token: 'rpp_0d087b5a4644f78252ad', - created_at: '2023-03-03T14:29:37.000Z' - }, - { - id: 33856, - name: 'PHPSDK Test Plan', - amount: 1600, - interval: 'monthly', - duration: 1, - status: 'cancelled', - currency: 'NGN', - plan_token: 'rpp_570f8a07e6c190a91f4f', - created_at: '2023-03-03T14:29:36.000Z' - }, - { - id: 33855, - name: 'PHPSDK Test Plan', - amount: 1600, - interval: 'monthly', - duration: 1, - status: 'cancelled', - currency: 'NGN', - plan_token: 'rpp_4f2926d1f3d1a56915a1', - created_at: '2023-03-03T14:29:33.000Z' - }, - { - id: 33850, - name: 'PHPSDK Test Plan', - amount: 1600, - interval: 'monthly', - duration: 1, - status: 'cancelled', - currency: 'NGN', - plan_token: 'rpp_98a4ebf8b3dfc7f494a1', - created_at: '2023-03-03T14:13:47.000Z' - }, - { - id: 33849, - name: 'PHPSDK Test Plan', - amount: 1600, - interval: 'monthly', - duration: 1, - status: 'cancelled', - currency: 'NGN', - plan_token: 'rpp_b6cc20cb87ee9a64d879', - created_at: '2023-03-03T14:13:39.000Z' - } - ] - }) + const resp = await paymentPlanInstance.update(payload); - var payload = { - }; - var resp = await paymentPlanInstance.get_all(payload); - expect(getAllPaymentPlanStub).to.have.been.calledOnce; + expect(requestStub).to.have.been.calledOnce; + expect(resp.data).to.have.property('status', 'active'); + }); - expect(resp).to.have.property('status', 'success'); - expect(resp).to.have.property('message', 'Payment plans fetched'); - expect(resp).to.have.property('meta'); - expect(resp).to.have.property('data'); - - expect(resp.data[0]).to.have.property('id'); - expect(resp.data[0]).to.have.property('status'); + it('should cancel a payment plan (Covers rave.cancel.js)', async function () { + this.timeout(10000); + + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Payment plan cancelled', + data: { id: 34185, status: 'cancelled' } + } }); - it('should get a payment plan', async function () { - this.timeout(10000); + const payload = { id: "34185" }; + const resp = await paymentPlanInstance.cancel(payload); + + expect(requestStub).to.have.been.calledOnce; + expect(resp.message).to.equal('Payment plan cancelled'); + }); - const getAPaymentPlanStub = sinon - .stub(paymentPlanInstance, 'get_plan') - .resolves({ - status: 'success', - message: 'Payment plan fetched', - data: { - id: 52045, - name: 'SDK test Plan', - amount: 100, - interval: 'monthly', - duration: 0, - status: 'active', - currency: 'NGN', - plan_token: 'rpp_cd93e2fa88e065b960bf', - created_at: '2023-07-04T09:16:42.000Z' - } - }) + it('should get a single payment plan (Covers rave.retrieve.js)', async function () { + this.timeout(10000); - var payload = { - id: "52045" - }; - var resp = await paymentPlanInstance.get_plan(payload); - expect(getAPaymentPlanStub).to.have.been.calledOnce; + const getAPaymentPlanStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Payment plan fetched', + data: { + id: 52045, + name: 'SDK test Plan', + status: 'active' + } + } + }); - expect(resp).to.have.property('status', 'success'); - expect(resp).to.have.property('message', 'Payment plan fetched'); - expect(resp).to.have.property('data'); - - expect(resp.data).to.have.property('id'); - expect(resp.data).to.have.property('status'); - }); + const payload = { + id: "52045" + }; - it('should cancel a payment plan', async function () { - this.timeout(10000); + const resp = await paymentPlanInstance.get_plan(payload); - const cancelPaymentPlanStub = sinon - .stub(paymentPlanInstance, 'cancel') - .resolves({ - status: 'success', - message: 'Payment plan cancelled', - data: { - id: 34185, - name: 'A sample KES monthly plan', - plan_token: 'rpp_2f711270c4de5c2393d3', - status: 'cancelled', - currency: 'NGN', - amount: 0, - duration: 12, - interval: 'monthly', - created_at: '2023-03-15T00:34:50.000Z' - } - }) + expect(getAPaymentPlanStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + expect(resp.data).to.have.property('id', 52045); + }); - var payload = { - id: "34185" - }; - var resp = await paymentPlanInstance.cancel(payload); - expect(cancelPaymentPlanStub).to.have.been.calledOnce; + it('should get all payment plans (Covers rave.retrieve-all.js)', async function () { + this.timeout(10000); - expect(resp).to.have.property('status', 'success'); - expect(resp).to.have.property('message', 'Payment plan cancelled'); - expect(resp).to.have.property('data'); - - expect(resp.data).to.have.property('id'); - expect(resp.data).to.have.property('status', 'cancelled'); - }); + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Payment plans fetched', + data: [{ id: 37829 }] + } + }); + + const resp = await paymentPlanInstance.get_all({}); + expect(resp.status).to.equal('success'); + }); }); \ No newline at end of file diff --git a/test/rave.security.test.js b/test/rave.security.test.js new file mode 100644 index 0000000..bf73c80 --- /dev/null +++ b/test/rave.security.test.js @@ -0,0 +1,47 @@ +const security = require('../lib/security'); +const expect = require('chai').expect; + +describe('Security Utilities (node-forge)', function () { + + // FEnsure this is defined INSIDE the describe block or the test + const pubkey = process.env.PUBLIC_KEY; + const seckey = process.env.SECRET_KEY; + + it('should generate a correct encryption key (getEncryptionKey)', function () { + // We pass the variable here + const key = security.getEncryptionKey(seckey); + + expect(key).to.be.a('string'); + expect(key).to.have.lengthOf(24); + }); + + it('should encrypt text using node-forge (encrypt)', function () { + const text = JSON.stringify({ card: '5531886652142950' }); + + // We must generate the key first to pass it to encrypt + const key = security.getEncryptionKey(seckey); + const encrypted = security.encrypt(key, text); + + expect(encrypted).to.be.a('string'); + expect(encrypted).to.not.equal(text); + }); + + it('should generate a SHA256 integrity hash (getIntegrityHash)', function () { + const data = { + amount: 500, + currency: 'NGN', + tx_ref: 'MC-12345', + integrity_hash: 'old-hash-to-be-skipped' // This triggers the 'if' branch + }; + + + const hash = security.getIntegrityHash(data, pubkey, seckey); + + // Assertions + expect(hash).to.be.a('string'); + expect(hash).to.have.lengthOf(64); // SHA256 hex strings are 64 characters + + // Proves it is a hex string (0-9, a-f) + expect(hash).to.match(/^[a-f0-9]+$/); + }); +}); \ No newline at end of file diff --git a/test/rave.settlements.test.js b/test/rave.settlements.test.js index 5edc15c..d7989c1 100644 --- a/test/rave.settlements.test.js +++ b/test/rave.settlements.test.js @@ -1,29 +1,21 @@ -var settlement = require('../lib/rave.settlements'); -var base = require('../lib/rave.base'); - -var Promise = require('bluebird'); -var mocha = require('mocha'); -var chai = require('chai'); -var expect = chai.expect; -var chaiAsPromised = require('chai-as-promised'); - -var dotenv = require('dotenv').config(); - +const settlement = require('../lib/rave.settlements'); +const base = require('../lib/rave.base'); +const chai = require('chai'); +const expect = chai.expect; const sinon = require('sinon'); -const sinonChai = require('sinon-chai'); +const chaiAsPromised = require('chai-as-promised'); chai.use(chaiAsPromised); -chai.use(sinonChai); -describe('#Rave Settlements', function () { +describe('#Rave Settlements Coverage', function () { const public_key = process.env.PUBLIC_KEY; const secret_key = process.env.SECRET_KEY; - const ravebase = new base(public_key, secret_key); + let ravebase; let settlementInstance; - let settlementStub; beforeEach(() => { + ravebase = new base(public_key, secret_key); settlementInstance = new settlement(ravebase); }); @@ -31,417 +23,39 @@ describe('#Rave Settlements', function () { sinon.restore(); }); - it('should return all settlements ', async function () { + it('should successfully fetch all settlements (Covers rave.retrieve-all.js)', async function () { this.timeout(10000); - const fetchSettlementSuccessStub = sinon - .stub(settlementInstance, 'fetch_all') - .resolves({ - body: { - status: 'success', - message: 'Settlements fetched', - meta: { - page_info: { - total: 6, - current_page: 1, - total_pages: 1, - page_size: 20, - }, - }, - data: [ - { - id: 41748, - account_id: 73362, - merchant_name: 'Earth Gang', - merchant_email: 'selma.m0ckaham@flutterwavego.com', - settlement_account: '0031318432', - bank_code: '063', - transaction_date: '2020-01-01T04:00:00.000Z', - due_date: '2020-01-01T04:00:00.000Z', - processed_date: null, - status: 'completed', - is_local: true, - currency: 'NGN', - gross_amount: 122000, - app_fee: 2108, - merchant_fee: 0, - chargeback: 0, - refund: 0, - stampduty_charge: 0, - net_amount: 119892, - transaction_count: 8, - processor_ref: null, - disburse_ref: 'INSTANT_SETTLEMENT', - disburse_message: null, - channel: 'web', - destination: 'autowallet', - fx_data: null, - flag_message: null, - meta: [ - 908260, 908790, 908232, 908274, 909038, 908246, 908290, 908216, - ], - refund_meta: null, - chargeback_meta: null, - source_bankcode: null, - created_at: '2020-01-02T01:30:00.000Z', - }, - { - id: 41642, - account_id: 73362, - merchant_name: 'Earth Gang', - merchant_email: 'selma.m0ckaham@flutterwavego.com', - settlement_account: '0031318432', - bank_code: '063', - transaction_date: '2019-12-31T04:00:00.000Z', - due_date: '2019-12-31T04:00:00.000Z', - processed_date: null, - status: 'completed', - is_local: true, - currency: 'NGN', - gross_amount: 24000, - app_fee: 936, - merchant_fee: 0, - chargeback: 0, - refund: 0, - stampduty_charge: 0, - net_amount: 23064, - transaction_count: 12, - processor_ref: null, - disburse_ref: 'INSTANT_SETTLEMENT', - disburse_message: null, - channel: 'web', - destination: 'autowallet', - fx_data: null, - flag_message: null, - meta: [ - 908041, 908197, 908082, 908015, 908111, 908053, 908087, 908034, - 908174, 908067, 907967, 908103, - ], - refund_meta: null, - chargeback_meta: null, - source_bankcode: null, - created_at: '2020-01-01T01:30:00.000Z', - }, - { - id: 41497, - account_id: 73362, - merchant_name: 'Earth Gang', - merchant_email: 'selma.m0ckaham@flutterwavego.com', - settlement_account: '0031318432', - bank_code: '063', - transaction_date: '2019-12-30T04:00:00.000Z', - due_date: '2019-12-30T04:00:00.000Z', - processed_date: null, - status: 'completed', - is_local: true, - currency: 'NGN', - gross_amount: 50800, - app_fee: 950, - merchant_fee: 0, - chargeback: 0, - refund: 0, - stampduty_charge: 0, - net_amount: 49850, - transaction_count: 5, - processor_ref: null, - disburse_ref: 'RV3E18675549F6A0', - disburse_message: null, - channel: 'web', - destination: 'autowallet', - fx_data: null, - flag_message: null, - meta: [906256, 906358, 906301, 906362, 906319], - refund_meta: null, - chargeback_meta: null, - source_bankcode: null, - created_at: '2019-12-31T01:30:00.000Z', - }, - { - id: 41440, - account_id: 73362, - merchant_name: 'Earth Gang', - merchant_email: 'selma.m0ckaham@flutterwavego.com', - settlement_account: '0031318432', - bank_code: '063', - transaction_date: '2019-12-30T01:00:00.000Z', - due_date: '2019-12-31T00:00:00.000Z', - processed_date: null, - status: 'pending', - is_local: true, - currency: 'NGN', - gross_amount: 30620, - app_fee: 620, - merchant_fee: 0, - chargeback: 0, - refund: 20114, - stampduty_charge: 0, - net_amount: 9886, - transaction_count: 3, - processor_ref: null, - disburse_ref: null, - disburse_message: null, - channel: 'web', - destination: 'account', - fx_data: null, - flag_message: null, - meta: [906262, 906336, 906339], - refund_meta: [4169, 4848, 4852, 4855, 4868, 4869, 4870, 4989], - chargeback_meta: [], - source_bankcode: null, - created_at: '2019-12-31T01:00:01.000Z', - }, - { - id: 40018, - account_id: 73362, - merchant_name: 'Earth Gang', - merchant_email: 'selma.m0ckaham@flutterwavego.com', - settlement_account: '0031318432', - bank_code: '063', - transaction_date: '2019-11-28T00:00:00.000Z', - due_date: '2019-11-29T00:00:00.000Z', - processed_date: null, - status: 'pending', - is_local: true, - currency: 'NGN', - gross_amount: 9000, - app_fee: 176, - merchant_fee: 0, - chargeback: 0, - refund: 0, - stampduty_charge: 0, - net_amount: 8824, - transaction_count: 1, - processor_ref: null, - disburse_ref: null, - disburse_message: null, - channel: 'web', - destination: 'account', - fx_data: null, - flag_message: null, - meta: [854542], - refund_meta: [], - chargeback_meta: [], - source_bankcode: null, - created_at: '2019-11-29T11:50:38.000Z', - }, - { - id: 38813, - account_id: 73362, - merchant_name: 'Earth Gang', - merchant_email: 'selma.m0ckaham@flutterwavego.com', - settlement_account: '0031318432', - bank_code: '063', - transaction_date: '2019-10-10T01:00:00.000Z', - due_date: '2019-10-11T19:12:49.000Z', - processed_date: null, - status: 'pending', - is_local: true, - currency: 'NGN', - gross_amount: 2826.96, - app_fee: 2508.96, - merchant_fee: 0, - chargeback: 0, - refund: 0, - stampduty_charge: 0, - net_amount: 318, - transaction_count: 2, - processor_ref: null, - disburse_ref: null, - disburse_message: null, - channel: null, - destination: 'account', - fx_data: null, - flag_message: null, - meta: null, - refund_meta: [], - chargeback_meta: null, - source_bankcode: null, - created_at: '2019-10-11T01:00:01.000Z', - }, - ], - }, - }); - - var payload = { - page: '1', - }; - - var resp = await settlementInstance.fetch_all(payload); - // console.log(resp); + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Settlements fetched', + data: [{ id: 41748 }] + } + }); - expect(fetchSettlementSuccessStub).to.have.been.calledOnce; - expect(fetchSettlementSuccessStub).to.have.been.calledOnceWith(payload); + const payload = { page: "1" }; + const resp = await settlementInstance.fetch_all(payload); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); - expect(resp.body).to.have.property('meta'); - - expect(resp.body.data[0]).to.have.property('id'); - expect(resp.body.data[0]).to.have.property('settlement_account'); - expect(resp.body.data[0]).to.have.property('gross_amount'); - expect(resp.body.data[0]).to.have.property('status'); - expect(resp.body.data[0]).to.have.property('merchant_name'); + expect(requestStub).to.have.been.calledOnce; + expect(resp.status).to.equal('success'); }); - it('should return a particular settlement ', async function () { + it('should successfully fetch a single settlement (Covers rave.retrieve.js)', async function () { this.timeout(10000); - const fetchSingleSettlementSuccessStub = sinon - .stub(settlementInstance, 'fetch') - .resolves({ - body: { - status: 'success', - message: 'Settlement fetched', - data: { - id: 41497, - account_id: 73362, - merchant_name: 'Earth Gang', - merchant_email: 'selma.m0ckaham@flutterwavego.com', - settlement_account: '0031318432', - bank_code: '063', - transaction_date: '2019-12-30T04:00:00.000Z', - due_date: '2019-12-30T04:00:00.000Z', - processed_date: null, - status: 'completed', - is_local: 1, - currency: 'NGN', - gross_amount: 50800, - app_fee: 950, - merchant_fee: 0, - chargeback: 0, - refund: 0, - stampduty_charge: 0, - net_amount: 49850, - transaction_count: 5, - processor_ref: null, - disburse_ref: 'RV3E18675549F6A0', - disburse_message: null, - channel: 'web', - destination: 'autowallet', - fx_data: null, - flag_message: null, - meta: '[906256,906358,906301,906362,906319]', - refund_meta: null, - chargeback_meta: null, - source_bankcode: null, - created_at: '2019-12-31T01:30:00.000Z', - transactions: [ - { - customer_email: 'h0vkard@flw.ext', - flw_ref: 'FLW-MOCK-RECURR-42b3daee9f470127dacd19560533f3a6', - tx_ref: 'Rave-Pages017117571060', - id: 984411, - charged_amount: 10140, - app_fee: 190, - merchant_fee: 0, - stampduty_charge: 0, - settlement_amount: 9950, - status: 'successful', - payment_entity: 'card', - transaction_date: '2019-12-30', - currency: 'NGN', - card_locale: 'LOCAL', - rrn: 'N/A', - subaccount_settlement: 0, - }, - { - customer_email: 'h0vkard@flw.ext', - flw_ref: 'FLW-MOCK-RECURR-c536481525f02f76409892f517a16300', - tx_ref: 'Rave-Pages017117571060', - id: 984456, - charged_amount: 10140, - app_fee: 190, - merchant_fee: 0, - stampduty_charge: 0, - settlement_amount: 9950, - status: 'successful', - payment_entity: 'card', - transaction_date: '2019-12-30', - currency: 'NGN', - card_locale: 'LOCAL', - rrn: 'N/A', - subaccount_settlement: 0, - }, - { - customer_email: 'h0vkard@flw.ext', - flw_ref: 'FLW-MOCK-RECURR-d22d0ec0955047e9648bec46da40c987', - tx_ref: 'Rave-Pages017117571060', - id: 984474, - charged_amount: 10190, - app_fee: 190, - merchant_fee: 0, - stampduty_charge: 0, - settlement_amount: 10000, - status: 'successful', - payment_entity: 'card', - transaction_date: '2019-12-30', - currency: 'NGN', - card_locale: 'LOCAL', - rrn: 'N/A', - subaccount_settlement: 0, - }, - { - customer_email: 'h0vkard@flw.ext', - flw_ref: 'FLW-MOCK-RECURR-e55f863f14a95816e0939e7c4625ee43', - tx_ref: 'Rave-Pages017117571060', - id: 984513, - charged_amount: 10190, - app_fee: 190, - merchant_fee: 0, - stampduty_charge: 0, - settlement_amount: 10000, - status: 'successful', - payment_entity: 'card', - transaction_date: '2019-12-30', - currency: 'NGN', - card_locale: 'LOCAL', - rrn: 'N/A', - subaccount_settlement: 0, - }, - { - customer_email: 'h0vkard@flw.ext', - flw_ref: 'FLW-MOCK-RECURR-6100e5300876cef2270b2e31bc9cc16e', - tx_ref: 'Rave-Pages017117571060', - id: 984517, - charged_amount: 10140, - app_fee: 190, - merchant_fee: 0, - stampduty_charge: 0, - settlement_amount: 9950, - status: 'successful', - payment_entity: 'card', - transaction_date: '2019-12-30', - currency: 'NGN', - card_locale: 'LOCAL', - rrn: 'N/A', - subaccount_settlement: 0, - }, - ], - }, - }, - }); - - var payload = { - currency: 'NGN', - amount: 4000, - reference: 'RVEBLS-F81CEEEE8218-73362', - }; - - var resp = await settlementInstance.fetch(payload); - - expect(fetchSingleSettlementSuccessStub).to.have.been.calledOnce; - expect(fetchSingleSettlementSuccessStub).to.have.been.calledOnceWith( - payload, - ); + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Settlement fetched', + data: { id: '41497' } + } + }); - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body).to.have.property('data'); - expect(resp.body.data).to.have.property('transactions'); + const payload = { id: '41497' }; + const resp = await settlementInstance.fetch(payload); - expect(resp.body.data).to.have.property('id'); - expect(resp.body.data).to.have.property('settlement_account'); - expect(resp.body.data).to.have.property('gross_amount'); - expect(resp.body.data).to.have.property('status'); - expect(resp.body.data).to.have.property('merchant_name'); + expect(requestStub).to.have.been.calledOnce; + expect(resp.data.id).to.equal('41497'); }); -}); +}); \ No newline at end of file diff --git a/test/rave.subscriptions.test.js b/test/rave.subscriptions.test.js index 0546678..c7a680d 100644 --- a/test/rave.subscriptions.test.js +++ b/test/rave.subscriptions.test.js @@ -15,15 +15,16 @@ const sinonChai = require('sinon-chai'); chai.use(chaiAsPromised); chai.use(sinonChai); -describe('#Rave Subscriptions', function () { +describe('#Rave Subscriptions Coverage', function () { const public_key = process.env.PUBLIC_KEY; const secret_key = process.env.SECRET_KEY; - const ravebase = new base(public_key, secret_key); + let ravebase; let subscriptionInstance; - let subscriptionStub; beforeEach(() => { + // Fresh instantiation to ensure clean coverage state + ravebase = new base(public_key, secret_key); subscriptionInstance = new Subscriptions(ravebase); }); @@ -31,34 +32,72 @@ describe('#Rave Subscriptions', function () { sinon.restore(); }); - // it.only('should return a single subscription ', async function () { - // this.timeout(10000); - - // var payload = { - // email: 'cornelius@flutterwavego.com', - // }; - // var resp = await subscriptionInstance.get(payload); - // console.log(resp); - // return expect(resp).to.have.property('data'); - // }); - - // it("should cancel a user's subscription", async function () { - // this.timeout(10000); - - // var payload = { - // id: '11343', - // }; - // var resp = await subscriptionInstance.cancel(payload); - // return expect(resp).to.have.property('message'); - // }); - - // it('should activate Subscription', async function () { - // this.timeout(10000); - - // var payload = { - // id: '11343', - // }; - // var resp = await subscriptionInstance.activate(payload); - // return expect(resp).to.have.property('data'); - // }); + it('should successfully retrieve all subscriptions', async function () { + this.timeout(10000); + + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Subscriptions fetched', + data: [{ id: 11343, status: 'active' }] + } + }); + + const resp = await subscriptionInstance.fetch_all(); + + expect(requestStub).to.have.been.calledOnce; + expect(resp.status).to.equal('success'); + }); + + it('should successfully retrieve a single subscription', async function () { + this.timeout(10000); + + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + data: [{ id: 11343, email: 'test@flutterwavego.com' }] + } + }); + + const payload = { email: 'test@flutterwavego.com' }; + const resp = await subscriptionInstance.get(payload); + + expect(requestStub).to.have.been.calledOnce; + expect(resp.status).to.equal('success'); + }); + + it('should successfully cancel a subscription', async function () { + this.timeout(10000); + + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Subscription cancelled' + } + }); + + const payload = { id: '11343' }; + const resp = await subscriptionInstance.cancel(payload); + + expect(requestStub).to.have.been.calledOnce; + expect(resp.message).to.equal('Subscription cancelled'); + }); + + it('should successfully activate a subscription', async function () { + this.timeout(10000); + + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Subscription activated' + } + }); + + const payload = { id: '11343' }; + const resp = await subscriptionInstance.activate(payload); + + expect(requestStub).to.have.been.calledOnce; + expect(resp.status).to.equal('success'); + }); }); + diff --git a/test/rave.tokenization.test.js b/test/rave.tokenization.test.js new file mode 100644 index 0000000..1a854a2 --- /dev/null +++ b/test/rave.tokenization.test.js @@ -0,0 +1,287 @@ +var tokenization = require('../lib/rave.tokenized'); +var base = require('../lib/rave.base'); + +var Promise = require('bluebird'); +var mocha = require('mocha'); +var chai = require('chai'); +var expect = chai.expect; +var chaiAsPromised = require('chai-as-promised'); + +var dotenv = require('dotenv').config(); + +const sinon = require('sinon'); +const sinonChai = require('sinon-chai'); + +chai.use(chaiAsPromised); +chai.use(sinonChai); + + +describe('#Rave Tokenization Coverage', function () { + const public_key = process.env.PUBLIC_KEY; + const secret_key = process.env.SECRET_KEY; + const ravebase = new base(public_key, secret_key); + + let tokenInstance; + + beforeEach(() => { + tokenInstance = new tokenization(ravebase); + }); + + afterEach(() => { + sinon.restore(); + }); + + it('should create a tokenzied charge', async function () { + this.timeout(10000); + + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: "success", + message: "Charge successful", + data: { + id: 277036749, + tx_ref: "new-live-test", + flw_ref: "FLW253481676", + redirect_url: "http://127.0.0", + device_fingerprint: "N/A", + amount: 300, + charged_amount: 300, + app_fee: 4.2, + merchant_fee: 0, + processor_response: "APPROVED", + auth_model: "noauth", + currency: "NGN", + ip: "123.456.543", + narration: "pstmn charge", + status: "successful", + payment_type: "card", + created_at: "2020-06-01T01:31:59.000Z", + account_id: 17321, + } + } + }) + + const payload = { + token: "flw-t1nf-f9b3bf384cd30d6fca42b6df9d27bd2f-m03k", + email: "user@example.com", + currency: "NGN", + country: "NG", + amount: 2000, + narration: "For Testing Purpose", + tx_ref: "tokenized-c-001" + } + const resp = await tokenInstance.charge(payload); + + expect(requestStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('message', 'Charge successful'); + + }); + + it('should retrieve the status of a tokenzied charge', async function () { + this.timeout(10000); + + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: "success", + message: "Bulk charge fetched", + data: [ + { + id: 1017001, + tx_ref: "akhlm-pstmn-blkchrge-xx6", + flw_ref: "FLW-M03K-bbd148a9569b709882da8437e123ba61", + device_fingerprint: "N/A", + amount: 3000, + currency: "NGN", + charged_amount: 3042, + app_fee: 42, + merchant_fee: 0, + processor_response: "Approved", + auth_model: "noauth", + ip: "pstmn", + narration: "Earth Gang", + status: "successful", + payment_type: "card", + created_at: "2020-01-19T21:46:30.000Z", + customer_name: "Yemi Desola", + customer_email: "user@example.com", + account_id: 73362, + batch_id: 131, + amount_settled: 3000 + } + ] + } + }) + + const payload = { + bulk_id: "1017001" + } + + const resp = await tokenInstance.fetch_bulk(payload); + + expect(requestStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('message', 'Bulk charge fetched'); + expect(resp.data[0]).to.have.property('status', 'successful'); + }); + + it('should create a bulk tokenzied charge', async function () { + this.timeout(10000); + + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: "success", + message: "Bulk charge successful", + data: { + id: 130, + created_at: "2020-01-19T21:43:39.000Z", + approver: "N/A" + } + } + }) + + const payload = { + retry_strategy: { + retry_interval: 120, + retry_amount_variable: 60, + retry_attempt_variable: 2, + last_attempt_variable: 50 + }, + bulk_data: [{ + currency: "NGN", + token: "flw-t1nf-53e91845cddd82c9f7113e6529e23ab7-m03w", + country: "NG", + amount: 2000, + tx_ref: "tokenized-c-001", + email: "user@example.com", + ip: "190.233.222.1" + }], + title: "Staff salary for June" + } + const resp = await tokenInstance.bulk(payload); + + expect(requestStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('message', 'Bulk charge successful'); + expect(resp.data).to.have.property('id', 130); + + + }); + + it('should retrieve the charge transactions of a bulk tokenzied charge', async function () { + this.timeout(10000); + + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: "success", + message: "Bulk charge transactions fetched", + data: [ + { + tx_ref: "akhlm-pstmn-blkchrg-xx6", + id: "1017000", + flw_ref: "FLW-M03K-7544dc8d157ca763bbcf864a24906f93", + device_fingerprint: "N/A", + amount: 3500, + currency: "NGN", + charged_amount: 3549, + app_fee: 49, + merchant_fee: 0, + processor_response: "Approved", + auth_model: "noauth", + ip: "pstmn", + narration: "Kizito Akhilome", + status: "successful", + payment_type: "card", + created_at: "2020-01-19T21:46:29.000Z", + account_id: "73362", + amount_settled: 3450, + card: { + expiry: "09/22", + type: "MASTERCARD", + country: "NIGERIA NG", + issuer: "MASTERCARD CREDIT", + first_6digits: "553188", + last_4digits: "2950" + }, + customer: { + id: "252759", + email: "user@example.com", + phone_number: "0813XXXXXXX", + name: "Kizito Akhilome", + created_at: "2020-01-15T13:26:24.000Z" + } + } + ] + } + }) + + const payload = { + bulk_id: "1017001" + } + + const resp = await tokenInstance.fetch_charge_transactions(payload); + + expect(requestStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('message', 'Bulk charge transactions fetched'); + expect(resp.data[0]).to.have.property('status', 'successful'); + }); + + it('should update a card token', async function () { + this.timeout(10000); + + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: "success", + message: "Token details updated", + data: { + email: "ken@example.com", + fullname: "Kendrick Graham", + phone_number: "0813XXXXXX22", + created_at: "2020-06-11T16:25:44.000Z" + } + } + }); + + const payload = { + email: "user@example.com", + full_name: "Kendrick Graham", + token: "flw-t1nf-f9b3bf384cd30d6fca42b6df9d27bd2f-xxxx", + phone_number: "0800000000" + }; + const resp = await tokenInstance.update_token(payload); + + expect(requestStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('message', 'Token details updated'); + + }); + + it('should validate phone number when updating a card token', async function () { + this.timeout(10000); + + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: "success", + message: "Token details updated", + data: { + email: "ken@example.com", + fullname: "Kendrick Graham", + phone_number: "ddffddffddf2", + created_at: "2020-06-11T16:25:44.000Z" + } + } + }); + + const payload = { + email: "user@example.com", + full_name: "Kendrick Graham", + token: "flw-t1nf-f9b3bf384cd30d6fca42b6df9d27bd2f-xxxx", + phone_number: "dfddfffdf" + }; + await expect(tokenInstance.update_token(payload)).to.be.rejectedWith('phone number should be digits'); + expect(requestStub).to.not.have.been.called; + + }); + +}); \ No newline at end of file diff --git a/test/rave.transactions.test.js b/test/rave.transactions.test.js index e457c40..89d9dae 100644 --- a/test/rave.transactions.test.js +++ b/test/rave.transactions.test.js @@ -15,13 +15,13 @@ const sinonChai = require('sinon-chai'); chai.use(chaiAsPromised); chai.use(sinonChai); -describe('#Rave Transactions', function () { + +describe('#Rave Transactions Coverage', function () { const public_key = process.env.PUBLIC_KEY; const secret_key = process.env.SECRET_KEY; const ravebase = new base(public_key, secret_key); - let trxInstance; - // let momoStub; + let trxInstance; beforeEach(() => { trxInstance = new transactions(ravebase); @@ -34,219 +34,143 @@ describe('#Rave Transactions', function () { it('should successfully verify a payment', async function () { this.timeout(10000); - const verifyTransactionStub = sinon - .stub(trxInstance, 'verify') - .resolves({ + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { // SDK service files often destructure { body } status: 'success', message: 'Transaction fetched successfully', - data: { - id: 4186265, - tx_ref: '64020445daeec1677853765', - flw_ref: '5014276956431677853766795', - device_fingerprint: 'N/A', - amount: 2000, - currency: 'NGN', - charged_amount: 2000, - app_fee: 28, - merchant_fee: 0, - processor_response: 'success', - auth_model: 'AUTH', - ip: '52.209.154.143', - narration: 'Flutterwave Developers', - status: 'successful', - payment_type: 'bank_transfer', - created_at: '2023-03-03T14:29:33.000Z', - account_id: 20937, - meta: { - originatoraccountnumber: '123*******90', - originatorname: 'JOHN DOE', - bankname: 'Access Bank', - originatoramount: 'N/A' - }, - amount_settled: 1972, - customer: { - id: 1882300, - name: 'Olaobaju Jesulayomi', - phone_number: '+2349067985011', - email: 'developers@flutterwavego.com', - created_at: '2022-11-08T13:38:03.000Z' - } - } - }) - - var payload = { - id: '4186265', - }; + data: { id: 4186265, status: 'successful' } + } + }); - var resp = await trxInstance.verify(payload); - expect(verifyTransactionStub).to.have.been.calledOnce; + const payload = { id: 4186265 }; + const resp = await trxInstance.verify(payload); + expect(requestStub).to.have.been.calledOnce; expect(resp).to.have.property('status', 'success'); - expect(resp).to.have.property('data'); expect(resp).to.have.property('message', 'Transaction fetched successfully'); - - expect(resp.data).to.have.property('id', 4186265); - expect(resp.data).to.have.property('status'); - expect(resp.data).to.have.property('customer'); - }); - - it('should successfully verify a payment by tx_ref', async function () { +}); + + it('should successfully verify a payment by tx_ref (Covers 100% of rave.verify-by-txref.js)', async function () { this.timeout(10000); - const verifyTransactionbyTxStub = sinon - .stub(trxInstance, 'verify_by_tx') - .resolves({ + const verifyTransactionbyTxStub = sinon.stub(ravebase, 'request').resolves({ + body: { status: 'success', message: 'Transaction fetched successfully', data: { id: 8415006, tx_ref: 'txref-DI0NzMx13', - flw_ref: 'FLW-MOCK-3b10a512c4dae649e580a7e5747cfd2c', - device_fingerprint: '2a4bf5d669b2a0cd4b684ffba8caaae8', - amount: 2500, - currency: 'NGN', - charged_amount: 2500, - app_fee: 35, - merchant_fee: 0, - processor_response: 'Please enter the OTP sent to your mobile number 080****** and email te**@rave**.com', - auth_model: 'NOAUTH', - ip: '54.75.161.64', - narration: 'CARD Transaction ', - status: 'successful', - payment_type: 'card', - created_at: '2025-02-27T18:29:34.000Z', - account_id: 20937, - card: { - first_6digits: '418742', - last_4digits: '4246', - issuer: 'ACCESS BANK PLC DEBIT CLASSIC', - country: 'NIGERIA NG', - type: 'VISA', - token: 'flw-t1nf-937086f0365b7334de60da246def40df-m03k', - expiry: '09/32' - }, - meta: { - __CheckoutInitAddress: 'https://cdpn.io/FlutterwaveEng/fullembedgrid/PoVpKqb?animations=run&forceRefresh=1740680880044&type=embed', - source: 'docs-inline-test', - consumer_mac: '92a3-912ba-1192a' - }, - amount_settled: 2462.37, - customer: { - id: 2362222, - name: 'Ayomide Jimi-Oni', - phone_number: '08100000000', - email: 'test@mailinator.com', - created_at: '2024-02-28T09:51:09.000Z' - } + status: 'successful' } - }) + } + }); - var payload = { + const payload = { tx_ref: 'txref-DI0NzMx13', }; - var resp = await trxInstance.verify_by_tx(payload); - expect(verifyTransactionbyTxStub).to.have.been.calledOnce; + const resp = await trxInstance.verify_by_tx(payload); + expect(verifyTransactionbyTxStub).to.have.been.calledOnce; expect(resp).to.have.property('status', 'success'); - expect(resp).to.have.property('data'); - expect(resp).to.have.property('message', 'Transaction fetched successfully'); - expect(resp.data).to.have.property('tx_ref', "txref-DI0NzMx13"); - expect(resp.data).to.have.property('status'); - expect(resp.data).to.have.property('customer'); }); it('should successfully return transaction events', async function () { this.timeout(10000); - const getTransactionEventStub = sinon - .stub(trxInstance, 'event') - .resolves({ + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { status: 'success', message: 'Transaction events fetched', - data: [ - { - note: 'Launched Mobile Money as initial payment option', - actor: 'customer@customer.com', - object: 'modal', - action: 'launched', - context: 'mobile', - created_at: '2023-06-23T12:24:12.004Z' - }, - { - note: 'Initiated Checkout from https://ravemodal-dev.herokuapp.com/v3/hosted/pay', - actor: 'customer@customer.com', - object: 'modal', - action: 'loaded', - context: 'mobile', - created_at: '2023-06-23T12:24:11.816Z' - }, - { - note: 'Charge request successful - Pending verification', - actor: 'customer@customer.com', - object: 'modal', - action: 'charge request', - context: 'mobile', - created_at: '2023-06-23T12:24:27.880Z' - }, - { - note: 'Transaction Completed!', - actor: 'customer@customer.com', - object: 'TRANSACTION', - action: 'completion', - context: 'mobile', - created_at: '2023-06-23T12:24:41.034Z' - } - ] - }) - - var payload = { - id: '4417681', - }; + data: [{ note: 'Transaction Completed!', action: 'completion' }] + } + }); - var resp = await trxInstance.event(payload); - expect(getTransactionEventStub).to.have.been.calledOnce; - - expect(resp).to.have.property('status', 'success'); - expect(resp).to.have.property('data'); - expect(resp).to.have.property('message', 'Transaction events fetched'); + const payload = { id: 4417681 }; + const resp = await trxInstance.event(payload); + expect(requestStub).to.have.been.calledOnce; expect(resp.data[0]).to.have.property('note'); - expect(resp.data[0]).to.have.property('actor'); }); it('should successfully return transaction fee', async function () { this.timeout(10000); - const getTransactionFeeStub = sinon - .stub(trxInstance, 'fee') - .resolves({ + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { status: 'success', message: 'Charged fee', - data: { - charge_amount: 1000, - fee: 14, - merchant_fee: 0, - flutterwave_fee: 14, - stamp_duty_fee: 0, - currency: 'NGN' - } - }) + data: { charge_amount: 1000, fee: 14 } + } + }); + + const payload = { amount: 1000, currency: "NGN" }; + const resp = await trxInstance.fee(payload); - var payload = { - amount: 1000, - currency: "NGN" + expect(requestStub).to.have.been.calledOnce; + expect(resp.data).to.have.property('fee', 14); + }); + + it('should successfully initiate a refund (Covers rave.refund.js)', async function () { + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Refund processed', + data: { id: '12345', amount: 1000, status: 'completed' } + } + }); + + const payload = { + id: '4186265', + amount: 1000 + }; + + const resp = await trxInstance.refund(payload); + + expect(requestStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + }); + + it('should successfully resend webhooks (Covers rave.resend-hooks.js)', async function () { + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Hook resent successfully' + } + }); + + const payload = { id: 4186265 }; + const resp = await trxInstance.resend_hooks(payload); + + expect(requestStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('message', 'Hook resent successfully'); + + }); + + it('should successfully retrieve all transactions (Covers rave.retrieve.js)', async function () { + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Transactions fetched', + data: [{ id: 1 }, { id: 2 }], + meta: { page_info: { total: 2 } } + } + }); + + const payload = { + from: '2023-01-01', + to: '2023-01-31', + page: '1' }; - var resp = await trxInstance.fee(payload); - expect(getTransactionFeeStub).to.have.been.calledOnce; + const resp = await trxInstance.fetch(payload); + expect(requestStub).to.have.been.calledOnce; expect(resp).to.have.property('status', 'success'); - expect(resp).to.have.property('data'); - expect(resp).to.have.property('message', 'Charged fee'); + expect(resp).to.have.property('message', 'Transactions fetched'); + - expect(resp.data).to.have.property('charge_amount'); - expect(resp.data).to.have.property('fee'); }); -}); +}); \ No newline at end of file diff --git a/test/rave.transfer.test.js b/test/rave.transfer.test.js index 5fa7fb7..bdd783f 100644 --- a/test/rave.transfer.test.js +++ b/test/rave.transfer.test.js @@ -21,7 +21,6 @@ describe('#Rave transfers', function () { const ravebase = new base(public_key, secret_key); let transferInstance; - let transferStub; beforeEach(() => { transferInstance = new transfer(ravebase); @@ -34,33 +33,13 @@ describe('#Rave transfers', function () { it('should create NGN bank transfer', async function () { this.timeout(10000); - const createNGTransferStub = sinon - .stub(transferInstance, 'initiate') - .resolves({ - body: { - status: 'success', - message: 'Transfer Queued Successfully', - data: { - id: 396432, - account_number: '0690000040', - bank_code: '044', - full_name: 'Alexis Sanchez', - created_at: '2023-03-11T01:14:21.000Z', - currency: 'NGN', - debit_currency: 'NGN', - amount: 5500, - fee: 26.875, - status: 'NEW', - reference: 'akhlm-pstmnpyt-rfxxgjlsioens007_PMCKDU_1', - meta: null, - narration: 'Akhlm Pstmn Trnsfr xx007', - complete_message: '', - requires_approval: 0, - is_approved: 1, - bank_name: 'ACCESS BANK NIGERIA', - }, - }, - }); + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Transfer Queued Successfully', + data: { id: 396432, reference: 'akhlm-123', status: 'NEW' }, + }, + }); var payload = { "account_bank": "044", @@ -69,571 +48,178 @@ describe('#Rave transfers', function () { "narration": "Akhlm Pstmn Trnsfr xx007", "currency": "NGN", "reference": "akhlm-pstmnpyt-r02ens007_PMCKDU_1", - "callback_url": "https://www.flutterwave.com/ng/", - "debit_currency": "NGN" }; var resp = await transferInstance.initiate(payload); - // console.log(resp); - expect(createNGTransferStub).to.have.been.calledOnce; - expect(createNGTransferStub).to.have.been.calledOnceWith(payload); + expect(requestStub).to.have.been.calledOnceWith(sinon.match.string, sinon.match(payload)); - expect(resp.body).to.have.property('status', 'success'); + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('message', 'Transfer Queued Successfully'); - expect(resp.body.data).to.have.property('reference'); - expect(resp.body.data.reference).to.eq( - 'akhlm-pstmnpyt-rfxxgjlsioens007_PMCKDU_1', - ); }); - it('should create EUR/GBP bank transfer', async function () { + it('should validate phone number for KES bank transfer', async function () { this.timeout(10000); - const createEUTransferStub = sinon - .stub(transferInstance, 'initiate') - .resolves({ - body: { - status: 'success', - message: 'Transfer Queued Successfully', - data: { - id: 396433, - account_number: 'FOREIGN-ACCOUNT', - bank_code: 'FOREIGN-BANK', - full_name: 'Flutterwave Developers', - created_at: '2023-03-11T01:14:26.000Z', - currency: 'EUR', - amount: 50, - fee: 35, - status: 'NEW', - reference: 'new-intl-eu-test-transferlmworj', - meta: [[Object]], - narration: "Test EU Int'l bank transfers", - complete_message: '', - requires_approval: 0, - is_approved: 1, - bank_name: 'FA-BANK', - }, - }, - }); + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Transfer Queued Successfully', + data: { id: 396432, reference: 'akhlm-123', status: 'NEW' }, + }, + }); var payload = { - amount: 50, - narration: "Test EU Int'l bank transfers", - currency: 'EUR', - reference: 'new-intl-eu-test-transferlmworj', - beneficiary_name: 'Flutterwave Developers', - meta: [ + "amount": 400, + "currency": "KES", + "account_bank": "11", + "account_number": "2332128829", + "otherwise": [ { - AccountNumber: 'DA091983888373BGH', - RoutingNumber: 'BECFDE7HKKX', - SwiftCode: 'BECFDE7HKKX', - BankName: 'LLOYDS BANK', - BeneficiaryName: 'Flutterwave Developers', - BeneficiaryCountry: 'DE', - PostalCode: '80489', - StreetNumber: '31', - StreetName: 'Handelsbank Elsenheimer Str.', - City: 'München', - }, - ], + "sender": "JAMES JOHN", + "sender_country": "GH", + "mobile_number": "erer" + } + ] }; - var resp = await transferInstance.initiate(payload); - - expect(createEUTransferStub).to.have.been.calledOnce; - expect(createEUTransferStub).to.have.been.calledOnceWith(payload); - - expect(resp.body).to.have.property('status', 'success'); - - expect(resp.body.data).to.have.property('reference'); - expect(resp.body.data.reference).to.eq('new-intl-eu-test-transferlmworj'); + await expect(transferInstance.initiate(payload)).to.be.rejectedWith('phone number should be digits'); + expect(requestStub).to.not.have.been.called; }); + - it('should create USD bank transfer', async function () { + it('should validate phone number and go through with KES bank transfer', async function () { this.timeout(10000); - const createUSTransferStub = sinon - .stub(transferInstance, 'initiate') - .resolves({ - body: { - status: 'success', - message: 'Transfer Queued Successfully', - data: { - id: 396434, - account_number: 'FOREIGN-ACCOUNT', - bank_code: 'FOREIGN-BANK', - full_name: 'Flutterwave Developers', - created_at: '2023-03-11T01:14:30.000Z', - currency: 'USD', - amount: 50, - fee: 40, - status: 'NEW', - reference: 'new-intl-test-transfer1374uq', - meta: [[Object]], - narration: "Test Int'l bank transfers", - complete_message: '', - requires_approval: 0, - is_approved: 1, - bank_name: 'FA-BANK', - }, - }, - }); + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Transfer Queued Successfully', + data: { id: 396432, reference: 'akhlm-123', status: 'NEW' }, + }, + }); var payload = { - amount: 50, - narration: "Test Int'l bank transfers", - currency: 'USD', - reference: 'new-intl-test-transfer1374uq', - beneficiary_name: 'Flutterwave Developers', - meta: [ + "amount": 400, + "currency": "KES", + "account_bank": "11", + "account_number": "2332128829", + "otherwise": [ { - AccountNumber: '09182972BH', - RoutingNumber: '0000000002993', - SwiftCode: 'ABJG190', - BankName: 'BANK OF AMERICA, N.A., SAN FRANCISCO, CA', - BeneficiaryName: 'Flutterwave Developers', - BeneficiaryAddress: 'San Francisco, 4 Newton', - BeneficiaryCountry: 'US', - }, - ], + "sender": "JAMES JOHN", + "sender_country": "GH", + "mobile_number": "344343434" + } + ] }; - var resp = await transferInstance.initiate(payload); - expect(createUSTransferStub).to.have.been.calledOnce; - expect(createUSTransferStub).to.have.been.calledOnceWith(payload); - - expect(resp.body).to.have.property('status', 'success'); - - expect(resp.body.data).to.have.property('reference'); - expect(resp.body.data.reference).to.eq('new-intl-test-transfer1374uq'); + expect(requestStub).to.have.been.calledOnceWith(sinon.match.string, sinon.match(payload)); + expect(resp).to.have.property('status', 'success'); }); - it('should create KES transfer', async function () { - this.timeout(10000); - - const createKETransferStub = sinon - .stub(transferInstance, 'initiate') - .resolves({ - body: { - status: 'success', - message: 'Transfer Queued Successfully', - data: { - id: 396435, - account_number: '2540700000000', - bank_code: 'MPS', - full_name: 'Flutterwave Developers', - created_at: '2023-03-11T01:14:35.000Z', - currency: 'KES', - debit_currency: 'NGN', - amount: 50, - fee: 45, - status: 'NEW', - reference: 'mk-902837-jk555', - meta: [[Object]], - narration: 'New transfer', - complete_message: '', - requires_approval: 0, - is_approved: 1, - bank_name: 'FA-BANK', - }, - }, - }); + it('should create bulk transfers (Covers rave.bulk.js)', async function () { + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Bulk transfer queued', + data: { + id: 2013, + created_at: "2020-01-20T16:36:29.000Z", + approver: "N/A" + } + } + }); - var payload = { - account_bank: 'MPS', - account_number: '2540700000000', - amount: 50, - narration: 'New transfer', - currency: 'KES', - reference: 'mk-902837-jk555', - beneficiary_name: 'Flutterwave Developers', - meta: { - sender: 'Obembe Mark', - sender_country: 'US', - mobile_number: '12313131231231', - }, + const payload = { + title: 'Staff Salary', + bulk_data: [ + { account_bank: '044', account_number: '0690000040', amount: 5000, currency: 'ZAR' } + ] }; - var resp = await transferInstance.initiate(payload); - - expect(createKETransferStub).to.have.been.calledOnce; - expect(createKETransferStub).to.have.been.calledOnceWith(payload); + const resp = await transferInstance.bulk(payload); - expect(resp.body).to.have.property('status', 'success'); + expect(requestStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('message', 'Bulk transfer queued'); - expect(resp.body.data).to.have.property('reference'); - expect(resp.body.data.reference).to.eq('mk-902837-jk555'); }); - it('should fetch transfer details', async function () { - this.timeout(10000); - - const fetchTransferStub = sinon - .stub(transferInstance, 'get_a_transfer') - .resolves({ - body: { - status: 'success', - message: 'Transfer fetched', - data: { - id: 396478, - account_number: 'FOREIGN-ACCOUNT', - bank_code: 'FOREIGN-BANK', - full_name: 'Flutterwave Developers', - created_at: '2023-03-12T00:42:44.000Z', - currency: 'EUR', - debit_currency: null, - amount: 50, - fee: 35, - status: 'NEW', - reference: 'new-intl-eu-104', - meta: [[Object]], - narration: "Test EU Int'l bank transfers", - approver: null, - complete_message: '', - requires_approval: 0, - is_approved: 1, - bank_name: 'FA-BANK', - }, - }, - }); - - var payload = { - id: '396478', - }; - - var resp = await transferInstance.get_a_transfer(payload); - - expect(fetchTransferStub).to.have.been.calledOnce; - expect(fetchTransferStub).to.have.been.calledOnceWith(payload); + it('should fetch transfer fee (Covers rave.fee.js)', async function () { + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { + status: 'success', + message: 'Transfer fee fetched', + data: [{ fee: 26.875 }] + } + }); - expect(resp.body).to.have.property('status', 'success'); + const payload = { amount: 5000, currency: 'NGN' }; + const resp = await transferInstance.fee(payload); - expect(resp.body.data).to.have.property('reference'); - expect(resp.body.data.reference).to.eq('new-intl-eu-104'); + expect(requestStub).to.have.been.calledOnce; + expect(resp.data[0]).to.have.property('fee'); }); - it('should fetch all transfers', async function () { - this.timeout(10000); - - const listTransferStub = sinon.stub(transferInstance, 'fetch').resolves({ + it('should retrieve all transfers (Covers rave.retrieve.transfers.js)', async function () { + const requestStub = sinon.stub(ravebase, 'request').resolves({ body: { - "status": "success", - "message": "Transfers fetched", - "meta": { - "page_info": { - "total": 47, - "current_page": 1, - "total_pages": 5 - } - }, - "data": [ - { - "id": 403318, - "account_number": "256782033409", - "bank_code": "MPS", - "full_name": "N/A", - "created_at": "2023-05-22T16:34:49.000Z", - "currency": "UGX", - "debit_currency": null, - "amount": 20, - "fee": 500, - "status": "FAILED", - "reference": "6b76aa8f93bd765c", - "meta": [ - { - "mobile_number": "08109328188" - } - ], - "narration": "Mobile money payout", - "approver": null, - "complete_message": "beneficiary_name is required", - "requires_approval": 0, - "is_approved": 1, - "bank_name": "N/A" - }, - { - "id": 403317, - "account_number": "256782033409", - "bank_code": "MPS", - "full_name": "N/A", - "created_at": "2023-05-22T16:33:13.000Z", - "currency": "UGX", - "debit_currency": null, - "amount": 20, - "fee": 500, - "status": "FAILED", - "reference": "6b3269daa45fa640", - "meta": [ - { - "mobile_number": "08109328188" - } - ], - "narration": "Mobile money payout", - "approver": null, - "complete_message": "beneficiary_name is required", - "requires_approval": 0, - "is_approved": 1, - "bank_name": "N/A" - }, - { - "id": 403047, - "account_number": "1295124", - "bank_code": "wallet", - "full_name": "Michael Onyeforo Jnr", - "created_at": "2023-05-19T12:56:13.000Z", - "currency": "EUR", - "debit_currency": "EUR", - "amount": 1000, - "fee": 0, - "status": "FAILED", - "reference": "TRF-555600071008", - "meta": { - "AccountId": 37782, - "merchant_id": "5758113" - }, - "narration": null, - "approver": null, - "complete_message": "DISBURSE FAILED: You can only spend EUR 100.00 at once", - "requires_approval": 0, - "is_approved": 1, - "bank_name": "wallet" - }, - { - "id": 401090, - "account_number": "28581375", - "bank_code": "wallet", - "full_name": "Trulipay technologies ", - "created_at": "2023-04-26T22:30:12.000Z", - "currency": "UGX", - "debit_currency": "UGX", - "amount": 1000, - "fee": 0, - "status": "FAILED", - "reference": "TRF-282263183180", - "meta": { - "AccountId": 1758777, - "merchant_id": "100756902" - }, - "narration": null, - "approver": null, - "complete_message": "DISBURSE FAILED: You can only spend UGX 100.00 at once", - "requires_approval": 0, - "is_approved": 1, - "bank_name": "wallet" - }, - { - "id": 401083, - "account_number": "28581369", - "bank_code": "wallet", - "full_name": "Trulipay technologies ", - "created_at": "2023-04-26T22:10:27.000Z", - "currency": "GHS", - "debit_currency": "GHS", - "amount": 20000, - "fee": 0, - "status": "FAILED", - "reference": "TRF-546614104664", - "meta": { - "AccountId": 1758777, - "merchant_id": "100756902" - }, - "narration": null, - "approver": null, - "complete_message": "DISBURSE FAILED: You can only spend GHS 1000.00 at once", - "requires_approval": 0, - "is_approved": 1, - "bank_name": "wallet" - }, - { - "id": 398682, - "account_number": "32000713", - "bank_code": "wallet", - "full_name": "Olivier Staff", - "created_at": "2023-03-31T11:52:06.000Z", - "currency": "XAF", - "debit_currency": "XAF", - "amount": 1000000, - "fee": 0, - "status": "FAILED", - "reference": "TRF-180822210828", - "meta": { - "AccountId": 1895433, - "merchant_id": "100872524" - }, - "narration": null, - "approver": null, - "complete_message": "DISBURSE FAILED: A fatal error occured while proccesing your request.", - "requires_approval": 0, - "is_approved": 1, - "bank_name": "wallet" - }, - { - "id": 396933, - "account_number": "0690000032", - "bank_code": "044", - "full_name": "Pastor Bright", - "created_at": "2023-03-15T17:22:57.000Z", - "currency": "NGN", - "debit_currency": "NGN", - "amount": 1222, - "fee": 10.75, - "status": "FAILED", - "reference": "17f18932-5ee8-4c48-a435-3194e2836d0o", - "meta": { - "iWithdrawId": 346, - "iUserId": "63e1f7f0d4cba4854b5fec1b" - }, - "narration": "Kudi Fantasy Withdraw", - "approver": null, - "complete_message": "DISBURSE FAILED: You can only spend XAF 100000000.00 at once", - "requires_approval": 0, - "is_approved": 1, - "bank_name": "ACCESS BANK NIGERIA" - }, - { - "id": 396456, - "account_number": "FOREIGN-ACCOUNT", - "bank_code": "FOREIGN-BANK", - "full_name": "N/A", - "created_at": "2023-03-11T18:16:55.000Z", - "currency": "EUR", - "debit_currency": null, - "amount": 50, - "fee": 35, - "status": "FAILED", - "reference": "new-intl-eu-test-transferlmworj0970450", - "meta": [ - { - "account_number": "FOREIGN-ACCOUNT", - "routing_number": "FOREIGN-BANK", - "sender": "Flutterwave Developers", - "mobile_number": "23480000000000" - } - ], - "narration": "Test EU Int'l bank transfers", - "approver": null, - "complete_message": "beneficiary_name is required", - "requires_approval": 0, - "is_approved": 1, - "bank_name": "N/A" - }, - { - "id": 396435, - "account_number": "2540700000000", - "bank_code": "MPS", - "full_name": "Flutterwave Developers", - "created_at": "2023-03-11T01:14:35.000Z", - "currency": "KES", - "debit_currency": "NGN", - "amount": 50, - "fee": 45, - "status": "FAILED", - "reference": "mk-902837-jk555", - "meta": [ - { - "sender": "Obembe Mark", - "mobile_number": "12313131231231" - } - ], - "narration": "New transfer", - "approver": null, - "complete_message": "DISBURSE FAILED: Unable to obtain user details", - "requires_approval": 0, - "is_approved": 1, - "bank_name": "FA-BANK" - }, - { - "id": 395470, - "account_number": "0690000031", - "bank_code": "044", - "full_name": "Forrest Green", - "created_at": "2023-02-27T21:02:45.000Z", - "currency": "NGN", - "debit_currency": null, - "amount": 100, - "fee": 10.75, - "status": "FAILED", - "reference": "mk-6u54i-jp", - "meta": null, - "narration": null, - "approver": null, - "complete_message": "DISBURSE FAILED: wallet currently restricted. please contact administrator", - "requires_approval": 0, - "is_approved": 1, - "bank_name": "ACCESS BANK NIGERIA" - } - ] - }, + status: 'success', + message: 'Transfers fetched', + data: [{ id: 396432, status: 'SUCCESSFUL' }] + } }); - var payload = { status: 'failed' }; - - var resp = await transferInstance.fetch(payload); - expect(listTransferStub).to.have.been.calledOnce; - expect(listTransferStub).to.have.been.calledOnceWith(payload); + const payload = { status: 'successful' }; + const resp = await transferInstance.fetch(payload); - expect(resp.body).to.have.property('status', 'success'); + expect(requestStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); + expect(resp).to.have.property('message', 'Transfers fetched'); - expect(resp.body.data[0]).to.have.property('reference'); - expect(resp.body.data[0].status).to.eq('FAILED'); }); - it('should fetch transfer fees', async function () { + + it('should successfully initiate interwallet transfers (Covers 100% of rave.wallet.js)', async function () { this.timeout(10000); - const fetchFeeStub = sinon.stub(transferInstance, 'fee').resolves({ + const requestStub = sinon.stub(ravebase, 'request').resolves({ + // We must wrap the result in 'body' so the destructuring succeeds body: { status: 'success', - message: 'Transfer fee fetched', - data: [{ currency: 'NGN', fee_type: 'value', fee: 26.875 }], - }, + message: 'Transfer Queued Successfully', + data: { id: 403047 } + } }); - var payload = { - "amount": "12500", - "currency": "NGN" + // This payload matches the walletTransferSchema exactly + const payload = { + amount: 1000, + currency: 'NGN', + account_bank: 'flutterwave', + account_number: '99992069', + narration: 'Internal wallet trf', + reference: 'ref-' + Date.now(), + debit_currency: 'NGN' }; - var resp = await transferInstance.fee(payload); - // console.log(resp); + const resp = await transferInstance.wallet_to_wallet(payload); - expect(fetchFeeStub).to.have.been.calledOnce; - expect(fetchFeeStub).to.have.been.calledOnceWith(payload); - - expect(resp.body).to.have.property('status', 'success'); - - expect(resp.body.data[0]).to.have.property('fee_type'); - expect(resp.body.data[0]).to.have.property('fee'); + expect(requestStub).to.have.been.calledOnce; + expect(resp).to.have.property('status', 'success'); }); - it('should fetch single transfer details', async function () { - this.timeout(10000); - - const fetchTransferStub = sinon - .stub(transferInstance, 'get_a_transfer') - .resolves({ - body: { - status: 'success', - message: 'Transfer fee fetched', - data: [{ currency: 'NGN', fee_type: 'value', fee: 26.875 }], - }, - }); - - var payload = { - id: '396456', - }; + it('should fetch transfer detail', async function () { + const requestStub = sinon.stub(ravebase, 'request').resolves({ + body: { status: 'success', data: { id: 396478, reference: 'new-intl-eu-104' } }, + }); + var payload = { id: '396478' }; var resp = await transferInstance.get_a_transfer(payload); - // console.log(resp); - - expect(fetchTransferStub).to.have.been.calledOnce; - expect(fetchTransferStub).to.have.been.calledOnceWith(payload); - - expect(resp.body).to.have.property('status', 'success'); - expect(resp.body.data[0]).to.have.property('fee_type'); - expect(resp.body.data[0]).to.have.property('fee'); + expect(requestStub).to.have.been.calledOnce; + expect(resp.data.reference).to.eq('new-intl-eu-104'); }); -}); +}); \ No newline at end of file diff --git a/test/rave.utils.build.test.js b/test/rave.utils.build.test.js new file mode 100644 index 0000000..1e545dd --- /dev/null +++ b/test/rave.utils.build.test.js @@ -0,0 +1,74 @@ +const { expect } = require('chai'); +const joi = require('joi'); +const { enforceRequired, handleEmptyFetch } = require('../utils/build'); // Adjust path +const sinon = require('sinon'); + +describe('Utils Build Coverage', function () { + + describe('enforceRequired()', function () { + + it('should throw error if paramList is not an array (Hits the Red Line)', function () { + const schema = joi.object({ test: joi.string() }); + + expect(() => { + enforceRequired(schema, 'not-an-array'); + }).to.throw('paramList must be an array'); + }); + + it('should successfully map through paramList and return schema', function () { + // Created a dummy Joi schema with some keys + const schema = joi.object({ + name: joi.string(), + email: joi.string() + }); + + // This mock satisfies the internal Joi 'Collection' interface + // needed for schema.keys() to function without crashing. + schema._ids = { + _byKey: { + name: { rules: [] }, + email: { rules: [] } + }, + // These methods allow Joi to 'go through the motions' of updating the schema + clone: function () { return this; }, + reset: function () { return this; }, + get: function (key) { return this._byKey[key]; }, + register: function () { return this; } + }; + + const result = enforceRequired(schema, ['name', 'email']); + + expect(result).to.be.an('object'); + expect(result).to.have.property('_ids'); + }); + }); + + describe('handleEmptyFetch()', function () { + let raveMock; + + beforeEach(() => { + raveMock = { + request: sinon.stub() + }; + }); + + it('should handle undefined param by defaulting to GET', async function () { + raveMock.request.resolves({ body: { status: 'success' } }); + + const result = await handleEmptyFetch(undefined, 'TestCall', 'v3/test', raveMock); + + expect(raveMock.request.calledWith('v3/test', { method: 'GET' })).to.be.true; + expect(result.status).to.equal('success'); + }); + + it('should validate and fetch when param is provided', async function () { + raveMock.request.resolves({ body: { data: [] } }); + const param = { page: '1' }; + + const result = await handleEmptyFetch(param, 'TestCall', 'v3/list', raveMock); + + expect(param.method).to.equal('GET'); + expect(result.data).to.be.an('array'); + }); + }); +}); \ No newline at end of file diff --git a/test/rave.utils.error.test.js b/test/rave.utils.error.test.js new file mode 100644 index 0000000..72b34ce --- /dev/null +++ b/test/rave.utils.error.test.js @@ -0,0 +1,32 @@ +const { expect } = require('chai'); +const { validationError, getErrorMessage } = require('../utils/error'); + +describe('Utils Error Handler Coverage', function () { + + it('should correctly instantiate a validationError', function () { + const msg = 'Test validation error'; + const err = new validationError(msg); + + expect(err).to.be.an.instanceOf(Error); + expect(err.name).to.equal('validationError'); + expect(err.message).to.equal(msg); + expect(err.stack).to.not.be.undefined; // Covers captureStackTrace + }); + + it('should return the message if error is instance of validationError', function () { + const msg = 'Validation failed'; + const err = new validationError(msg); + + const result = getErrorMessage(err); + expect(result).to.equal(msg); // Hits the "if" block + }); + + it('should log the error if it is NOT a validationError', function () { + const msg = 'Generic system crash'; + const err = new Error(msg); // Standard JS Error + + // This hits the "else" block and calls errorLog.error + const result = getErrorMessage(err); + expect(result).to.be.undefined; + }); +}); \ No newline at end of file diff --git a/test/rave.utils.test.js b/test/rave.utils.test.js new file mode 100644 index 0000000..1930d23 --- /dev/null +++ b/test/rave.utils.test.js @@ -0,0 +1,28 @@ +const RaveUtils = require('../utils/rave.utils'); // Adjust path as needed +const { expect } = require('chai'); + +describe('RaveUtils.emptyCheck', function () { + + it('should throw an error when value is empty (Turns the Red Line Green)', function () { + const testMessage = 'Field is required'; + + // We wrap the call in a function so Chai can "catch" the explosion + expect(() => { + RaveUtils.emptyCheck(null, testMessage); + }).to.throw(Error, testMessage); + }); + + it('should NOT throw when a valid value is provided', function () { + expect(() => { + RaveUtils.emptyCheck('Valid Value'); + }).to.not.throw(); + }); + + it('should return default value via initDefaultValue', function () { + const result = RaveUtils.initDefaultValue(null, 'default'); + expect(result).to.equal('default'); + + const existing = RaveUtils.initDefaultValue('exists', 'default'); + expect(existing).to.equal('exists'); + }); +}); \ No newline at end of file diff --git a/test/rave.cards.test.js b/test/rave.virtualcards.test.js similarity index 100% rename from test/rave.cards.test.js rename to test/rave.virtualcards.test.js diff --git a/utils/error.js b/utils/error.js index bdf3920..bc04882 100644 --- a/utils/error.js +++ b/utils/error.js @@ -16,4 +16,4 @@ const getErrorMessage = (err) => { } }; -module.exports = { validationError }; +module.exports = { validationError, getErrorMessage }; From 01d94ab9909e01692cbed9ea211a4038dd863040 Mon Sep 17 00:00:00 2001 From: "adedotun@flutterwavego.com" Date: Wed, 28 Jan 2026 17:02:52 +0100 Subject: [PATCH 3/6] Removing unnecessary files. Removing unnecessary files. --- .nyc_output/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json | 1 - .nyc_output/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json | 1 - .../processinfo/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json | 1 - .../processinfo/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json | 1 - .nyc_output/processinfo/index.json | 1 - 5 files changed, 5 deletions(-) delete mode 100644 .nyc_output/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json delete mode 100644 .nyc_output/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json delete mode 100644 .nyc_output/processinfo/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json delete mode 100644 .nyc_output/processinfo/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json delete mode 100644 .nyc_output/processinfo/index.json diff --git a/.nyc_output/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json b/.nyc_output/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.nyc_output/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.nyc_output/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json b/.nyc_output/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json deleted file mode 100644 index 1c5bdba..0000000 --- a/.nyc_output/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json +++ /dev/null @@ -1 +0,0 @@ -{"/Users/erikobatomi/Documents/Node-v3/lib/rave.banks.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.banks.js","statementMap":{"0":{"start":{"line":1,"column":23},"end":{"line":1,"column":71}},"1":{"start":{"line":2,"column":22},"end":{"line":2,"column":69}},"2":{"start":{"line":6,"column":1},"end":{"line":9,"column":2}},"3":{"start":{"line":8,"column":2},"end":{"line":8,"column":40}},"4":{"start":{"line":11,"column":1},"end":{"line":15,"column":2}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":39}},"6":{"start":{"line":17,"column":0},"end":{"line":17,"column":22}}},"fnMap":{"0":{"name":"Bank","decl":{"start":{"line":4,"column":9},"end":{"line":4,"column":13}},"loc":{"start":{"line":4,"column":24},"end":{"line":16,"column":1}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":18}},"loc":{"start":{"line":6,"column":33},"end":{"line":9,"column":2}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":11,"column":16},"end":{"line":11,"column":17}},"loc":{"start":{"line":11,"column":32},"end":{"line":15,"column":2}},"line":11}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":2,"5":1,"6":1},"f":{"0":2,"1":1,"2":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8e27421519108d9f267ac38265b56466d8775a71","contentHash":"3add6eee30f96b26a8386d0eaa79801d37e3d49c5ec43c47928e1b244bfa87d7"},"/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-branches.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-branches.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"50a0a1c8232143f9e01437b50252776da1d671a7","contentHash":"1d30318cf3bf8f5676b738d60967cf3b3734e0b8e494eae8a7cd5798c4521c28"},"/Users/erikobatomi/Documents/Node-v3/utils/validator.js":{"path":"/Users/erikobatomi/Documents/Node-v3/utils/validator.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}},"1":{"start":{"line":2,"column":28},"end":{"line":2,"column":46}},"2":{"start":{"line":4,"column":0},"end":{"line":12,"column":2}},"3":{"start":{"line":5,"column":21},"end":{"line":5,"column":42}},"4":{"start":{"line":6,"column":23},"end":{"line":6,"column":33}},"5":{"start":{"line":8,"column":2},"end":{"line":11,"column":3}},"6":{"start":{"line":9,"column":20},"end":{"line":9,"column":55}},"7":{"start":{"line":9,"column":45},"end":{"line":9,"column":54}},"8":{"start":{"line":10,"column":4},"end":{"line":10,"column":39}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":20},"end":{"line":4,"column":21}},"loc":{"start":{"line":4,"column":38},"end":{"line":12,"column":1}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":38},"end":{"line":9,"column":39}},"loc":{"start":{"line":9,"column":45},"end":{"line":9,"column":54}},"line":9}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":2},"end":{"line":11,"column":3}},"type":"if","locations":[{"start":{"line":8,"column":2},"end":{"line":11,"column":3}},{"start":{"line":8,"column":2},"end":{"line":11,"column":3}}],"line":8}},"s":{"0":1,"1":1,"2":1,"3":109,"4":109,"5":109,"6":26,"7":26,"8":26},"f":{"0":109,"1":26},"b":{"0":[26,83]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"db1abf8ec304359f7e327f6103a6df98c60e9ed5","contentHash":"31eb0815b44cc838c9511ccdf426ae7c9db6cba4f98c6a2d583f806632819183"},"/Users/erikobatomi/Documents/Node-v3/utils/error.js":{"path":"/Users/erikobatomi/Documents/Node-v3/utils/error.js","statementMap":{"0":{"start":{"line":1,"column":21},"end":{"line":1,"column":40}},"1":{"start":{"line":5,"column":4},"end":{"line":5,"column":19}},"2":{"start":{"line":6,"column":4},"end":{"line":6,"column":38}},"3":{"start":{"line":7,"column":4},"end":{"line":7,"column":52}},"4":{"start":{"line":11,"column":24},"end":{"line":17,"column":1}},"5":{"start":{"line":12,"column":2},"end":{"line":16,"column":3}},"6":{"start":{"line":13,"column":4},"end":{"line":13,"column":23}},"7":{"start":{"line":15,"column":4},"end":{"line":15,"column":37}},"8":{"start":{"line":19,"column":0},"end":{"line":19,"column":54}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":2},"end":{"line":4,"column":3}},"loc":{"start":{"line":4,"column":23},"end":{"line":8,"column":3}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":24},"end":{"line":11,"column":25}},"loc":{"start":{"line":11,"column":33},"end":{"line":17,"column":1}},"line":11}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":2},"end":{"line":16,"column":3}},"type":"if","locations":[{"start":{"line":12,"column":2},"end":{"line":16,"column":3}},{"start":{"line":12,"column":2},"end":{"line":16,"column":3}}],"line":12}},"s":{"0":1,"1":28,"2":28,"3":28,"4":1,"5":2,"6":1,"7":1,"8":1},"f":{"0":28,"1":2},"b":{"0":[1,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"65e141a90ee00e4fcec6d7722ff18d151a00defb","contentHash":"0bee953b2ef27c044e7b88c93f2eb43df0f6cc3ee94178f689743a6317c01734"},"/Users/erikobatomi/Documents/Node-v3/utils/logger.js":{"path":"/Users/erikobatomi/Documents/Node-v3/utils/logger.js","statementMap":{"0":{"start":{"line":1,"column":14},"end":{"line":1,"column":30}},"1":{"start":{"line":2,"column":20},"end":{"line":2,"column":46}},"2":{"start":{"line":3,"column":45},"end":{"line":3,"column":63}},"3":{"start":{"line":4,"column":63},"end":{"line":4,"column":69}},"4":{"start":{"line":19,"column":20},"end":{"line":31,"column":2}},"5":{"start":{"line":33,"column":0},"end":{"line":33,"column":43}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"86feb52f77c1d9cdb50087e5436fb21c3be6dfd9","contentHash":"8b78b4b736b3560c1eea2bb6665fd70c46abf1e5607da724830992f17da9b4dc"},"/Users/erikobatomi/Documents/Node-v3/services/schema/base.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/schema/base.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}},"1":{"start":{"line":4,"column":20},"end":{"line":6,"column":2}},"2":{"start":{"line":9,"column":19},"end":{"line":45,"column":2}},"3":{"start":{"line":48,"column":21},"end":{"line":50,"column":2}},"4":{"start":{"line":53,"column":23},"end":{"line":57,"column":2}},"5":{"start":{"line":59,"column":0},"end":{"line":64,"column":2}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b36c727e3ea25dde34051612f9b9e4b90c4d10fc","contentHash":"3bd032e56eece58174d04dcd5b2b4d36fa32b4dd5be6335be7304991092d62a8"},"/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-country.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-country.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":48}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ff1dafca39ffea3b91b1a94af16ca79023354887","contentHash":"42254411defd35716f8a5d7bd84928198c9de40a54930f07ac9535de3341aa3e"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.base.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.base.js","statementMap":{"0":{"start":{"line":1,"column":8},"end":{"line":1,"column":20}},"1":{"start":{"line":2,"column":20},"end":{"line":2,"column":42}},"2":{"start":{"line":3,"column":16},"end":{"line":3,"column":46}},"3":{"start":{"line":4,"column":15},"end":{"line":4,"column":36}},"4":{"start":{"line":6,"column":15},"end":{"line":99,"column":1}},"5":{"start":{"line":7,"column":2},"end":{"line":7,"column":58}},"6":{"start":{"line":8,"column":2},"end":{"line":8,"column":58}},"7":{"start":{"line":10,"column":19},"end":{"line":10,"column":29}},"8":{"start":{"line":11,"column":19},"end":{"line":11,"column":29}},"9":{"start":{"line":12,"column":17},"end":{"line":12,"column":47}},"10":{"start":{"line":15,"column":2},"end":{"line":17,"column":3}},"11":{"start":{"line":16,"column":4},"end":{"line":16,"column":25}},"12":{"start":{"line":19,"column":2},"end":{"line":21,"column":4}},"13":{"start":{"line":20,"column":4},"end":{"line":20,"column":22}},"14":{"start":{"line":23,"column":2},"end":{"line":25,"column":4}},"15":{"start":{"line":24,"column":4},"end":{"line":24,"column":22}},"16":{"start":{"line":27,"column":2},"end":{"line":29,"column":4}},"17":{"start":{"line":28,"column":4},"end":{"line":28,"column":20}},"18":{"start":{"line":31,"column":2},"end":{"line":35,"column":4}},"19":{"start":{"line":32,"column":4},"end":{"line":34,"column":5}},"20":{"start":{"line":33,"column":6},"end":{"line":33,"column":30}},"21":{"start":{"line":37,"column":2},"end":{"line":98,"column":4}},"22":{"start":{"line":38,"column":25},"end":{"line":38,"column":27}},"23":{"start":{"line":39,"column":24},"end":{"line":42,"column":5}},"24":{"start":{"line":43,"column":18},"end":{"line":43,"column":66}},"25":{"start":{"line":44,"column":22},"end":{"line":44,"column":54}},"26":{"start":{"line":45,"column":29},"end":{"line":48,"column":5}},"27":{"start":{"line":51,"column":18},"end":{"line":51,"column":42}},"28":{"start":{"line":54,"column":25},"end":{"line":60,"column":5}},"29":{"start":{"line":63,"column":4},"end":{"line":82,"column":5}},"30":{"start":{"line":64,"column":6},"end":{"line":64,"column":28}},"31":{"start":{"line":65,"column":6},"end":{"line":72,"column":7}},"32":{"start":{"line":66,"column":8},"end":{"line":66,"column":36}},"33":{"start":{"line":67,"column":28},"end":{"line":67,"column":58}},"34":{"start":{"line":68,"column":8},"end":{"line":71,"column":9}},"35":{"start":{"line":69,"column":10},"end":{"line":69,"column":55}},"36":{"start":{"line":70,"column":10},"end":{"line":70,"column":33}},"37":{"start":{"line":75,"column":6},"end":{"line":81,"column":7}},"38":{"start":{"line":77,"column":28},"end":{"line":77,"column":42}},"39":{"start":{"line":78,"column":8},"end":{"line":78,"column":34}},"40":{"start":{"line":79,"column":8},"end":{"line":79,"column":40}},"41":{"start":{"line":80,"column":8},"end":{"line":80,"column":56}},"42":{"start":{"line":85,"column":4},"end":{"line":85,"column":30}},"43":{"start":{"line":86,"column":4},"end":{"line":86,"column":47}},"44":{"start":{"line":87,"column":4},"end":{"line":87,"column":42}},"45":{"start":{"line":88,"column":4},"end":{"line":88,"column":70}},"46":{"start":{"line":89,"column":4},"end":{"line":89,"column":38}},"47":{"start":{"line":90,"column":4},"end":{"line":90,"column":50}},"48":{"start":{"line":92,"column":4},"end":{"line":97,"column":5}},"49":{"start":{"line":93,"column":6},"end":{"line":93,"column":57}},"50":{"start":{"line":94,"column":6},"end":{"line":94,"column":28}},"51":{"start":{"line":96,"column":6},"end":{"line":96,"column":61}},"52":{"start":{"line":101,"column":0},"end":{"line":104,"column":2}},"53":{"start":{"line":102,"column":23},"end":{"line":102,"column":69}},"54":{"start":{"line":103,"column":2},"end":{"line":103,"column":64}},"55":{"start":{"line":106,"column":0},"end":{"line":112,"column":2}},"56":{"start":{"line":107,"column":2},"end":{"line":111,"column":4}},"57":{"start":{"line":114,"column":0},"end":{"line":136,"column":2}},"58":{"start":{"line":115,"column":2},"end":{"line":135,"column":7}},"59":{"start":{"line":117,"column":18},"end":{"line":120,"column":7}},"60":{"start":{"line":122,"column":6},"end":{"line":131,"column":11}},"61":{"start":{"line":125,"column":10},"end":{"line":125,"column":36}},"62":{"start":{"line":128,"column":10},"end":{"line":130,"column":13}},"63":{"start":{"line":129,"column":12},"end":{"line":129,"column":48}},"64":{"start":{"line":134,"column":6},"end":{"line":134,"column":28}},"65":{"start":{"line":138,"column":0},"end":{"line":162,"column":2}},"66":{"start":{"line":139,"column":2},"end":{"line":161,"column":5}},"67":{"start":{"line":140,"column":4},"end":{"line":160,"column":9}},"68":{"start":{"line":142,"column":20},"end":{"line":145,"column":9}},"69":{"start":{"line":147,"column":8},"end":{"line":156,"column":13}},"70":{"start":{"line":150,"column":12},"end":{"line":150,"column":35}},"71":{"start":{"line":153,"column":12},"end":{"line":155,"column":15}},"72":{"start":{"line":154,"column":14},"end":{"line":154,"column":53}},"73":{"start":{"line":159,"column":8},"end":{"line":159,"column":20}},"74":{"start":{"line":164,"column":0},"end":{"line":164,"column":26}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":15},"end":{"line":6,"column":16}},"loc":{"start":{"line":6,"column":60},"end":{"line":99,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":19,"column":22},"end":{"line":19,"column":23}},"loc":{"start":{"line":19,"column":34},"end":{"line":21,"column":3}},"line":19},"2":{"name":"(anonymous_2)","decl":{"start":{"line":23,"column":22},"end":{"line":23,"column":23}},"loc":{"start":{"line":23,"column":34},"end":{"line":25,"column":3}},"line":23},"3":{"name":"(anonymous_3)","decl":{"start":{"line":27,"column":20},"end":{"line":27,"column":21}},"loc":{"start":{"line":27,"column":32},"end":{"line":29,"column":3}},"line":27},"4":{"name":"(anonymous_4)","decl":{"start":{"line":31,"column":20},"end":{"line":31,"column":21}},"loc":{"start":{"line":31,"column":44},"end":{"line":35,"column":3}},"line":31},"5":{"name":"(anonymous_5)","decl":{"start":{"line":37,"column":17},"end":{"line":37,"column":18}},"loc":{"start":{"line":37,"column":52},"end":{"line":98,"column":3}},"line":37},"6":{"name":"(anonymous_6)","decl":{"start":{"line":101,"column":29},"end":{"line":101,"column":30}},"loc":{"start":{"line":101,"column":45},"end":{"line":104,"column":1}},"line":101},"7":{"name":"(anonymous_7)","decl":{"start":{"line":106,"column":38},"end":{"line":106,"column":39}},"loc":{"start":{"line":106,"column":54},"end":{"line":112,"column":1}},"line":106},"8":{"name":"(anonymous_8)","decl":{"start":{"line":114,"column":34},"end":{"line":114,"column":35}},"loc":{"start":{"line":114,"column":73},"end":{"line":136,"column":1}},"line":114},"9":{"name":"(anonymous_9)","decl":{"start":{"line":116,"column":10},"end":{"line":116,"column":11}},"loc":{"start":{"line":116,"column":24},"end":{"line":132,"column":5}},"line":116},"10":{"name":"(anonymous_10)","decl":{"start":{"line":124,"column":14},"end":{"line":124,"column":15}},"loc":{"start":{"line":124,"column":24},"end":{"line":126,"column":9}},"line":124},"11":{"name":"(anonymous_11)","decl":{"start":{"line":127,"column":15},"end":{"line":127,"column":16}},"loc":{"start":{"line":127,"column":24},"end":{"line":131,"column":9}},"line":127},"12":{"name":"(anonymous_12)","decl":{"start":{"line":128,"column":38},"end":{"line":128,"column":39}},"loc":{"start":{"line":128,"column":52},"end":{"line":130,"column":11}},"line":128},"13":{"name":"(anonymous_13)","decl":{"start":{"line":133,"column":11},"end":{"line":133,"column":12}},"loc":{"start":{"line":133,"column":20},"end":{"line":135,"column":5}},"line":133},"14":{"name":"(anonymous_14)","decl":{"start":{"line":138,"column":41},"end":{"line":138,"column":42}},"loc":{"start":{"line":138,"column":70},"end":{"line":162,"column":1}},"line":138},"15":{"name":"(anonymous_15)","decl":{"start":{"line":139,"column":21},"end":{"line":139,"column":22}},"loc":{"start":{"line":139,"column":42},"end":{"line":161,"column":3}},"line":139},"16":{"name":"(anonymous_16)","decl":{"start":{"line":141,"column":12},"end":{"line":141,"column":13}},"loc":{"start":{"line":141,"column":26},"end":{"line":157,"column":7}},"line":141},"17":{"name":"(anonymous_17)","decl":{"start":{"line":149,"column":16},"end":{"line":149,"column":17}},"loc":{"start":{"line":149,"column":26},"end":{"line":151,"column":11}},"line":149},"18":{"name":"(anonymous_18)","decl":{"start":{"line":152,"column":17},"end":{"line":152,"column":18}},"loc":{"start":{"line":152,"column":26},"end":{"line":156,"column":11}},"line":152},"19":{"name":"(anonymous_19)","decl":{"start":{"line":153,"column":40},"end":{"line":153,"column":41}},"loc":{"start":{"line":153,"column":54},"end":{"line":155,"column":13}},"line":153},"20":{"name":"(anonymous_20)","decl":{"start":{"line":158,"column":13},"end":{"line":158,"column":14}},"loc":{"start":{"line":158,"column":22},"end":{"line":160,"column":7}},"line":158}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":2},"end":{"line":17,"column":3}},"type":"if","locations":[{"start":{"line":15,"column":2},"end":{"line":17,"column":3}},{"start":{"line":15,"column":2},"end":{"line":17,"column":3}}],"line":15},"1":{"loc":{"start":{"line":15,"column":6},"end":{"line":15,"column":48}},"type":"binary-expr","locations":[{"start":{"line":15,"column":6},"end":{"line":15,"column":15}},{"start":{"line":15,"column":19},"end":{"line":15,"column":48}}],"line":15},"2":{"loc":{"start":{"line":32,"column":4},"end":{"line":34,"column":5}},"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":34,"column":5}},{"start":{"line":32,"column":4},"end":{"line":34,"column":5}}],"line":32},"3":{"loc":{"start":{"line":41,"column":6},"end":{"line":41,"column":21}},"type":"binary-expr","locations":[{"start":{"line":41,"column":6},"end":{"line":41,"column":12}},{"start":{"line":41,"column":16},"end":{"line":41,"column":21}}],"line":41},"4":{"loc":{"start":{"line":43,"column":18},"end":{"line":43,"column":66}},"type":"cond-expr","locations":[{"start":{"line":43,"column":53},"end":{"line":43,"column":59}},{"start":{"line":43,"column":62},"end":{"line":43,"column":66}}],"line":43},"5":{"loc":{"start":{"line":43,"column":18},"end":{"line":43,"column":50}},"type":"binary-expr","locations":[{"start":{"line":43,"column":18},"end":{"line":43,"column":41}},{"start":{"line":43,"column":45},"end":{"line":43,"column":50}}],"line":43},"6":{"loc":{"start":{"line":44,"column":22},"end":{"line":44,"column":54}},"type":"cond-expr","locations":[{"start":{"line":44,"column":42},"end":{"line":44,"column":46}},{"start":{"line":44,"column":49},"end":{"line":44,"column":54}}],"line":44},"7":{"loc":{"start":{"line":63,"column":4},"end":{"line":82,"column":5}},"type":"if","locations":[{"start":{"line":63,"column":4},"end":{"line":82,"column":5}},{"start":{"line":63,"column":4},"end":{"line":82,"column":5}}],"line":63},"8":{"loc":{"start":{"line":65,"column":6},"end":{"line":72,"column":7}},"type":"if","locations":[{"start":{"line":65,"column":6},"end":{"line":72,"column":7}},{"start":{"line":65,"column":6},"end":{"line":72,"column":7}}],"line":65},"9":{"loc":{"start":{"line":68,"column":8},"end":{"line":71,"column":9}},"type":"if","locations":[{"start":{"line":68,"column":8},"end":{"line":71,"column":9}},{"start":{"line":68,"column":8},"end":{"line":71,"column":9}}],"line":68},"10":{"loc":{"start":{"line":69,"column":21},"end":{"line":69,"column":54}},"type":"cond-expr","locations":[{"start":{"line":69,"column":45},"end":{"line":69,"column":48}},{"start":{"line":69,"column":51},"end":{"line":69,"column":54}}],"line":69},"11":{"loc":{"start":{"line":75,"column":6},"end":{"line":81,"column":7}},"type":"if","locations":[{"start":{"line":75,"column":6},"end":{"line":81,"column":7}},{"start":{"line":75,"column":6},"end":{"line":81,"column":7}}],"line":75},"12":{"loc":{"start":{"line":92,"column":4},"end":{"line":97,"column":5}},"type":"if","locations":[{"start":{"line":92,"column":4},"end":{"line":97,"column":5}},{"start":{"line":92,"column":4},"end":{"line":97,"column":5}}],"line":92},"13":{"loc":{"start":{"line":129,"column":32},"end":{"line":129,"column":46}},"type":"binary-expr","locations":[{"start":{"line":129,"column":32},"end":{"line":129,"column":40}},{"start":{"line":129,"column":44},"end":{"line":129,"column":46}}],"line":129},"14":{"loc":{"start":{"line":154,"column":35},"end":{"line":154,"column":49}},"type":"binary-expr","locations":[{"start":{"line":154,"column":35},"end":{"line":154,"column":43}},{"start":{"line":154,"column":47},"end":{"line":154,"column":49}}],"line":154}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":48,"6":48,"7":48,"8":48,"9":48,"10":48,"11":1,"12":48,"13":4,"14":48,"15":9,"16":48,"17":16,"18":48,"19":1,"20":1,"21":48,"22":7,"23":7,"24":7,"25":7,"26":7,"27":7,"28":7,"29":7,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":6,"38":3,"39":3,"40":3,"41":3,"42":7,"43":7,"44":7,"45":7,"46":7,"47":7,"48":7,"49":3,"50":3,"51":4,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":3,"59":2,"60":2,"61":1,"62":1,"63":1,"64":1,"65":1,"66":4,"67":4,"68":3,"69":3,"70":1,"71":2,"72":2,"73":1,"74":1},"f":{"0":48,"1":4,"2":9,"3":16,"4":1,"5":7,"6":1,"7":1,"8":3,"9":2,"10":1,"11":1,"12":1,"13":1,"14":4,"15":4,"16":3,"17":1,"18":2,"19":2,"20":1},"b":{"0":[1,47],"1":[48,1],"2":[1,0],"3":[7,0],"4":[7,0],"5":[7,1],"6":[7,0],"7":[1,6],"8":[1,0],"9":[1,0],"10":[0,1],"11":[3,3],"12":[3,4],"13":[1,0],"14":[2,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5967ab592d9ab7f6f5c018f804f06b895c789b0a","contentHash":"98002bd1a7200fc014008bf8933d4bdf75f5eb4731eda0f117138d7b7e4d5eeb"},"/Users/erikobatomi/Documents/Node-v3/utils/rave.utils.js":{"path":"/Users/erikobatomi/Documents/Node-v3/utils/rave.utils.js","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":18}},"1":{"start":{"line":4,"column":0},"end":{"line":9,"column":1}},"2":{"start":{"line":5,"column":1},"end":{"line":5,"column":43}},"3":{"start":{"line":6,"column":1},"end":{"line":6,"column":24}},"4":{"start":{"line":7,"column":1},"end":{"line":8,"column":27}},"5":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"6":{"start":{"line":11,"column":0},"end":{"line":13,"column":1}},"7":{"start":{"line":12,"column":1},"end":{"line":12,"column":31}},"8":{"start":{"line":16,"column":0},"end":{"line":16,"column":27}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":23},"end":{"line":4,"column":24}},"loc":{"start":{"line":4,"column":56},"end":{"line":9,"column":1}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":29},"end":{"line":11,"column":30}},"loc":{"start":{"line":11,"column":61},"end":{"line":13,"column":1}},"line":11}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":11},"end":{"line":5,"column":42}},"type":"binary-expr","locations":[{"start":{"line":5,"column":11},"end":{"line":5,"column":18}},{"start":{"line":5,"column":22},"end":{"line":5,"column":42}}],"line":5},"1":{"loc":{"start":{"line":6,"column":9},"end":{"line":6,"column":23}},"type":"binary-expr","locations":[{"start":{"line":6,"column":9},"end":{"line":6,"column":14}},{"start":{"line":6,"column":18},"end":{"line":6,"column":23}}],"line":6},"2":{"loc":{"start":{"line":7,"column":1},"end":{"line":8,"column":27}},"type":"if","locations":[{"start":{"line":7,"column":1},"end":{"line":8,"column":27}},{"start":{"line":7,"column":1},"end":{"line":8,"column":27}}],"line":7},"3":{"loc":{"start":{"line":7,"column":5},"end":{"line":7,"column":42}},"type":"binary-expr","locations":[{"start":{"line":7,"column":5},"end":{"line":7,"column":11}},{"start":{"line":7,"column":15},"end":{"line":7,"column":42}}],"line":7},"4":{"loc":{"start":{"line":12,"column":8},"end":{"line":12,"column":30}},"type":"binary-expr","locations":[{"start":{"line":12,"column":8},"end":{"line":12,"column":13}},{"start":{"line":12,"column":17},"end":{"line":12,"column":30}}],"line":12}},"s":{"0":1,"1":1,"2":98,"3":98,"4":98,"5":1,"6":1,"7":23,"8":1},"f":{"0":98,"1":23},"b":{"0":[98,1],"1":[98,98],"2":[1,97],"3":[98,97],"4":[23,11]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f79366dff4ce1233003cc86ad012bd2e5a39d50f","contentHash":"59684508a6491faba96485b602cf04d565516c7ed626f06807ddd85620d582a7"},"/Users/erikobatomi/Documents/Node-v3/lib/security.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/security.js","statementMap":{"0":{"start":{"line":2,"column":13},"end":{"line":2,"column":30}},"1":{"start":{"line":7,"column":14},"end":{"line":7,"column":28}},"2":{"start":{"line":8,"column":17},"end":{"line":8,"column":28}},"3":{"start":{"line":9,"column":23},"end":{"line":9,"column":41}},"4":{"start":{"line":11,"column":25},"end":{"line":11,"column":55}},"5":{"start":{"line":12,"column":32},"end":{"line":12,"column":60}},"6":{"start":{"line":14,"column":4},"end":{"line":14,"column":48}},"7":{"start":{"line":34,"column":16},"end":{"line":34,"column":37}},"8":{"start":{"line":35,"column":17},"end":{"line":38,"column":5}},"9":{"start":{"line":39,"column":4},"end":{"line":41,"column":7}},"10":{"start":{"line":42,"column":4},"end":{"line":42,"column":58}},"11":{"start":{"line":43,"column":4},"end":{"line":43,"column":20}},"12":{"start":{"line":44,"column":20},"end":{"line":44,"column":33}},"13":{"start":{"line":45,"column":4},"end":{"line":45,"column":53}},"14":{"start":{"line":50,"column":21},"end":{"line":50,"column":38}},"15":{"start":{"line":51,"column":4},"end":{"line":51,"column":22}},"16":{"start":{"line":52,"column":21},"end":{"line":52,"column":23}},"17":{"start":{"line":53,"column":4},"end":{"line":59,"column":11}},"18":{"start":{"line":56,"column":12},"end":{"line":56,"column":47}},"19":{"start":{"line":56,"column":40},"end":{"line":56,"column":47}},"20":{"start":{"line":57,"column":12},"end":{"line":57,"column":35}},"21":{"start":{"line":60,"column":4},"end":{"line":60,"column":25}},"22":{"start":{"line":61,"column":15},"end":{"line":61,"column":83}},"23":{"start":{"line":62,"column":4},"end":{"line":62,"column":16}},"24":{"start":{"line":66,"column":0},"end":{"line":70,"column":1}}},"fnMap":{"0":{"name":"getKey","decl":{"start":{"line":6,"column":9},"end":{"line":6,"column":15}},"loc":{"start":{"line":6,"column":24},"end":{"line":15,"column":1}},"line":6},"1":{"name":"encrypt","decl":{"start":{"line":33,"column":9},"end":{"line":33,"column":16}},"loc":{"start":{"line":33,"column":28},"end":{"line":46,"column":1}},"line":33},"2":{"name":"getIntegrityHash","decl":{"start":{"line":48,"column":9},"end":{"line":48,"column":25}},"loc":{"start":{"line":48,"column":48},"end":{"line":63,"column":1}},"line":48},"3":{"name":"(anonymous_3)","decl":{"start":{"line":54,"column":17},"end":{"line":54,"column":18}},"loc":{"start":{"line":54,"column":31},"end":{"line":59,"column":9}},"line":54}},"branchMap":{"0":{"loc":{"start":{"line":56,"column":12},"end":{"line":56,"column":47}},"type":"if","locations":[{"start":{"line":56,"column":12},"end":{"line":56,"column":47}},{"start":{"line":56,"column":12},"end":{"line":56,"column":47}}],"line":56}},"s":{"0":1,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2,"16":2,"17":2,"18":5,"19":1,"20":4,"21":2,"22":2,"23":2,"24":1},"f":{"0":3,"1":2,"2":2,"3":5},"b":{"0":[1,4]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"0aff5d866b2c6f712776d9bef408bb7d60739b8b","contentHash":"9b837b8b01351ca5365cb59e9741f9831c8aed0bbfac09065601d3727c94ca73"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.beneficiaries.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.beneficiaries.js","statementMap":{"0":{"start":{"line":1,"column":27},"end":{"line":1,"column":75}},"1":{"start":{"line":2,"column":24},"end":{"line":2,"column":72}},"2":{"start":{"line":3,"column":21},"end":{"line":3,"column":71}},"3":{"start":{"line":4,"column":17},"end":{"line":4,"column":74}},"4":{"start":{"line":7,"column":2},"end":{"line":9,"column":4}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":46}},"6":{"start":{"line":11,"column":2},"end":{"line":13,"column":4}},"7":{"start":{"line":12,"column":4},"end":{"line":12,"column":43}},"8":{"start":{"line":14,"column":2},"end":{"line":16,"column":4}},"9":{"start":{"line":15,"column":4},"end":{"line":15,"column":40}},"10":{"start":{"line":17,"column":2},"end":{"line":19,"column":4}},"11":{"start":{"line":18,"column":4},"end":{"line":18,"column":36}},"12":{"start":{"line":21,"column":0},"end":{"line":21,"column":31}}},"fnMap":{"0":{"name":"Beneficiaries","decl":{"start":{"line":6,"column":9},"end":{"line":6,"column":22}},"loc":{"start":{"line":6,"column":33},"end":{"line":20,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":16},"end":{"line":7,"column":17}},"loc":{"start":{"line":7,"column":32},"end":{"line":9,"column":3}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":11,"column":16},"end":{"line":11,"column":17}},"loc":{"start":{"line":11,"column":32},"end":{"line":13,"column":3}},"line":11},"3":{"name":"(anonymous_3)","decl":{"start":{"line":14,"column":19},"end":{"line":14,"column":20}},"loc":{"start":{"line":14,"column":35},"end":{"line":16,"column":3}},"line":14},"4":{"name":"(anonymous_4)","decl":{"start":{"line":17,"column":15},"end":{"line":17,"column":16}},"loc":{"start":{"line":17,"column":31},"end":{"line":19,"column":3}},"line":17}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":4,"5":1,"6":4,"7":1,"8":4,"9":1,"10":4,"11":1,"12":1},"f":{"0":4,"1":1,"2":1,"3":1,"4":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5110aa1a5f57bc5673e0f59f2c252e27b88eb60e","contentHash":"6acfe4f52b58b104883eb433bb7dd0b7b6f959ebf1834df18dd26d4a3dd15b02"},"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.create.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.create.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":30},"end":{"line":3,"column":57}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":74}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1fb127708320941a68788e108733e4451e589771","contentHash":"2f96ea186cd196c51739b26ba4f78a7a37db4abfe4b4db0f65867a6c26749f85"},"/Users/erikobatomi/Documents/Node-v3/services/schema/create.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/schema/create.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}},"1":{"start":{"line":4,"column":22},"end":{"line":16,"column":2}},"2":{"start":{"line":19,"column":25},"end":{"line":50,"column":2}},"3":{"start":{"line":29,"column":6},"end":{"line":30,"column":57}},"4":{"start":{"line":30,"column":8},"end":{"line":30,"column":57}},"5":{"start":{"line":31,"column":6},"end":{"line":31,"column":19}},"6":{"start":{"line":53,"column":26},"end":{"line":59,"column":2}},"7":{"start":{"line":62,"column":26},"end":{"line":73,"column":2}},"8":{"start":{"line":76,"column":28},"end":{"line":90,"column":2}},"9":{"start":{"line":92,"column":24},"end":{"line":126,"column":2}},"10":{"start":{"line":205,"column":25},"end":{"line":265,"column":2}},"11":{"start":{"line":218,"column":6},"end":{"line":219,"column":48}},"12":{"start":{"line":219,"column":8},"end":{"line":219,"column":48}},"13":{"start":{"line":220,"column":6},"end":{"line":220,"column":19}},"14":{"start":{"line":229,"column":6},"end":{"line":230,"column":57}},"15":{"start":{"line":230,"column":8},"end":{"line":230,"column":57}},"16":{"start":{"line":231,"column":6},"end":{"line":231,"column":19}},"17":{"start":{"line":268,"column":21},"end":{"line":312,"column":2}},"18":{"start":{"line":278,"column":6},"end":{"line":279,"column":57}},"19":{"start":{"line":279,"column":8},"end":{"line":279,"column":57}},"20":{"start":{"line":280,"column":6},"end":{"line":280,"column":19}},"21":{"start":{"line":315,"column":27},"end":{"line":340,"column":2}},"22":{"start":{"line":325,"column":6},"end":{"line":326,"column":57}},"23":{"start":{"line":326,"column":8},"end":{"line":326,"column":57}},"24":{"start":{"line":327,"column":6},"end":{"line":327,"column":19}},"25":{"start":{"line":343,"column":19},"end":{"line":515,"column":2}},"26":{"start":{"line":352,"column":6},"end":{"line":353,"column":57}},"27":{"start":{"line":353,"column":8},"end":{"line":353,"column":57}},"28":{"start":{"line":354,"column":6},"end":{"line":354,"column":19}},"29":{"start":{"line":362,"column":22},"end":{"line":362,"column":39}},"30":{"start":{"line":363,"column":22},"end":{"line":363,"column":55}},"31":{"start":{"line":364,"column":8},"end":{"line":366,"column":9}},"32":{"start":{"line":365,"column":10},"end":{"line":365,"column":43}},"33":{"start":{"line":367,"column":8},"end":{"line":367,"column":21}},"34":{"start":{"line":378,"column":24},"end":{"line":378,"column":41}},"35":{"start":{"line":379,"column":24},"end":{"line":379,"column":41}},"36":{"start":{"line":380,"column":10},"end":{"line":382,"column":11}},"37":{"start":{"line":381,"column":12},"end":{"line":381,"column":45}},"38":{"start":{"line":383,"column":10},"end":{"line":383,"column":23}},"39":{"start":{"line":394,"column":26},"end":{"line":394,"column":43}},"40":{"start":{"line":395,"column":26},"end":{"line":395,"column":49}},"41":{"start":{"line":396,"column":12},"end":{"line":398,"column":13}},"42":{"start":{"line":397,"column":14},"end":{"line":397,"column":47}},"43":{"start":{"line":399,"column":12},"end":{"line":399,"column":25}},"44":{"start":{"line":410,"column":28},"end":{"line":410,"column":45}},"45":{"start":{"line":411,"column":28},"end":{"line":411,"column":45}},"46":{"start":{"line":412,"column":14},"end":{"line":414,"column":15}},"47":{"start":{"line":413,"column":16},"end":{"line":413,"column":49}},"48":{"start":{"line":415,"column":14},"end":{"line":415,"column":27}},"49":{"start":{"line":426,"column":30},"end":{"line":426,"column":47}},"50":{"start":{"line":427,"column":30},"end":{"line":427,"column":71}},"51":{"start":{"line":428,"column":16},"end":{"line":430,"column":17}},"52":{"start":{"line":429,"column":18},"end":{"line":429,"column":51}},"53":{"start":{"line":431,"column":16},"end":{"line":431,"column":29}},"54":{"start":{"line":443,"column":32},"end":{"line":443,"column":49}},"55":{"start":{"line":444,"column":32},"end":{"line":444,"column":59}},"56":{"start":{"line":445,"column":18},"end":{"line":447,"column":19}},"57":{"start":{"line":446,"column":20},"end":{"line":446,"column":53}},"58":{"start":{"line":448,"column":18},"end":{"line":448,"column":31}},"59":{"start":{"line":459,"column":34},"end":{"line":459,"column":51}},"60":{"start":{"line":460,"column":34},"end":{"line":460,"column":64}},"61":{"start":{"line":461,"column":20},"end":{"line":463,"column":21}},"62":{"start":{"line":462,"column":22},"end":{"line":462,"column":55}},"63":{"start":{"line":464,"column":20},"end":{"line":464,"column":33}},"64":{"start":{"line":476,"column":36},"end":{"line":476,"column":53}},"65":{"start":{"line":477,"column":36},"end":{"line":477,"column":58}},"66":{"start":{"line":478,"column":22},"end":{"line":480,"column":23}},"67":{"start":{"line":479,"column":24},"end":{"line":479,"column":57}},"68":{"start":{"line":481,"column":22},"end":{"line":481,"column":35}},"69":{"start":{"line":518,"column":19},"end":{"line":528,"column":2}},"70":{"start":{"line":531,"column":21},"end":{"line":534,"column":2}},"71":{"start":{"line":537,"column":25},"end":{"line":549,"column":2}},"72":{"start":{"line":552,"column":23},"end":{"line":717,"column":2}},"73":{"start":{"line":703,"column":12},"end":{"line":704,"column":63}},"74":{"start":{"line":704,"column":14},"end":{"line":704,"column":63}},"75":{"start":{"line":705,"column":12},"end":{"line":705,"column":25}},"76":{"start":{"line":720,"column":31},"end":{"line":726,"column":2}},"77":{"start":{"line":729,"column":33},"end":{"line":741,"column":2}},"78":{"start":{"line":744,"column":20},"end":{"line":763,"column":2}},"79":{"start":{"line":766,"column":25},"end":{"line":790,"column":2}},"80":{"start":{"line":777,"column":6},"end":{"line":778,"column":57}},"81":{"start":{"line":778,"column":8},"end":{"line":778,"column":57}},"82":{"start":{"line":779,"column":6},"end":{"line":779,"column":19}},"83":{"start":{"line":793,"column":29},"end":{"line":802,"column":2}},"84":{"start":{"line":804,"column":0},"end":{"line":824,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":28,"column":12},"end":{"line":28,"column":13}},"loc":{"start":{"line":28,"column":23},"end":{"line":32,"column":5}},"line":28},"1":{"name":"(anonymous_1)","decl":{"start":{"line":217,"column":12},"end":{"line":217,"column":13}},"loc":{"start":{"line":217,"column":23},"end":{"line":221,"column":5}},"line":217},"2":{"name":"(anonymous_2)","decl":{"start":{"line":228,"column":12},"end":{"line":228,"column":13}},"loc":{"start":{"line":228,"column":23},"end":{"line":232,"column":5}},"line":228},"3":{"name":"(anonymous_3)","decl":{"start":{"line":277,"column":12},"end":{"line":277,"column":13}},"loc":{"start":{"line":277,"column":23},"end":{"line":281,"column":5}},"line":277},"4":{"name":"(anonymous_4)","decl":{"start":{"line":324,"column":12},"end":{"line":324,"column":13}},"loc":{"start":{"line":324,"column":23},"end":{"line":328,"column":5}},"line":324},"5":{"name":"(anonymous_5)","decl":{"start":{"line":351,"column":12},"end":{"line":351,"column":13}},"loc":{"start":{"line":351,"column":23},"end":{"line":355,"column":5}},"line":351},"6":{"name":"(anonymous_6)","decl":{"start":{"line":361,"column":14},"end":{"line":361,"column":15}},"loc":{"start":{"line":361,"column":32},"end":{"line":368,"column":7}},"line":361},"7":{"name":"(anonymous_7)","decl":{"start":{"line":377,"column":16},"end":{"line":377,"column":17}},"loc":{"start":{"line":377,"column":34},"end":{"line":384,"column":9}},"line":377},"8":{"name":"(anonymous_8)","decl":{"start":{"line":393,"column":18},"end":{"line":393,"column":19}},"loc":{"start":{"line":393,"column":36},"end":{"line":400,"column":11}},"line":393},"9":{"name":"(anonymous_9)","decl":{"start":{"line":409,"column":20},"end":{"line":409,"column":21}},"loc":{"start":{"line":409,"column":38},"end":{"line":416,"column":13}},"line":409},"10":{"name":"(anonymous_10)","decl":{"start":{"line":425,"column":22},"end":{"line":425,"column":23}},"loc":{"start":{"line":425,"column":40},"end":{"line":432,"column":15}},"line":425},"11":{"name":"(anonymous_11)","decl":{"start":{"line":442,"column":24},"end":{"line":442,"column":25}},"loc":{"start":{"line":442,"column":42},"end":{"line":449,"column":17}},"line":442},"12":{"name":"(anonymous_12)","decl":{"start":{"line":458,"column":26},"end":{"line":458,"column":27}},"loc":{"start":{"line":458,"column":44},"end":{"line":465,"column":19}},"line":458},"13":{"name":"(anonymous_13)","decl":{"start":{"line":475,"column":28},"end":{"line":475,"column":29}},"loc":{"start":{"line":475,"column":46},"end":{"line":482,"column":21}},"line":475},"14":{"name":"(anonymous_14)","decl":{"start":{"line":702,"column":18},"end":{"line":702,"column":19}},"loc":{"start":{"line":702,"column":29},"end":{"line":706,"column":11}},"line":702},"15":{"name":"(anonymous_15)","decl":{"start":{"line":776,"column":12},"end":{"line":776,"column":13}},"loc":{"start":{"line":776,"column":23},"end":{"line":780,"column":5}},"line":776}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":6},"end":{"line":30,"column":57}},"type":"if","locations":[{"start":{"line":29,"column":6},"end":{"line":30,"column":57}},{"start":{"line":29,"column":6},"end":{"line":30,"column":57}}],"line":29},"1":{"loc":{"start":{"line":29,"column":10},"end":{"line":29,"column":42}},"type":"binary-expr","locations":[{"start":{"line":29,"column":10},"end":{"line":29,"column":15}},{"start":{"line":29,"column":19},"end":{"line":29,"column":42}}],"line":29},"2":{"loc":{"start":{"line":218,"column":6},"end":{"line":219,"column":48}},"type":"if","locations":[{"start":{"line":218,"column":6},"end":{"line":219,"column":48}},{"start":{"line":218,"column":6},"end":{"line":219,"column":48}}],"line":218},"3":{"loc":{"start":{"line":218,"column":10},"end":{"line":218,"column":67}},"type":"binary-expr","locations":[{"start":{"line":218,"column":10},"end":{"line":218,"column":24}},{"start":{"line":218,"column":28},"end":{"line":218,"column":45}},{"start":{"line":218,"column":49},"end":{"line":218,"column":67}}],"line":218},"4":{"loc":{"start":{"line":229,"column":6},"end":{"line":230,"column":57}},"type":"if","locations":[{"start":{"line":229,"column":6},"end":{"line":230,"column":57}},{"start":{"line":229,"column":6},"end":{"line":230,"column":57}}],"line":229},"5":{"loc":{"start":{"line":229,"column":10},"end":{"line":229,"column":42}},"type":"binary-expr","locations":[{"start":{"line":229,"column":10},"end":{"line":229,"column":15}},{"start":{"line":229,"column":19},"end":{"line":229,"column":42}}],"line":229},"6":{"loc":{"start":{"line":278,"column":6},"end":{"line":279,"column":57}},"type":"if","locations":[{"start":{"line":278,"column":6},"end":{"line":279,"column":57}},{"start":{"line":278,"column":6},"end":{"line":279,"column":57}}],"line":278},"7":{"loc":{"start":{"line":278,"column":10},"end":{"line":278,"column":42}},"type":"binary-expr","locations":[{"start":{"line":278,"column":10},"end":{"line":278,"column":15}},{"start":{"line":278,"column":19},"end":{"line":278,"column":42}}],"line":278},"8":{"loc":{"start":{"line":325,"column":6},"end":{"line":326,"column":57}},"type":"if","locations":[{"start":{"line":325,"column":6},"end":{"line":326,"column":57}},{"start":{"line":325,"column":6},"end":{"line":326,"column":57}}],"line":325},"9":{"loc":{"start":{"line":325,"column":10},"end":{"line":325,"column":42}},"type":"binary-expr","locations":[{"start":{"line":325,"column":10},"end":{"line":325,"column":15}},{"start":{"line":325,"column":19},"end":{"line":325,"column":42}}],"line":325},"10":{"loc":{"start":{"line":352,"column":6},"end":{"line":353,"column":57}},"type":"if","locations":[{"start":{"line":352,"column":6},"end":{"line":353,"column":57}},{"start":{"line":352,"column":6},"end":{"line":353,"column":57}}],"line":352},"11":{"loc":{"start":{"line":352,"column":10},"end":{"line":352,"column":42}},"type":"binary-expr","locations":[{"start":{"line":352,"column":10},"end":{"line":352,"column":15}},{"start":{"line":352,"column":19},"end":{"line":352,"column":42}}],"line":352},"12":{"loc":{"start":{"line":364,"column":8},"end":{"line":366,"column":9}},"type":"if","locations":[{"start":{"line":364,"column":8},"end":{"line":366,"column":9}},{"start":{"line":364,"column":8},"end":{"line":366,"column":9}}],"line":364},"13":{"loc":{"start":{"line":380,"column":10},"end":{"line":382,"column":11}},"type":"if","locations":[{"start":{"line":380,"column":10},"end":{"line":382,"column":11}},{"start":{"line":380,"column":10},"end":{"line":382,"column":11}}],"line":380},"14":{"loc":{"start":{"line":396,"column":12},"end":{"line":398,"column":13}},"type":"if","locations":[{"start":{"line":396,"column":12},"end":{"line":398,"column":13}},{"start":{"line":396,"column":12},"end":{"line":398,"column":13}}],"line":396},"15":{"loc":{"start":{"line":412,"column":14},"end":{"line":414,"column":15}},"type":"if","locations":[{"start":{"line":412,"column":14},"end":{"line":414,"column":15}},{"start":{"line":412,"column":14},"end":{"line":414,"column":15}}],"line":412},"16":{"loc":{"start":{"line":428,"column":16},"end":{"line":430,"column":17}},"type":"if","locations":[{"start":{"line":428,"column":16},"end":{"line":430,"column":17}},{"start":{"line":428,"column":16},"end":{"line":430,"column":17}}],"line":428},"17":{"loc":{"start":{"line":445,"column":18},"end":{"line":447,"column":19}},"type":"if","locations":[{"start":{"line":445,"column":18},"end":{"line":447,"column":19}},{"start":{"line":445,"column":18},"end":{"line":447,"column":19}}],"line":445},"18":{"loc":{"start":{"line":461,"column":20},"end":{"line":463,"column":21}},"type":"if","locations":[{"start":{"line":461,"column":20},"end":{"line":463,"column":21}},{"start":{"line":461,"column":20},"end":{"line":463,"column":21}}],"line":461},"19":{"loc":{"start":{"line":478,"column":22},"end":{"line":480,"column":23}},"type":"if","locations":[{"start":{"line":478,"column":22},"end":{"line":480,"column":23}},{"start":{"line":478,"column":22},"end":{"line":480,"column":23}}],"line":478},"20":{"loc":{"start":{"line":703,"column":12},"end":{"line":704,"column":63}},"type":"if","locations":[{"start":{"line":703,"column":12},"end":{"line":704,"column":63}},{"start":{"line":703,"column":12},"end":{"line":704,"column":63}}],"line":703},"21":{"loc":{"start":{"line":703,"column":16},"end":{"line":703,"column":48}},"type":"binary-expr","locations":[{"start":{"line":703,"column":16},"end":{"line":703,"column":21}},{"start":{"line":703,"column":25},"end":{"line":703,"column":48}}],"line":703},"22":{"loc":{"start":{"line":777,"column":6},"end":{"line":778,"column":57}},"type":"if","locations":[{"start":{"line":777,"column":6},"end":{"line":778,"column":57}},{"start":{"line":777,"column":6},"end":{"line":778,"column":57}}],"line":777},"23":{"loc":{"start":{"line":777,"column":10},"end":{"line":777,"column":42}},"type":"binary-expr","locations":[{"start":{"line":777,"column":10},"end":{"line":777,"column":15}},{"start":{"line":777,"column":19},"end":{"line":777,"column":42}}],"line":777}},"s":{"0":1,"1":1,"2":1,"3":5,"4":1,"5":4,"6":1,"7":1,"8":1,"9":1,"10":1,"11":5,"12":1,"13":4,"14":2,"15":1,"16":1,"17":1,"18":8,"19":3,"20":5,"21":1,"22":3,"23":1,"24":2,"25":1,"26":19,"27":1,"28":18,"29":2,"30":2,"31":2,"32":1,"33":1,"34":2,"35":2,"36":2,"37":1,"38":1,"39":2,"40":2,"41":2,"42":1,"43":1,"44":2,"45":2,"46":2,"47":1,"48":1,"49":2,"50":2,"51":2,"52":1,"53":1,"54":2,"55":2,"56":2,"57":1,"58":1,"59":2,"60":2,"61":2,"62":1,"63":1,"64":2,"65":2,"66":2,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":2,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":2,"81":1,"82":1,"83":1,"84":1},"f":{"0":5,"1":5,"2":2,"3":8,"4":3,"5":19,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2},"b":{"0":[1,4],"1":[5,5],"2":[1,4],"3":[5,5,5],"4":[1,1],"5":[2,2],"6":[3,5],"7":[8,8],"8":[1,2],"9":[3,3],"10":[1,18],"11":[19,19],"12":[1,1],"13":[1,1],"14":[1,1],"15":[1,1],"16":[1,1],"17":[1,1],"18":[1,1],"19":[1,1],"20":[1,1],"21":[2,2],"22":[1,1],"23":[2,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"58b3aa51f32cc1c6e0c789379e98a745c16d0863","contentHash":"c7ce0d4d08324b57305d37bcd7b876093748d78c276e9937f6ee82ebf4be5713"},"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.delete.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.delete.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8d1269646a3bba88f8f8bd68af4ace3d871cd311","contentHash":"93d91c7545f8332f97829c366ca9859e74f0bac1511daf2238339a4e7ab09ea3"},"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.retrieve.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.retrieve.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":9,"column":4}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":10,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"93adc99a7efaea474fd636ed594c11a6dee49b7e","contentHash":"3614a07c21c6fe5f3fd155b1ab28034e466cea89e51d720f4242b52cf0d847b4"},"/Users/erikobatomi/Documents/Node-v3/utils/build.js":{"path":"/Users/erikobatomi/Documents/Node-v3/utils/build.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}},"1":{"start":{"line":2,"column":23},"end":{"line":2,"column":57}},"2":{"start":{"line":4,"column":22},"end":{"line":4,"column":44}},"3":{"start":{"line":8,"column":2},"end":{"line":10,"column":3}},"4":{"start":{"line":9,"column":4},"end":{"line":9,"column":50}},"5":{"start":{"line":12,"column":2},"end":{"line":23,"column":5}},"6":{"start":{"line":13,"column":4},"end":{"line":22,"column":7}},"7":{"start":{"line":24,"column":2},"end":{"line":24,"column":16}},"8":{"start":{"line":29,"column":2},"end":{"line":39,"column":3}},"9":{"start":{"line":30,"column":4},"end":{"line":30,"column":15}},"10":{"start":{"line":31,"column":4},"end":{"line":31,"column":25}},"11":{"start":{"line":33,"column":21},"end":{"line":33,"column":52}},"12":{"start":{"line":35,"column":25},"end":{"line":35,"column":50}},"13":{"start":{"line":38,"column":4},"end":{"line":38,"column":24}},"14":{"start":{"line":41,"column":2},"end":{"line":41,"column":31}},"15":{"start":{"line":42,"column":2},"end":{"line":42,"column":23}},"16":{"start":{"line":44,"column":19},"end":{"line":44,"column":50}},"17":{"start":{"line":45,"column":23},"end":{"line":45,"column":48}},"18":{"start":{"line":48,"column":2},"end":{"line":48,"column":22}},"19":{"start":{"line":51,"column":0},"end":{"line":51,"column":55}}},"fnMap":{"0":{"name":"enforceRequired","decl":{"start":{"line":7,"column":9},"end":{"line":7,"column":24}},"loc":{"start":{"line":7,"column":44},"end":{"line":25,"column":1}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":16},"end":{"line":12,"column":17}},"loc":{"start":{"line":12,"column":27},"end":{"line":23,"column":3}},"line":12},"2":{"name":"handleEmptyFetch","decl":{"start":{"line":28,"column":15},"end":{"line":28,"column":31}},"loc":{"start":{"line":28,"column":57},"end":{"line":49,"column":1}},"line":28}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":2},"end":{"line":10,"column":3}},"type":"if","locations":[{"start":{"line":8,"column":2},"end":{"line":10,"column":3}},{"start":{"line":8,"column":2},"end":{"line":10,"column":3}}],"line":8},"1":{"loc":{"start":{"line":29,"column":2},"end":{"line":39,"column":3}},"type":"if","locations":[{"start":{"line":29,"column":2},"end":{"line":39,"column":3}},{"start":{"line":29,"column":2},"end":{"line":39,"column":3}}],"line":29},"2":{"loc":{"start":{"line":29,"column":6},"end":{"line":29,"column":43}},"type":"binary-expr","locations":[{"start":{"line":29,"column":6},"end":{"line":29,"column":25}},{"start":{"line":29,"column":29},"end":{"line":29,"column":43}}],"line":29},"3":{"loc":{"start":{"line":35,"column":25},"end":{"line":35,"column":50}},"type":"binary-expr","locations":[{"start":{"line":35,"column":25},"end":{"line":35,"column":38}},{"start":{"line":35,"column":42},"end":{"line":35,"column":50}}],"line":35},"4":{"loc":{"start":{"line":45,"column":23},"end":{"line":45,"column":48}},"type":"binary-expr","locations":[{"start":{"line":45,"column":23},"end":{"line":45,"column":36}},{"start":{"line":45,"column":40},"end":{"line":45,"column":48}}],"line":45}},"s":{"0":1,"1":1,"2":1,"3":2,"4":1,"5":1,"6":2,"7":1,"8":11,"9":3,"10":3,"11":3,"12":3,"13":3,"14":8,"15":8,"16":8,"17":8,"18":8,"19":1},"f":{"0":2,"1":2,"2":11},"b":{"0":[1,1],"1":[3,8],"2":[11,8],"3":[3,0],"4":[8,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f00fdd3d3650b0d97c27aaf47570d2f7bc81e6d6","contentHash":"ba7f377d39d175075a9ef7de6653690ff2525bea435b4b413d556c6f4e435f6a"},"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.single.retrieve.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.single.retrieve.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"48c0fa5ddc69e143691ff4f0d142b25dba1c82a9","contentHash":"6a72a4910987753d6b3e91513aeaeeb29d0a35206b82c19f6d908c5ca23d553f"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.bills.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.bills.js","statementMap":{"0":{"start":{"line":1,"column":26},"end":{"line":1,"column":77}},"1":{"start":{"line":2,"column":19},"end":{"line":2,"column":72}},"2":{"start":{"line":3,"column":20},"end":{"line":3,"column":71}},"3":{"start":{"line":4,"column":29},"end":{"line":4,"column":88}},"4":{"start":{"line":6,"column":14},"end":{"line":6,"column":65}},"5":{"start":{"line":7,"column":17},"end":{"line":7,"column":70}},"6":{"start":{"line":8,"column":22},"end":{"line":8,"column":81}},"7":{"start":{"line":10,"column":15},"end":{"line":10,"column":59}},"8":{"start":{"line":11,"column":30},"end":{"line":11,"column":88}},"9":{"start":{"line":12,"column":27},"end":{"line":12,"column":79}},"10":{"start":{"line":13,"column":22},"end":{"line":13,"column":69}},"11":{"start":{"line":16,"column":2},"end":{"line":18,"column":4}},"12":{"start":{"line":17,"column":4},"end":{"line":17,"column":38}},"13":{"start":{"line":20,"column":2},"end":{"line":22,"column":4}},"14":{"start":{"line":21,"column":4},"end":{"line":21,"column":45}},"15":{"start":{"line":24,"column":2},"end":{"line":26,"column":4}},"16":{"start":{"line":25,"column":4},"end":{"line":25,"column":39}},"17":{"start":{"line":28,"column":2},"end":{"line":30,"column":4}},"18":{"start":{"line":29,"column":4},"end":{"line":29,"column":48}},"19":{"start":{"line":32,"column":2},"end":{"line":34,"column":4}},"20":{"start":{"line":33,"column":4},"end":{"line":33,"column":33}},"21":{"start":{"line":36,"column":2},"end":{"line":38,"column":4}},"22":{"start":{"line":37,"column":4},"end":{"line":37,"column":36}},"23":{"start":{"line":39,"column":2},"end":{"line":41,"column":4}},"24":{"start":{"line":40,"column":4},"end":{"line":40,"column":41}},"25":{"start":{"line":42,"column":2},"end":{"line":44,"column":4}},"26":{"start":{"line":43,"column":4},"end":{"line":43,"column":34}},"27":{"start":{"line":45,"column":2},"end":{"line":47,"column":4}},"28":{"start":{"line":46,"column":4},"end":{"line":46,"column":49}},"29":{"start":{"line":49,"column":2},"end":{"line":51,"column":4}},"30":{"start":{"line":50,"column":4},"end":{"line":50,"column":46}},"31":{"start":{"line":53,"column":2},"end":{"line":55,"column":4}},"32":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"33":{"start":{"line":57,"column":0},"end":{"line":57,"column":23}}},"fnMap":{"0":{"name":"Bills","decl":{"start":{"line":15,"column":9},"end":{"line":15,"column":14}},"loc":{"start":{"line":15,"column":25},"end":{"line":56,"column":1}},"line":15},"1":{"name":"(anonymous_1)","decl":{"start":{"line":16,"column":21},"end":{"line":16,"column":22}},"loc":{"start":{"line":16,"column":37},"end":{"line":18,"column":3}},"line":16},"2":{"name":"(anonymous_2)","decl":{"start":{"line":20,"column":24},"end":{"line":20,"column":25}},"loc":{"start":{"line":20,"column":40},"end":{"line":22,"column":3}},"line":20},"3":{"name":"(anonymous_3)","decl":{"start":{"line":24,"column":21},"end":{"line":24,"column":22}},"loc":{"start":{"line":24,"column":37},"end":{"line":26,"column":3}},"line":24},"4":{"name":"(anonymous_4)","decl":{"start":{"line":28,"column":28},"end":{"line":28,"column":29}},"loc":{"start":{"line":28,"column":44},"end":{"line":30,"column":3}},"line":28},"5":{"name":"(anonymous_5)","decl":{"start":{"line":32,"column":21},"end":{"line":32,"column":22}},"loc":{"start":{"line":32,"column":37},"end":{"line":34,"column":3}},"line":32},"6":{"name":"(anonymous_6)","decl":{"start":{"line":36,"column":25},"end":{"line":36,"column":26}},"loc":{"start":{"line":36,"column":41},"end":{"line":38,"column":3}},"line":36},"7":{"name":"(anonymous_7)","decl":{"start":{"line":39,"column":30},"end":{"line":39,"column":31}},"loc":{"start":{"line":39,"column":46},"end":{"line":41,"column":3}},"line":39},"8":{"name":"(anonymous_8)","decl":{"start":{"line":42,"column":22},"end":{"line":42,"column":23}},"loc":{"start":{"line":42,"column":38},"end":{"line":44,"column":3}},"line":42},"9":{"name":"(anonymous_9)","decl":{"start":{"line":45,"column":37},"end":{"line":45,"column":38}},"loc":{"start":{"line":45,"column":53},"end":{"line":47,"column":3}},"line":45},"10":{"name":"(anonymous_10)","decl":{"start":{"line":49,"column":22},"end":{"line":49,"column":23}},"loc":{"start":{"line":49,"column":38},"end":{"line":51,"column":3}},"line":49},"11":{"name":"(anonymous_11)","decl":{"start":{"line":53,"column":18},"end":{"line":53,"column":19}},"loc":{"start":{"line":53,"column":34},"end":{"line":55,"column":3}},"line":53}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":12,"12":1,"13":12,"14":1,"15":12,"16":1,"17":12,"18":2,"19":12,"20":1,"21":12,"22":1,"23":12,"24":1,"25":12,"26":1,"27":12,"28":1,"29":12,"30":1,"31":12,"32":1,"33":1},"f":{"0":12,"1":1,"2":1,"3":1,"4":2,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9b5f9e43ae5c2fdaca7ab939fc79a71fe9e0328a","contentHash":"cb82e85d9df331d177b0d6950e015601c8ad57537e51f54e339402069ca0d45f"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.amount.to-be-paid.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.amount.to-be-paid.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":30},"end":{"line":3,"column":55}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b4af8bab244ac2a5de896348e2c4e897f5ae0cfb","contentHash":"dd75cfa08041eb97badf98bfb0c491aba7394786c8ea4aee4d9cbbefbdd872b1"},"/Users/erikobatomi/Documents/Node-v3/services/schema/bill.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/schema/bill.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}},"1":{"start":{"line":3,"column":26},"end":{"line":6,"column":2}},"2":{"start":{"line":8,"column":21},"end":{"line":15,"column":2}},"3":{"start":{"line":17,"column":25},"end":{"line":34,"column":2}},"4":{"start":{"line":36,"column":26},"end":{"line":67,"column":2}},"5":{"start":{"line":50,"column":10},"end":{"line":51,"column":61}},"6":{"start":{"line":51,"column":12},"end":{"line":51,"column":61}},"7":{"start":{"line":52,"column":10},"end":{"line":52,"column":23}},"8":{"start":{"line":69,"column":26},"end":{"line":71,"column":2}},"9":{"start":{"line":73,"column":26},"end":{"line":77,"column":2}},"10":{"start":{"line":79,"column":23},"end":{"line":83,"column":2}},"11":{"start":{"line":85,"column":0},"end":{"line":93,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":49,"column":16},"end":{"line":49,"column":17}},"loc":{"start":{"line":49,"column":27},"end":{"line":53,"column":9}},"line":49}},"branchMap":{"0":{"loc":{"start":{"line":50,"column":10},"end":{"line":51,"column":61}},"type":"if","locations":[{"start":{"line":50,"column":10},"end":{"line":51,"column":61}},{"start":{"line":50,"column":10},"end":{"line":51,"column":61}}],"line":50},"1":{"loc":{"start":{"line":50,"column":14},"end":{"line":50,"column":46}},"type":"binary-expr","locations":[{"start":{"line":50,"column":14},"end":{"line":50,"column":19}},{"start":{"line":50,"column":23},"end":{"line":50,"column":46}}],"line":50}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":2,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"f":{"0":2},"b":{"0":[1,1],"1":[2,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2e0be7b12ddf05f80ea6bea8b301e5c888172c49","contentHash":"9e5ca374acd8156661185db22c0231d1d32bef6db05ef3e023adda0f8a002673"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bill.payment.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bill.payment.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":66}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b374b9e2968579d9a8e5588a1244dbac30e49ba3","contentHash":"0e4f398d588fdbb05ea26258546dcab6990984c32d324728c718822ccd085c79"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bulk.bills.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bulk.bills.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":29},"end":{"line":3,"column":54}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":36}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":71}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5a2cc03251ae03aef3cf2162f2b6e254f60ede51","contentHash":"76ed935af2993bbac209931d1f81c7c8af2f49123e469bc780646fb270574da3"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-order-billing-code.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-order-billing-code.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":30},"end":{"line":3,"column":55}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"aed4eff53db43e9780a9e471bfb3b8bbfcf44ae8","contentHash":"82ef81a57335c98ebe9a9a72830d049876a3e820b657a9d2653100de6952f61a"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get-bill-payments.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get-bill-payments.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":48}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2d2c60e1593142f5ee51eb7990c0f3c1dbd63c2e","contentHash":"a976ebf120d03620803e753875e485f11d3799b7da8cfc8c3afdb3172e89f1d5"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-categories.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-categories.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":9,"column":4}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":10,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"50bce681b44e8373155802f12d035f5a62eca4d2","contentHash":"0dfca3b18d7f3e1e1e8d839d011e111dd02fc3b070d858d9d8567c6c82628fd3"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-payment-agencies.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-payment-agencies.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":9,"column":4}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":10,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2331f902d238e8a29a124dc7f0c7fdbca0aec676","contentHash":"f1b5bb19559083fd41377daa0c5744e2d457b58e7cb3804675b98c1c3050befc"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.status.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.status.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":30},"end":{"line":3,"column":55}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"76a135feb1af5d6d9a5df561419b343acfc21b0c","contentHash":"60837cd017e125cd90b8de2a8ea31bff50ef777232454e9673e8d66f9ccb5d6b"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.products-under-an-agency.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.products-under-an-agency.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8960736a78454f332ec8241ee97ec192a83e345b","contentHash":"5f692e150f3fd71cedd7678689f0ed7389979c9b788c9ccd92fead3ea814d489"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.update-bills.order.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.update-bills.order.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":30},"end":{"line":3,"column":55}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"e581f3ed5c266c7d9be5af54efa722719da7bf00","contentHash":"d5c98e4483adf8049cd79fb348858fbfa24e7698bf508bcdb0e386822f4b1448"},"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.validate-bill.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.validate-bill.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":27},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":34}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9963c7963fbce6d51b60444720cb7911c2d92901","contentHash":"ee4c871eff6e651794fc443a39bbb090e995d4ade6dc35b10e4fe852181685d1"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.charge.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.charge.js","statementMap":{"0":{"start":{"line":1,"column":20},"end":{"line":1,"column":66}},"1":{"start":{"line":2,"column":17},"end":{"line":2,"column":60}},"2":{"start":{"line":3,"column":16},"end":{"line":3,"column":59}},"3":{"start":{"line":4,"column":20},"end":{"line":4,"column":59}},"4":{"start":{"line":5,"column":24},"end":{"line":5,"column":67}},"5":{"start":{"line":6,"column":23},"end":{"line":6,"column":65}},"6":{"start":{"line":7,"column":20},"end":{"line":7,"column":58}},"7":{"start":{"line":8,"column":19},"end":{"line":8,"column":67}},"8":{"start":{"line":9,"column":17},"end":{"line":9,"column":60}},"9":{"start":{"line":10,"column":18},"end":{"line":10,"column":62}},"10":{"start":{"line":11,"column":15},"end":{"line":11,"column":56}},"11":{"start":{"line":12,"column":17},"end":{"line":12,"column":60}},"12":{"start":{"line":15,"column":2},"end":{"line":17,"column":4}},"13":{"start":{"line":16,"column":4},"end":{"line":16,"column":39}},"14":{"start":{"line":19,"column":2},"end":{"line":21,"column":4}},"15":{"start":{"line":20,"column":4},"end":{"line":20,"column":36}},"16":{"start":{"line":23,"column":2},"end":{"line":25,"column":4}},"17":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"18":{"start":{"line":27,"column":2},"end":{"line":29,"column":4}},"19":{"start":{"line":28,"column":4},"end":{"line":28,"column":35}},"20":{"start":{"line":31,"column":2},"end":{"line":33,"column":4}},"21":{"start":{"line":32,"column":4},"end":{"line":32,"column":39}},"22":{"start":{"line":35,"column":2},"end":{"line":37,"column":4}},"23":{"start":{"line":36,"column":4},"end":{"line":36,"column":43}},"24":{"start":{"line":39,"column":2},"end":{"line":41,"column":4}},"25":{"start":{"line":40,"column":4},"end":{"line":40,"column":42}},"26":{"start":{"line":42,"column":2},"end":{"line":44,"column":4}},"27":{"start":{"line":43,"column":4},"end":{"line":43,"column":38}},"28":{"start":{"line":45,"column":2},"end":{"line":47,"column":4}},"29":{"start":{"line":46,"column":4},"end":{"line":46,"column":36}},"30":{"start":{"line":48,"column":2},"end":{"line":50,"column":4}},"31":{"start":{"line":49,"column":4},"end":{"line":49,"column":37}},"32":{"start":{"line":51,"column":2},"end":{"line":53,"column":4}},"33":{"start":{"line":52,"column":4},"end":{"line":52,"column":34}},"34":{"start":{"line":54,"column":2},"end":{"line":56,"column":4}},"35":{"start":{"line":55,"column":4},"end":{"line":55,"column":36}},"36":{"start":{"line":58,"column":0},"end":{"line":58,"column":24}}},"fnMap":{"0":{"name":"Charge","decl":{"start":{"line":14,"column":9},"end":{"line":14,"column":15}},"loc":{"start":{"line":14,"column":26},"end":{"line":57,"column":1}},"line":14},"1":{"name":"(anonymous_1)","decl":{"start":{"line":15,"column":14},"end":{"line":15,"column":15}},"loc":{"start":{"line":15,"column":30},"end":{"line":17,"column":3}},"line":15},"2":{"name":"(anonymous_2)","decl":{"start":{"line":19,"column":12},"end":{"line":19,"column":13}},"loc":{"start":{"line":19,"column":28},"end":{"line":21,"column":3}},"line":19},"3":{"name":"(anonymous_3)","decl":{"start":{"line":23,"column":13},"end":{"line":23,"column":14}},"loc":{"start":{"line":23,"column":29},"end":{"line":25,"column":3}},"line":23},"4":{"name":"(anonymous_4)","decl":{"start":{"line":27,"column":12},"end":{"line":27,"column":13}},"loc":{"start":{"line":27,"column":28},"end":{"line":29,"column":3}},"line":27},"5":{"name":"(anonymous_5)","decl":{"start":{"line":31,"column":14},"end":{"line":31,"column":15}},"loc":{"start":{"line":31,"column":30},"end":{"line":33,"column":3}},"line":31},"6":{"name":"(anonymous_6)","decl":{"start":{"line":35,"column":18},"end":{"line":35,"column":19}},"loc":{"start":{"line":35,"column":34},"end":{"line":37,"column":3}},"line":35},"7":{"name":"(anonymous_7)","decl":{"start":{"line":39,"column":17},"end":{"line":39,"column":18}},"loc":{"start":{"line":39,"column":33},"end":{"line":41,"column":3}},"line":39},"8":{"name":"(anonymous_8)","decl":{"start":{"line":42,"column":23},"end":{"line":42,"column":24}},"loc":{"start":{"line":42,"column":39},"end":{"line":44,"column":3}},"line":42},"9":{"name":"(anonymous_9)","decl":{"start":{"line":45,"column":18},"end":{"line":45,"column":19}},"loc":{"start":{"line":45,"column":34},"end":{"line":47,"column":3}},"line":45},"10":{"name":"(anonymous_10)","decl":{"start":{"line":48,"column":19},"end":{"line":48,"column":20}},"loc":{"start":{"line":48,"column":35},"end":{"line":50,"column":3}},"line":48},"11":{"name":"(anonymous_11)","decl":{"start":{"line":51,"column":16},"end":{"line":51,"column":17}},"loc":{"start":{"line":51,"column":32},"end":{"line":53,"column":3}},"line":51},"12":{"name":"(anonymous_12)","decl":{"start":{"line":54,"column":18},"end":{"line":54,"column":19}},"loc":{"start":{"line":54,"column":34},"end":{"line":56,"column":3}},"line":54}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":30,"13":5,"14":30,"15":2,"16":30,"17":2,"18":30,"19":1,"20":30,"21":2,"22":30,"23":1,"24":30,"25":0,"26":30,"27":2,"28":30,"29":4,"30":30,"31":4,"32":30,"33":4,"34":30,"35":3,"36":1},"f":{"0":30,"1":5,"2":2,"3":2,"4":1,"5":2,"6":1,"7":0,"8":2,"9":4,"10":4,"11":4,"12":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"93104e87f797fffdcd8bc4b5b422b7617b1e21ff","contentHash":"0b4e6dae565acd8c9465111bd0ea94ff6cdb488a4fa39bcfe5865c7d3f8e2cad"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.card.charge.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.card.charge.js","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":35}},"1":{"start":{"line":3,"column":22},"end":{"line":3,"column":54}},"2":{"start":{"line":4,"column":29},"end":{"line":4,"column":56}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":36}},"4":{"start":{"line":9,"column":18},"end":{"line":9,"column":60}},"5":{"start":{"line":10,"column":16},"end":{"line":10,"column":18}},"6":{"start":{"line":11,"column":2},"end":{"line":11,"column":44}},"7":{"start":{"line":12,"column":2},"end":{"line":12,"column":29}},"8":{"start":{"line":14,"column":29},"end":{"line":17,"column":3}},"9":{"start":{"line":20,"column":2},"end":{"line":20,"column":18}},"10":{"start":{"line":22,"column":0},"end":{"line":22,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":6,"column":15},"end":{"line":6,"column":22}},"loc":{"start":{"line":6,"column":36},"end":{"line":21,"column":1}},"line":6}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":5,"4":3,"5":3,"6":3,"7":3,"8":3,"9":3,"10":1},"f":{"0":5},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"22049d582b1bfbf1b935aa5c25b6a39b9eb55a69","contentHash":"0d7d7b647f9bed76f8b5f4d4e47534c92fa6b02b3066abd6fb9341b5e02657e7"},"/Users/erikobatomi/Documents/Node-v3/services/charge/encryp.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/encryp.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":33}},"1":{"start":{"line":3,"column":15},"end":{"line":6,"column":3}},"2":{"start":{"line":7,"column":2},"end":{"line":9,"column":5}},"3":{"start":{"line":10,"column":2},"end":{"line":10,"column":56}},"4":{"start":{"line":11,"column":2},"end":{"line":11,"column":18}},"5":{"start":{"line":12,"column":18},"end":{"line":12,"column":31}},"6":{"start":{"line":13,"column":2},"end":{"line":13,"column":51}},"7":{"start":{"line":16,"column":0},"end":{"line":16,"column":24}}},"fnMap":{"0":{"name":"encrypt","decl":{"start":{"line":2,"column":9},"end":{"line":2,"column":16}},"loc":{"start":{"line":2,"column":28},"end":{"line":14,"column":1}},"line":2}},"branchMap":{},"s":{"0":1,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4f49f40cffce66b094698516cff8b43230f4ecae","contentHash":"e844662abf83be069a0e3bcebdbeb5cfe6aed565e4e8c4ae22975d6eb374cfa5"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ng-banks.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ng-banks.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":29},"end":{"line":3,"column":56}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":36}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":78}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d5ca3264b61ce6ecaecf45fde942fa0600c1e315","contentHash":"7a962990dc0e0c34333529aad092eb51192c853d0244fc7b6fe543c5b897d7ee"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.uk-banks.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.uk-banks.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":29},"end":{"line":3,"column":56}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":36}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a0382e0df437eb38d11af98522c23b65786560ee","contentHash":"c4df44daf82adb58ce9972261250a0ba59492f24359dd1dc63e2e4e8ad0b7216"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ussd.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ussd.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":29},"end":{"line":3,"column":56}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":36}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":78}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"68d8abc84a3c1151377d2133132fc00507e103da","contentHash":"faf52ccee8ba477ae77fa78d519ad7f3fd9b734152ac06afea09e891b3340949"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.validate.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.validate.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":27},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":34}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":76}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a7f5f0d81640d0b89bd33b8bb545e75f080bc384","contentHash":"9ccfd254a3da97ae4592ac609d477754cdb34bdd4c02c380746df0a3a2c4d139"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.voucher.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.voucher.js","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"75e24c2d599bf75fd9de8319a5ae8ae96305f540","contentHash":"76747bab4fed55a43774d4eea77d69725d4ed1748428c23e13f43701789d9b53"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ach.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ach.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":2,"4":2,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"592f0e7e2c994ae70ed02ef8db2c3c9fce3ee476","contentHash":"99833e99d5b2c1b2c786172fdbe73e7051172a3a849419d9495286bf45b5c7f5"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.bank.transfer.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.bank.transfer.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"40deb7ea3edd33295cce38b1e51bc727dc0ff84c","contentHash":"4fbbdfc6389b4a0ea59f83a4a8935e9a2cc5badc58b3eff11bc9aec70a17e071"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.applepay.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.applepay.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":4,"3":2,"4":2,"5":1},"f":{"0":4},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1fc2c61a167b7216675362623aee319661364e54","contentHash":"ca9f5ee8c982a7bcdd053d36f0ddc8690776c67cb11f74aec1081e00b6a7e9de"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.googlepay.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.googlepay.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":4,"3":2,"4":2,"5":1},"f":{"0":4},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"6d95613fb75e8d3b4b98f05c45cb042a42bca541","contentHash":"82b085c63dc781a4e2490574a16da0fbadfde2e7102fb52e6f3a21b41a2e6934"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.enaira.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.enaira.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":31},"end":{"line":3,"column":58}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":38}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":4,"3":2,"4":2,"5":1},"f":{"0":4},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1df9bb13cf88125bc9dc4fb60b8a666c3c77ee9c","contentHash":"813a8a1e032fa7597fae9a53ba0355210a5ae0350ce0c1364f89cb5aa1aa116b"},"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.fawrypay.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.fawrypay.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":29},"end":{"line":3,"column":56}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":36}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":3,"3":2,"4":2,"5":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f3a6fb5ae659b02a59bf6a653c14686bebb98784","contentHash":"1ca61deb1771e68bc3b26dd03fc2bf3de27d9993d3e3dac56d37cf1a7cc13326"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.ebills.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.ebills.js","statementMap":{"0":{"start":{"line":1,"column":21},"end":{"line":1,"column":61}},"1":{"start":{"line":2,"column":22},"end":{"line":2,"column":63}},"2":{"start":{"line":6,"column":1},"end":{"line":10,"column":2}},"3":{"start":{"line":8,"column":2},"end":{"line":8,"column":38}},"4":{"start":{"line":12,"column":1},"end":{"line":15,"column":2}},"5":{"start":{"line":14,"column":2},"end":{"line":14,"column":39}},"6":{"start":{"line":18,"column":0},"end":{"line":18,"column":24}}},"fnMap":{"0":{"name":"Ebills","decl":{"start":{"line":4,"column":9},"end":{"line":4,"column":15}},"loc":{"start":{"line":4,"column":26},"end":{"line":17,"column":1}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":14},"end":{"line":6,"column":15}},"loc":{"start":{"line":6,"column":30},"end":{"line":10,"column":2}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":12,"column":15},"end":{"line":12,"column":16}},"loc":{"start":{"line":12,"column":31},"end":{"line":15,"column":2}},"line":12}},"branchMap":{},"s":{"0":1,"1":1,"2":4,"3":3,"4":4,"5":1,"6":1},"f":{"0":4,"1":3,"2":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2b753d05a721900710d932d0a4ca3c09468086fa","contentHash":"5388c94b5631f3fb1c6f379178928ecf589dd7c5aaaae768610f6a451167b7c5"},"/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.order.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.order.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":54}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":67}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":3,"3":1,"4":1,"5":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"eee9eb67a5546a33c364a57a11704966844d1590","contentHash":"81575c6cda79612f44fb65607a683d50062f5d5c05bfa6b2ae49948408f4e56e"},"/Users/erikobatomi/Documents/Node-v3/services/schema/auxillary.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/schema/auxillary.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":26}},"1":{"start":{"line":4,"column":24},"end":{"line":20,"column":2}},"2":{"start":{"line":23,"column":18},"end":{"line":37,"column":2}},"3":{"start":{"line":40,"column":27},"end":{"line":42,"column":2}},"4":{"start":{"line":45,"column":21},"end":{"line":47,"column":2}},"5":{"start":{"line":50,"column":31},"end":{"line":52,"column":2}},"6":{"start":{"line":55,"column":19},"end":{"line":59,"column":2}},"7":{"start":{"line":62,"column":20},"end":{"line":84,"column":2}},"8":{"start":{"line":80,"column":6},"end":{"line":81,"column":57}},"9":{"start":{"line":81,"column":8},"end":{"line":81,"column":57}},"10":{"start":{"line":82,"column":6},"end":{"line":82,"column":19}},"11":{"start":{"line":87,"column":22},"end":{"line":92,"column":2}},"12":{"start":{"line":95,"column":23},"end":{"line":97,"column":2}},"13":{"start":{"line":100,"column":21},"end":{"line":104,"column":2}},"14":{"start":{"line":107,"column":25},"end":{"line":111,"column":2}},"15":{"start":{"line":114,"column":26},"end":{"line":127,"column":2}},"16":{"start":{"line":121,"column":6},"end":{"line":122,"column":57}},"17":{"start":{"line":122,"column":8},"end":{"line":122,"column":57}},"18":{"start":{"line":123,"column":6},"end":{"line":123,"column":19}},"19":{"start":{"line":130,"column":25},"end":{"line":133,"column":2}},"20":{"start":{"line":136,"column":23},"end":{"line":139,"column":2}},"21":{"start":{"line":142,"column":26},"end":{"line":147,"column":2}},"22":{"start":{"line":149,"column":24},"end":{"line":151,"column":2}},"23":{"start":{"line":153,"column":0},"end":{"line":170,"column":2}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":79,"column":12},"end":{"line":79,"column":13}},"loc":{"start":{"line":79,"column":23},"end":{"line":83,"column":5}},"line":79},"1":{"name":"(anonymous_1)","decl":{"start":{"line":120,"column":12},"end":{"line":120,"column":13}},"loc":{"start":{"line":120,"column":23},"end":{"line":124,"column":5}},"line":120}},"branchMap":{"0":{"loc":{"start":{"line":80,"column":6},"end":{"line":81,"column":57}},"type":"if","locations":[{"start":{"line":80,"column":6},"end":{"line":81,"column":57}},{"start":{"line":80,"column":6},"end":{"line":81,"column":57}}],"line":80},"1":{"loc":{"start":{"line":80,"column":10},"end":{"line":80,"column":42}},"type":"binary-expr","locations":[{"start":{"line":80,"column":10},"end":{"line":80,"column":15}},{"start":{"line":80,"column":19},"end":{"line":80,"column":42}}],"line":80},"2":{"loc":{"start":{"line":121,"column":6},"end":{"line":122,"column":57}},"type":"if","locations":[{"start":{"line":121,"column":6},"end":{"line":122,"column":57}},{"start":{"line":121,"column":6},"end":{"line":122,"column":57}}],"line":121},"3":{"loc":{"start":{"line":121,"column":10},"end":{"line":121,"column":42}},"type":"binary-expr","locations":[{"start":{"line":121,"column":10},"end":{"line":121,"column":15}},{"start":{"line":121,"column":19},"end":{"line":121,"column":42}}],"line":121}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":2,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":2,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1},"f":{"0":2,"1":2},"b":{"0":[1,1],"1":[2,2],"2":[1,1],"3":[2,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"344c322e3ecb13691a936f496306bff93bc692ae","contentHash":"163b2f861ce42b81a9f47c96a45cd72f6882f04c6399e440f369141d507fb681"},"/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.update.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.update.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":55}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f5dd82de0f0653821eadd13cb69f819d68486531","contentHash":"a5724062a33a157fff19e991b78be5deffb0594ca7a87fa8913d204887ed40aa"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.misc.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.misc.js","statementMap":{"0":{"start":{"line":1,"column":26},"end":{"line":1,"column":76}},"1":{"start":{"line":2,"column":16},"end":{"line":2,"column":57}},"2":{"start":{"line":3,"column":16},"end":{"line":3,"column":61}},"3":{"start":{"line":4,"column":17},"end":{"line":4,"column":60}},"4":{"start":{"line":5,"column":20},"end":{"line":5,"column":68}},"5":{"start":{"line":8,"column":2},"end":{"line":10,"column":4}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":45}},"7":{"start":{"line":12,"column":2},"end":{"line":14,"column":4}},"8":{"start":{"line":13,"column":4},"end":{"line":13,"column":35}},"9":{"start":{"line":16,"column":2},"end":{"line":18,"column":4}},"10":{"start":{"line":17,"column":4},"end":{"line":17,"column":35}},"11":{"start":{"line":20,"column":2},"end":{"line":22,"column":3}},"12":{"start":{"line":21,"column":4},"end":{"line":21,"column":36}},"13":{"start":{"line":24,"column":2},"end":{"line":26,"column":4}},"14":{"start":{"line":25,"column":4},"end":{"line":25,"column":39}},"15":{"start":{"line":28,"column":0},"end":{"line":28,"column":22}}},"fnMap":{"0":{"name":"Misc","decl":{"start":{"line":7,"column":9},"end":{"line":7,"column":13}},"loc":{"start":{"line":7,"column":24},"end":{"line":27,"column":1}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":22},"end":{"line":8,"column":23}},"loc":{"start":{"line":8,"column":38},"end":{"line":10,"column":3}},"line":8},"2":{"name":"(anonymous_2)","decl":{"start":{"line":12,"column":13},"end":{"line":12,"column":14}},"loc":{"start":{"line":12,"column":29},"end":{"line":14,"column":3}},"line":12},"3":{"name":"(anonymous_3)","decl":{"start":{"line":16,"column":13},"end":{"line":16,"column":14}},"loc":{"start":{"line":16,"column":29},"end":{"line":18,"column":3}},"line":16},"4":{"name":"(anonymous_4)","decl":{"start":{"line":20,"column":19},"end":{"line":20,"column":20}},"loc":{"start":{"line":20,"column":35},"end":{"line":22,"column":3}},"line":20},"5":{"name":"(anonymous_5)","decl":{"start":{"line":24,"column":24},"end":{"line":24,"column":25}},"loc":{"start":{"line":24,"column":40},"end":{"line":26,"column":3}},"line":24}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":5,"6":1,"7":5,"8":1,"9":5,"10":1,"11":5,"12":1,"13":5,"14":1,"15":1},"f":{"0":5,"1":1,"2":1,"3":1,"4":1,"5":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"e48499d5041a8d491cf426c0a1e66370e61249b1","contentHash":"957d7035625bf80626a369eb3267db63b0578acebeac242758a41f95cbdcfa14"},"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances-currency.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances-currency.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":55}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"080767e032377be0679046b91ca5239ca3a1c85c","contentHash":"927f592df2d87e673911b3a51e21bc10d41be7ef7359ec8bd0e8cac31a861b88"},"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":4,"column":78}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":5,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"37ca47c53b042b4231e1cfccebaba0788081d660","contentHash":"d5dac772dd44b3bde08a36437051b271193ac9347b3bd259c5a158ad36674299"},"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.initiate.bvn.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.initiate.bvn.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":30},"end":{"line":3,"column":60}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":78}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"800c40925fdca2a6877b9b01932b8f3698ddde5c","contentHash":"1efd11efea465da2e8de7ed65d5cb76b2da554f1665fc75515b4741f11850b94"},"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.verify.bvn.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.verify.bvn.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":28},"end":{"line":3,"column":58}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":35}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8bce58ee468f4c8f9e1ee309345758dfe236ce8c","contentHash":"97d33c9b9a2a442becf73faf5c5390098d7f7fc37d582d8a56496eb35e49c529"},"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.resolve.account.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.resolve.account.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":26},"end":{"line":3,"column":56}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":33}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":23}},"4":{"start":{"line":8,"column":29},"end":{"line":8,"column":77}},"5":{"start":{"line":10,"column":2},"end":{"line":10,"column":18}},"6":{"start":{"line":13,"column":0},"end":{"line":13,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":11,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c98e056f1d625053af9d25a4e00b18555596a568","contentHash":"add19a5672d2a9f4371c28233bed2bc15cc1d674945d93367cb7e9c40847fd8b"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.mobile_money.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.mobile_money.js","statementMap":{"0":{"start":{"line":1,"column":11},"end":{"line":1,"column":57}},"1":{"start":{"line":2,"column":20},"end":{"line":2,"column":66}},"2":{"start":{"line":3,"column":11},"end":{"line":3,"column":58}},"3":{"start":{"line":4,"column":11},"end":{"line":4,"column":58}},"4":{"start":{"line":5,"column":11},"end":{"line":5,"column":58}},"5":{"start":{"line":6,"column":14},"end":{"line":6,"column":66}},"6":{"start":{"line":7,"column":11},"end":{"line":7,"column":60}},"7":{"start":{"line":10,"column":2},"end":{"line":12,"column":4}},"8":{"start":{"line":11,"column":4},"end":{"line":11,"column":30}},"9":{"start":{"line":14,"column":2},"end":{"line":16,"column":4}},"10":{"start":{"line":15,"column":4},"end":{"line":15,"column":39}},"11":{"start":{"line":18,"column":2},"end":{"line":20,"column":4}},"12":{"start":{"line":19,"column":4},"end":{"line":19,"column":30}},"13":{"start":{"line":22,"column":2},"end":{"line":24,"column":4}},"14":{"start":{"line":23,"column":4},"end":{"line":23,"column":30}},"15":{"start":{"line":25,"column":2},"end":{"line":27,"column":4}},"16":{"start":{"line":26,"column":4},"end":{"line":26,"column":33}},"17":{"start":{"line":29,"column":2},"end":{"line":31,"column":4}},"18":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"19":{"start":{"line":33,"column":2},"end":{"line":35,"column":3}},"20":{"start":{"line":34,"column":4},"end":{"line":34,"column":30}},"21":{"start":{"line":37,"column":0},"end":{"line":37,"column":30}}},"fnMap":{"0":{"name":"Mobile_money","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":21}},"loc":{"start":{"line":9,"column":32},"end":{"line":36,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":15},"end":{"line":10,"column":16}},"loc":{"start":{"line":10,"column":31},"end":{"line":12,"column":3}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":15},"end":{"line":14,"column":16}},"loc":{"start":{"line":14,"column":31},"end":{"line":16,"column":3}},"line":14},"3":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":16},"end":{"line":18,"column":17}},"loc":{"start":{"line":18,"column":32},"end":{"line":20,"column":3}},"line":18},"4":{"name":"(anonymous_4)","decl":{"start":{"line":22,"column":16},"end":{"line":22,"column":17}},"loc":{"start":{"line":22,"column":32},"end":{"line":24,"column":3}},"line":22},"5":{"name":"(anonymous_5)","decl":{"start":{"line":25,"column":22},"end":{"line":25,"column":23}},"loc":{"start":{"line":25,"column":38},"end":{"line":27,"column":3}},"line":25},"6":{"name":"(anonymous_6)","decl":{"start":{"line":29,"column":16},"end":{"line":29,"column":17}},"loc":{"start":{"line":29,"column":32},"end":{"line":31,"column":3}},"line":29},"7":{"name":"(anonymous_7)","decl":{"start":{"line":33,"column":18},"end":{"line":33,"column":19}},"loc":{"start":{"line":33,"column":34},"end":{"line":35,"column":3}},"line":33}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":19,"8":3,"9":19,"10":3,"11":19,"12":2,"13":19,"14":2,"15":19,"16":5,"17":19,"18":2,"19":19,"20":2,"21":1},"f":{"0":19,"1":3,"2":3,"3":2,"4":2,"5":5,"6":2,"7":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5e6eee7ee91c8e14bf29cb783ef20a0e01010e07","contentHash":"dde4cc542ba6e88a19841b856561c63cbcc33ca52f579cd0fe7d4a174c5edd78"},"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.ghana.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.ghana.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":3,"3":1,"4":1,"5":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"205b3a3cfab227630eea00fa120bc039943843a9","contentHash":"9069bf221d2107b3a1080fa40fe293796d898c90dca4883150293ddf8ee3e4ed"},"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.mpesa.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.mpesa.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":79}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":3,"3":2,"4":2,"5":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8734da56dac153dba45badb3d8dbdfecde330e5b","contentHash":"a0c456d306643304ce5f19f57b5a4bcdf0b97a51ef40e24d5a23809d7e676527"},"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.rwanda.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.rwanda.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4c320db05fac4d7da2e25a240f356140c6cce062","contentHash":"98fd2cae2adf4c45d151a24ffe83a615c51317dafcff89ad6b05a0da9fd59f97"},"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.uganda.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.uganda.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"356d33b641322353f8b3b02fc00d7c2b455acaf3","contentHash":"cfc68174234958d5b8ae99b5d84a4033c635dc169a01c9e700e79f6c9739f0fa"},"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.zambia.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.zambia.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8f06eca8aa02cb1ff979139c6596f995cfee9601","contentHash":"e705eb0d48d92d5af0161abd5da6b279a72631a5bcae92545602192a0d5fc823"},"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.francophone.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.francophone.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":5,"3":3,"4":3,"5":1},"f":{"0":5},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"cb7782e6207cb9416f0ea388d81648e916b3ee04","contentHash":"cbc5121637755396a3611b5a27d85b5b2e5c85c430fb86dbeb12514156126839"},"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.tanzania.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.tanzania.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"33bf83f059271325340238412051c67e180ce565","contentHash":"0991a9824afd90efb207e7a06eb30b83e0ade6f0ef16d4c07325dc3588c48982"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.otps.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.otps.js","statementMap":{"0":{"start":{"line":1,"column":19},"end":{"line":1,"column":58}},"1":{"start":{"line":2,"column":21},"end":{"line":2,"column":62}},"2":{"start":{"line":7,"column":1},"end":{"line":11,"column":2}},"3":{"start":{"line":9,"column":2},"end":{"line":9,"column":36}},"4":{"start":{"line":13,"column":1},"end":{"line":17,"column":2}},"5":{"start":{"line":15,"column":2},"end":{"line":15,"column":38}},"6":{"start":{"line":22,"column":0},"end":{"line":22,"column":21}}},"fnMap":{"0":{"name":"Otp","decl":{"start":{"line":5,"column":9},"end":{"line":5,"column":12}},"loc":{"start":{"line":5,"column":23},"end":{"line":21,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":15},"end":{"line":7,"column":16}},"loc":{"start":{"line":7,"column":31},"end":{"line":11,"column":2}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":17},"end":{"line":13,"column":18}},"loc":{"start":{"line":13,"column":33},"end":{"line":17,"column":2}},"line":13}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":2,"5":1,"6":1},"f":{"0":2,"1":1,"2":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"fe48453d68cf039cd16d9630281f783a8b53c870","contentHash":"c7392b6857cba0a0b2fc18d57a8404aef1702aa1e4d6b722792ccd22f4f792a4"},"/Users/erikobatomi/Documents/Node-v3/services/otps/rave.create.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/otps/rave.create.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":28},"end":{"line":3,"column":58}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":35}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":65}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"623ff0c6a5c283d895b16e9f6a973733a8480f41","contentHash":"ed43ef082469498086c5e2da368b2372d0a750fd8c7389136384e81e4499e409"},"/Users/erikobatomi/Documents/Node-v3/services/otps/rave.validate.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/otps/rave.validate.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":27},"end":{"line":3,"column":57}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":34}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2d095d3faed89e4109e7669d992ffed459314a78","contentHash":"4c8dd0b781e8fd572441340650898aa30baea82dd1534c52b9173b093f74fb80"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.payment_plan.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.payment_plan.js","statementMap":{"0":{"start":{"line":1,"column":20},"end":{"line":1,"column":68}},"1":{"start":{"line":2,"column":20},"end":{"line":2,"column":68}},"2":{"start":{"line":3,"column":21},"end":{"line":3,"column":75}},"3":{"start":{"line":4,"column":24},"end":{"line":4,"column":81}},"4":{"start":{"line":5,"column":20},"end":{"line":5,"column":68}},"5":{"start":{"line":12,"column":1},"end":{"line":16,"column":2}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":37}},"7":{"start":{"line":18,"column":1},"end":{"line":22,"column":2}},"8":{"start":{"line":20,"column":2},"end":{"line":20,"column":37}},"9":{"start":{"line":23,"column":1},"end":{"line":27,"column":2}},"10":{"start":{"line":25,"column":2},"end":{"line":25,"column":38}},"11":{"start":{"line":28,"column":1},"end":{"line":32,"column":2}},"12":{"start":{"line":30,"column":2},"end":{"line":30,"column":41}},"13":{"start":{"line":33,"column":1},"end":{"line":37,"column":2}},"14":{"start":{"line":35,"column":2},"end":{"line":35,"column":37}},"15":{"start":{"line":40,"column":0},"end":{"line":40,"column":30}}},"fnMap":{"0":{"name":"Payment_plan","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":21}},"loc":{"start":{"line":9,"column":32},"end":{"line":39,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":15},"end":{"line":12,"column":16}},"loc":{"start":{"line":12,"column":31},"end":{"line":16,"column":2}},"line":12},"2":{"name":"(anonymous_2)","decl":{"start":{"line":18,"column":15},"end":{"line":18,"column":16}},"loc":{"start":{"line":18,"column":31},"end":{"line":22,"column":2}},"line":18},"3":{"name":"(anonymous_3)","decl":{"start":{"line":23,"column":16},"end":{"line":23,"column":17}},"loc":{"start":{"line":23,"column":32},"end":{"line":27,"column":2}},"line":23},"4":{"name":"(anonymous_4)","decl":{"start":{"line":28,"column":17},"end":{"line":28,"column":18}},"loc":{"start":{"line":28,"column":33},"end":{"line":32,"column":2}},"line":28},"5":{"name":"(anonymous_5)","decl":{"start":{"line":33,"column":15},"end":{"line":33,"column":16}},"loc":{"start":{"line":33,"column":31},"end":{"line":37,"column":2}},"line":33}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":5,"6":1,"7":5,"8":1,"9":5,"10":1,"11":5,"12":1,"13":5,"14":1,"15":1},"f":{"0":5,"1":1,"2":1,"3":1,"4":1,"5":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9cc775c29a1b774a531671dc7412d44871a0a49b","contentHash":"1464c2bc1a66109728900faacdbce4273ac3caae6d8d6ee584ac2914468e2d67"},"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.create.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.create.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":50}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":74}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5eb4584a853ba4248f3e27467bd2af63ddf3878b","contentHash":"31a01d9079be71c2c9e95298d32c86630e9f23da33e8cc0190719b83f9c6fe37"},"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.cancel.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.cancel.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d0fd166038e9590fb84a8bad1734a7384ab06df8","contentHash":"79046b3564da751b3e05857826be26f31afbf0c0428df3b09892403ef992e53c"},"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.all.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.all.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":4,"column":79}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":5,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"eebb1688a8eeea3fc3d4411a4b70f4c7616c97c0","contentHash":"8500468b67451519ee24f0ce63f7eade737671bf9420a164070505fae8f36aca"},"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.single.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.single.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"6d36056f8420e147af5c9643cbc3e9ae543586ff","contentHash":"f1b7fde16447110f4e1daae681997e8d80addf79eed9e224c446d17bae7b0274"},"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.update.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.update.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":29},"end":{"line":3,"column":59}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":36}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"504619a48f9dbb5148dbb1c4592c11720cbdc3a6","contentHash":"10214c3211263e3747cbba64915ec90d5d92bbea1d52e7858a0eb0a8755aaa01"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.settlements.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.settlements.js","statementMap":{"0":{"start":{"line":1,"column":21},"end":{"line":1,"column":73}},"1":{"start":{"line":2,"column":17},"end":{"line":2,"column":65}},"2":{"start":{"line":8,"column":1},"end":{"line":12,"column":2}},"3":{"start":{"line":10,"column":2},"end":{"line":10,"column":38}},"4":{"start":{"line":14,"column":1},"end":{"line":18,"column":2}},"5":{"start":{"line":16,"column":2},"end":{"line":16,"column":34}},"6":{"start":{"line":22,"column":0},"end":{"line":22,"column":29}}},"fnMap":{"0":{"name":"Settlements","decl":{"start":{"line":5,"column":9},"end":{"line":5,"column":20}},"loc":{"start":{"line":5,"column":31},"end":{"line":21,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":18},"end":{"line":8,"column":19}},"loc":{"start":{"line":8,"column":34},"end":{"line":12,"column":2}},"line":8},"2":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":14},"end":{"line":14,"column":15}},"loc":{"start":{"line":14,"column":30},"end":{"line":18,"column":2}},"line":14}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":2,"5":1,"6":1},"f":{"0":2,"1":1,"2":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f37c8747be5827c967b4074f61bc841b9f4aa47c","contentHash":"d3925c1fea75c1f6423cd97eab2dcd6198835a3bc7a9cd8e079e671d2bc53674"},"/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve-all.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve-all.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":9,"column":4}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":10,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"38e4d712936a9a4ccd1c3124c898f5cdf9c9801b","contentHash":"11d93a47b7a888b1c4c13f00eb7b595cd418e111b5b5ace2c13e66f5f1c69f36"},"/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":48}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"27890be14e6065f24b8369673cda2809471ea87c","contentHash":"5ae10aad73c4895de96c66fa56c1a5d71a0cac01d276dcee149b294ceee9c91c"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.subscriptions.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.subscriptions.js","statementMap":{"0":{"start":{"line":1,"column":21},"end":{"line":1,"column":71}},"1":{"start":{"line":2,"column":19},"end":{"line":2,"column":67}},"2":{"start":{"line":3,"column":21},"end":{"line":3,"column":75}},"3":{"start":{"line":4,"column":18},"end":{"line":4,"column":75}},"4":{"start":{"line":10,"column":1},"end":{"line":14,"column":2}},"5":{"start":{"line":12,"column":2},"end":{"line":12,"column":38}},"6":{"start":{"line":16,"column":1},"end":{"line":20,"column":2}},"7":{"start":{"line":18,"column":2},"end":{"line":18,"column":36}},"8":{"start":{"line":22,"column":1},"end":{"line":26,"column":2}},"9":{"start":{"line":24,"column":2},"end":{"line":24,"column":38}},"10":{"start":{"line":28,"column":1},"end":{"line":32,"column":2}},"11":{"start":{"line":30,"column":2},"end":{"line":30,"column":35}},"12":{"start":{"line":35,"column":0},"end":{"line":35,"column":31}}},"fnMap":{"0":{"name":"Subscriptions","decl":{"start":{"line":7,"column":9},"end":{"line":7,"column":22}},"loc":{"start":{"line":7,"column":33},"end":{"line":34,"column":1}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":17},"end":{"line":10,"column":18}},"loc":{"start":{"line":10,"column":33},"end":{"line":14,"column":2}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":15},"end":{"line":16,"column":16}},"loc":{"start":{"line":16,"column":31},"end":{"line":20,"column":2}},"line":16},"3":{"name":"(anonymous_3)","decl":{"start":{"line":22,"column":18},"end":{"line":22,"column":19}},"loc":{"start":{"line":22,"column":34},"end":{"line":26,"column":2}},"line":22},"4":{"name":"(anonymous_4)","decl":{"start":{"line":28,"column":12},"end":{"line":28,"column":13}},"loc":{"start":{"line":28,"column":28},"end":{"line":32,"column":2}},"line":28}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":4,"5":1,"6":4,"7":1,"8":4,"9":1,"10":4,"11":1,"12":1},"f":{"0":4,"1":1,"2":1,"3":1,"4":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b6eba3fb4ab4b95a768f132767d8b0ae2e38dfd9","contentHash":"403a3182cbab9034bff41db0ab750741f220696e969d9fefd73c5517c181bae1"},"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.activate.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.activate.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d509b7c7dd9de8c97b2fc917bc07777b6d3318d9","contentHash":"43cca5277af06fa3c7d93e6c80241f4d77daa9f090e9624391005ee922f88943"},"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.cancel.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.cancel.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4695c2e09096dd3f911a99dd948d81994ff4f56a","contentHash":"85f8021ac4007473961c8bcb44d77c26388bedde089efd95542e881b4d384565"},"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.all.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.all.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":9,"column":4}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":10,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"62a85dbc20c908890b3838e149659a10e3e5c412","contentHash":"6b5ba8aa04db2c82d1d116976b725671d8c1c3489f684c8f2356567fd861739f"},"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.single.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.single.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":23},"end":{"line":3,"column":48}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":8,"column":75}},"5":{"start":{"line":10,"column":2},"end":{"line":10,"column":18}},"6":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":11,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"e0326745651f1709df56084d5af3d23e97ba4da0","contentHash":"f63ae1a3e3531ff4b7f4bf3398c0d2ad66194fb606d9252ac934d4cd6381e1f0"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.tokenized.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.tokenized.js","statementMap":{"0":{"start":{"line":1,"column":20},"end":{"line":1,"column":77}},"1":{"start":{"line":2,"column":21},"end":{"line":2,"column":73}},"2":{"start":{"line":3,"column":24},"end":{"line":3,"column":85}},"3":{"start":{"line":4,"column":30},"end":{"line":4,"column":104}},"4":{"start":{"line":5,"column":23},"end":{"line":5,"column":82}},"5":{"start":{"line":13,"column":1},"end":{"line":17,"column":2}},"6":{"start":{"line":15,"column":2},"end":{"line":15,"column":38}},"7":{"start":{"line":18,"column":1},"end":{"line":22,"column":2}},"8":{"start":{"line":20,"column":2},"end":{"line":20,"column":41}},"9":{"start":{"line":24,"column":1},"end":{"line":28,"column":2}},"10":{"start":{"line":26,"column":2},"end":{"line":26,"column":37}},"11":{"start":{"line":30,"column":1},"end":{"line":34,"column":2}},"12":{"start":{"line":32,"column":2},"end":{"line":32,"column":47}},"13":{"start":{"line":37,"column":1},"end":{"line":41,"column":2}},"14":{"start":{"line":39,"column":2},"end":{"line":39,"column":40}},"15":{"start":{"line":46,"column":0},"end":{"line":46,"column":27}}},"fnMap":{"0":{"name":"Tokenized","decl":{"start":{"line":10,"column":9},"end":{"line":10,"column":18}},"loc":{"start":{"line":10,"column":29},"end":{"line":45,"column":1}},"line":10},"1":{"name":"(anonymous_1)","decl":{"start":{"line":13,"column":15},"end":{"line":13,"column":16}},"loc":{"start":{"line":13,"column":31},"end":{"line":17,"column":2}},"line":13},"2":{"name":"(anonymous_2)","decl":{"start":{"line":18,"column":19},"end":{"line":18,"column":20}},"loc":{"start":{"line":18,"column":35},"end":{"line":22,"column":2}},"line":18},"3":{"name":"(anonymous_3)","decl":{"start":{"line":24,"column":13},"end":{"line":24,"column":14}},"loc":{"start":{"line":24,"column":29},"end":{"line":28,"column":2}},"line":24},"4":{"name":"(anonymous_4)","decl":{"start":{"line":30,"column":34},"end":{"line":30,"column":35}},"loc":{"start":{"line":30,"column":50},"end":{"line":34,"column":2}},"line":30},"5":{"name":"(anonymous_5)","decl":{"start":{"line":37,"column":21},"end":{"line":37,"column":22}},"loc":{"start":{"line":37,"column":37},"end":{"line":41,"column":2}},"line":37}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":6,"6":1,"7":6,"8":1,"9":6,"10":1,"11":6,"12":1,"13":6,"14":2,"15":1},"f":{"0":6,"1":1,"2":1,"3":1,"4":1,"5":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"3450c969c4d5832069d27d2311db923f573c2154","contentHash":"b629309c3db46c18112963f180023382583172db61a3aba335d49ea514176928"},"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.bulk.charge.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.bulk.charge.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":28},"end":{"line":3,"column":55}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":35}},"3":{"start":{"line":7,"column":29},"end":{"line":10,"column":3}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":18}},"5":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":13,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"56f87ff313e080a60a8e9710b480d75f6cfe52e0","contentHash":"dd2dec2120b21462276926668597933f4cfe592bf3825589231ab61e5518e6fd"},"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.charge.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.charge.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":51}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":78}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f6c3ef17ff4b730adae6801694fb196985582dab","contentHash":"fc5817a106860131722a6d5b14ed7ea7a53fe3b07b80471eee9648f04410863f"},"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.a.bulk.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.a.bulk.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":27},"end":{"line":3,"column":57}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":34}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"0f1eed6a6b95165ef6943e279106a54492c2e2e6","contentHash":"cf46dcab9b78c05e18545707341b8cd1ac133f0981441f7b8c7dd987d7100631"},"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.charge.transactions.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.charge.transactions.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":27},"end":{"line":3,"column":57}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":34}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9896a537b8d8e86e96a3048a8c06437c2e93410c","contentHash":"3116c9243a632b74c1a5298c9bb7365b30c2d67a0313954febadfc100f120141"},"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.update.tokens.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.update.tokens.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":30},"end":{"line":3,"column":60}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":37}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":2,"3":1,"4":1,"5":1,"6":1},"f":{"0":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"121901168a4a8d2a4d81f2c4ee946a579c69d055","contentHash":"0aa41d96bea09ccbe43ec90e8ba7021be6239002e2ba67e56a69b1db828e54f1"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.transactions.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.transactions.js","statementMap":{"0":{"start":{"line":1,"column":20},"end":{"line":1,"column":67}},"1":{"start":{"line":2,"column":18},"end":{"line":2,"column":62}},"2":{"start":{"line":3,"column":21},"end":{"line":3,"column":68}},"3":{"start":{"line":4,"column":27},"end":{"line":4,"column":80}},"4":{"start":{"line":5,"column":23},"end":{"line":5,"column":72}},"5":{"start":{"line":6,"column":21},"end":{"line":6,"column":68}},"6":{"start":{"line":7,"column":24},"end":{"line":7,"column":80}},"7":{"start":{"line":10,"column":2},"end":{"line":12,"column":4}},"8":{"start":{"line":11,"column":4},"end":{"line":11,"column":39}},"9":{"start":{"line":14,"column":2},"end":{"line":16,"column":4}},"10":{"start":{"line":15,"column":4},"end":{"line":15,"column":37}},"11":{"start":{"line":18,"column":2},"end":{"line":20,"column":4}},"12":{"start":{"line":19,"column":4},"end":{"line":19,"column":40}},"13":{"start":{"line":22,"column":2},"end":{"line":24,"column":4}},"14":{"start":{"line":23,"column":4},"end":{"line":23,"column":46}},"15":{"start":{"line":26,"column":2},"end":{"line":28,"column":4}},"16":{"start":{"line":27,"column":4},"end":{"line":27,"column":42}},"17":{"start":{"line":30,"column":2},"end":{"line":32,"column":4}},"18":{"start":{"line":31,"column":4},"end":{"line":31,"column":40}},"19":{"start":{"line":34,"column":2},"end":{"line":36,"column":3}},"20":{"start":{"line":35,"column":4},"end":{"line":35,"column":43}},"21":{"start":{"line":38,"column":0},"end":{"line":38,"column":30}}},"fnMap":{"0":{"name":"Transactions","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":21}},"loc":{"start":{"line":9,"column":32},"end":{"line":37,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":15},"end":{"line":10,"column":16}},"loc":{"start":{"line":10,"column":31},"end":{"line":12,"column":3}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":13},"end":{"line":14,"column":14}},"loc":{"start":{"line":14,"column":29},"end":{"line":16,"column":3}},"line":14},"3":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":16},"end":{"line":18,"column":17}},"loc":{"start":{"line":18,"column":32},"end":{"line":20,"column":3}},"line":18},"4":{"name":"(anonymous_4)","decl":{"start":{"line":22,"column":22},"end":{"line":22,"column":23}},"loc":{"start":{"line":22,"column":38},"end":{"line":24,"column":3}},"line":22},"5":{"name":"(anonymous_5)","decl":{"start":{"line":26,"column":15},"end":{"line":26,"column":16}},"loc":{"start":{"line":26,"column":31},"end":{"line":28,"column":3}},"line":26},"6":{"name":"(anonymous_6)","decl":{"start":{"line":30,"column":16},"end":{"line":30,"column":17}},"loc":{"start":{"line":30,"column":32},"end":{"line":32,"column":3}},"line":30},"7":{"name":"(anonymous_7)","decl":{"start":{"line":34,"column":22},"end":{"line":34,"column":23}},"loc":{"start":{"line":34,"column":38},"end":{"line":36,"column":3}},"line":34}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":7,"8":1,"9":7,"10":1,"11":7,"12":1,"13":7,"14":1,"15":7,"16":1,"17":7,"18":1,"19":7,"20":1,"21":1},"f":{"0":7,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"68f24f5d69453ead341d1812cdb156e57e3eea4f","contentHash":"8966610150f041b56beb9cea70afd39bb76bc9a9d1e799144ee6deef107932ee"},"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.events.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.events.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"122cbf6571a1a71c5b0992e3e99b471b4977f2e0","contentHash":"f4b0061a412865e5f549ed421fe30340091035ee0432d06c88537840a1ac7db3"},"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.fee.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.fee.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":22},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":29}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ea589c9a2cc1983d840754911b32858dc54935d9","contentHash":"0446755527565ebb3fabe05adbc5fc6d20bce0cf61e63986be8199fd58d67bc7"},"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.refund.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.refund.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":52}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":32}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":23}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"925f23b94e44b58775cc752d97165e2a5fca2550","contentHash":"89ade50778e933ae233a6a78af8e24e4e0e711a9f288cb56eb2b2c5b377be870"},"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.resend-hooks.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.resend-hooks.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":23}},"4":{"start":{"line":8,"column":29},"end":{"line":11,"column":3}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":18}},"6":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":14,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"45b917d770f8e5db78f5f4dac54aad220ce7d6b8","contentHash":"f211f43ec958673097cb05a6edb3c5e3b472e3d68b8dc6c7aaea540b42465264"},"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.retrieve.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.retrieve.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":9,"column":4}},"2":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":10,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"130c2ae0e59d6905ee4807e838adf219405bfcd6","contentHash":"c5000b70e1b0883467465d95609874aee4973ea3ad384cb31e085d17b908ad03"},"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"7fa6ed56a85b0a9ad839ea52efb031ed63bd4073","contentHash":"c0c2a89793b8dfb243f2a335d01e08ebcd4cad052be9decd0c97096bf6ac6233"},"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify-by-txref.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify-by-txref.js","statementMap":{"0":{"start":{"line":1,"column":23},"end":{"line":1,"column":48}},"1":{"start":{"line":3,"column":22},"end":{"line":3,"column":54}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":30}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":16,"column":0},"end":{"line":16,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d809a1b7aa7c790abc181dd9ec0b3c4ae3e9a549","contentHash":"f81c0d77a7d3ea562fddbc4ac57d5b4875350607a7c013de5771533b31acf4f9"},"/Users/erikobatomi/Documents/Node-v3/lib/rave.transfers.js":{"path":"/Users/erikobatomi/Documents/Node-v3/lib/rave.transfers.js","statementMap":{"0":{"start":{"line":1,"column":22},"end":{"line":1,"column":64}},"1":{"start":{"line":2,"column":21},"end":{"line":2,"column":62}},"2":{"start":{"line":3,"column":26},"end":{"line":3,"column":72}},"3":{"start":{"line":4,"column":24},"end":{"line":4,"column":80}},"4":{"start":{"line":5,"column":21},"end":{"line":5,"column":64}},"5":{"start":{"line":6,"column":15},"end":{"line":6,"column":59}},"6":{"start":{"line":9,"column":2},"end":{"line":11,"column":4}},"7":{"start":{"line":10,"column":4},"end":{"line":10,"column":41}},"8":{"start":{"line":13,"column":2},"end":{"line":15,"column":4}},"9":{"start":{"line":14,"column":4},"end":{"line":14,"column":40}},"10":{"start":{"line":16,"column":2},"end":{"line":18,"column":4}},"11":{"start":{"line":17,"column":4},"end":{"line":17,"column":45}},"12":{"start":{"line":19,"column":2},"end":{"line":21,"column":4}},"13":{"start":{"line":20,"column":4},"end":{"line":20,"column":43}},"14":{"start":{"line":22,"column":2},"end":{"line":24,"column":4}},"15":{"start":{"line":23,"column":4},"end":{"line":23,"column":40}},"16":{"start":{"line":25,"column":2},"end":{"line":27,"column":4}},"17":{"start":{"line":26,"column":4},"end":{"line":26,"column":34}},"18":{"start":{"line":29,"column":0},"end":{"line":29,"column":27}}},"fnMap":{"0":{"name":"Transfers","decl":{"start":{"line":8,"column":9},"end":{"line":8,"column":18}},"loc":{"start":{"line":8,"column":29},"end":{"line":28,"column":1}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":14},"end":{"line":9,"column":15}},"loc":{"start":{"line":9,"column":30},"end":{"line":11,"column":3}},"line":9},"2":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":13},"end":{"line":13,"column":14}},"loc":{"start":{"line":13,"column":29},"end":{"line":15,"column":3}},"line":13},"3":{"name":"(anonymous_3)","decl":{"start":{"line":16,"column":18},"end":{"line":16,"column":19}},"loc":{"start":{"line":16,"column":34},"end":{"line":18,"column":3}},"line":16},"4":{"name":"(anonymous_4)","decl":{"start":{"line":19,"column":15},"end":{"line":19,"column":16}},"loc":{"start":{"line":19,"column":31},"end":{"line":21,"column":3}},"line":19},"5":{"name":"(anonymous_5)","decl":{"start":{"line":22,"column":24},"end":{"line":22,"column":25}},"loc":{"start":{"line":22,"column":40},"end":{"line":24,"column":3}},"line":22},"6":{"name":"(anonymous_6)","decl":{"start":{"line":25,"column":26},"end":{"line":25,"column":27}},"loc":{"start":{"line":25,"column":42},"end":{"line":27,"column":3}},"line":25}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":8,"7":1,"8":8,"9":1,"10":8,"11":3,"12":8,"13":1,"14":8,"15":1,"16":8,"17":1,"18":1},"f":{"0":8,"1":1,"2":1,"3":3,"4":1,"5":1,"6":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"0ae623da225b58b485130feec9e0c93d70a30ab3","contentHash":"c634a1ea26950f7a7ceed38985fd1bcbe64b4a24b5c64140b3e331ab645b2fff"},"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.bulk.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.bulk.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":37},"end":{"line":3,"column":64}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":44}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":75}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c1e391ae99282bc11109c88cfdb42c0b39435d25","contentHash":"8f7ff01c26c59e9d0bdcde41cdd2f476c21884343a8062e12eed0e93d937a81c"},"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fee.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fee.js","statementMap":{"0":{"start":{"line":1,"column":23},"end":{"line":1,"column":48}},"1":{"start":{"line":3,"column":22},"end":{"line":3,"column":54}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":30}},"3":{"start":{"line":8,"column":2},"end":{"line":8,"column":22}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":27}},"5":{"start":{"line":10,"column":29},"end":{"line":13,"column":3}},"6":{"start":{"line":15,"column":2},"end":{"line":15,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":6,"column":15},"end":{"line":6,"column":22}},"loc":{"start":{"line":6,"column":36},"end":{"line":16,"column":1}},"line":6}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"92979cf6997229720b06d7a1d7b1d2cf779c1529","contentHash":"9dec098c0476b88b67ad0ea3f9af64fbc8781e6ad8bdcae61dc528b19bd0ddc5"},"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.initiate.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.initiate.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":27},"end":{"line":3,"column":54}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":34}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":70}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":3,"3":2,"4":2,"5":1},"f":{"0":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"fd9bd6b62abc48a095786cb3fbf5fbe8129b72dc","contentHash":"e676f6d59e92c3a97097fbe325186ed0acd4e579a8722f80cba41a0735ca144f"},"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.retrieve.transfers.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.retrieve.transfers.js","statementMap":{"0":{"start":{"line":1,"column":29},"end":{"line":1,"column":57}},"1":{"start":{"line":4,"column":2},"end":{"line":4,"column":80}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":36},"end":{"line":5,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d1548a3c136c481987bb2bfb9db355e17a127cb2","contentHash":"d07865df87383646159b92e8c38c42c566e5b296fcfa156842e09513f1b2881f"},"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fetch.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fetch.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":22}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":27}},"5":{"start":{"line":9,"column":29},"end":{"line":12,"column":3}},"6":{"start":{"line":14,"column":2},"end":{"line":14,"column":18}},"7":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":15,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"92dbe8e1b3c8cbc4e03d557c9144c207eece14b4","contentHash":"3fe0e13ff47c5530b35b82f8dfd56095f7579d68e3de84a72a55e0a929449125"},"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.wallet.js":{"path":"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.wallet.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":54}},"1":{"start":{"line":3,"column":33},"end":{"line":3,"column":60}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":40}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":70}},"4":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"5":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}}},"fnMap":{"0":{"name":"service","decl":{"start":{"line":5,"column":15},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":36},"end":{"line":10,"column":1}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"029699a411ee7714248f50512930d022160e37f3","contentHash":"96a4e1fe0b5528fbadfe3e3bf68b030442e9084c7b76c5e1d6ab2eccf63c895f"}} \ No newline at end of file diff --git a/.nyc_output/processinfo/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json b/.nyc_output/processinfo/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json deleted file mode 100644 index cc6f0f6..0000000 --- a/.nyc_output/processinfo/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json +++ /dev/null @@ -1 +0,0 @@ -{"parent":null,"pid":85285,"argv":["/usr/local/bin/node","/usr/local/bin/npm","run","test"],"execArgv":[],"cwd":"/Users/erikobatomi/Documents/Node-v3","time":1769595100143,"ppid":85265,"coverageFilename":"/Users/erikobatomi/Documents/Node-v3/.nyc_output/41a907c4-45a9-4ac9-9cda-86b9cfb33510.json","externalId":"","uuid":"41a907c4-45a9-4ac9-9cda-86b9cfb33510","files":[]} \ No newline at end of file diff --git a/.nyc_output/processinfo/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json b/.nyc_output/processinfo/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json deleted file mode 100644 index 41cd5df..0000000 --- a/.nyc_output/processinfo/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json +++ /dev/null @@ -1 +0,0 @@ -{"parent":"41a907c4-45a9-4ac9-9cda-86b9cfb33510","pid":85304,"argv":["/usr/local/bin/node","/Users/erikobatomi/Documents/Node-v3/node_modules/.bin/mocha","test/rave.bank.test.js","test/rave.base.test.js","test/rave.beneficiaries.test.js","test/rave.bills.test.js","test/rave.card.charge.test.js","test/rave.charge.test.js","test/rave.ebills.test.js","test/rave.misc.test.js","test/rave.momo.test.js","test/rave.otp.test.js","test/rave.payment-plan.test.js","test/rave.security.test.js","test/rave.settlements.test.js","test/rave.subscriptions.test.js","test/rave.tokenization.test.js","test/rave.transactions.test.js","test/rave.transfer.test.js","test/rave.utils.build.test.js","test/rave.utils.error.test.js","test/rave.utils.test.js","test/rave.virtualcards.test.js"],"execArgv":[],"cwd":"/Users/erikobatomi/Documents/Node-v3","time":1769595100633,"ppid":85285,"coverageFilename":"/Users/erikobatomi/Documents/Node-v3/.nyc_output/5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b.json","externalId":"","uuid":"5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b","files":["/Users/erikobatomi/Documents/Node-v3/lib/rave.banks.js","/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-branches.js","/Users/erikobatomi/Documents/Node-v3/utils/validator.js","/Users/erikobatomi/Documents/Node-v3/utils/error.js","/Users/erikobatomi/Documents/Node-v3/utils/logger.js","/Users/erikobatomi/Documents/Node-v3/services/schema/base.js","/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-country.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.base.js","/Users/erikobatomi/Documents/Node-v3/utils/rave.utils.js","/Users/erikobatomi/Documents/Node-v3/lib/security.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.beneficiaries.js","/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.create.js","/Users/erikobatomi/Documents/Node-v3/services/schema/create.js","/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.delete.js","/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.retrieve.js","/Users/erikobatomi/Documents/Node-v3/utils/build.js","/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.single.retrieve.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.bills.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.amount.to-be-paid.js","/Users/erikobatomi/Documents/Node-v3/services/schema/bill.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bill.payment.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bulk.bills.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-order-billing-code.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get-bill-payments.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-categories.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-payment-agencies.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.status.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.products-under-an-agency.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.update-bills.order.js","/Users/erikobatomi/Documents/Node-v3/services/bills/rave.validate-bill.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.charge.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.card.charge.js","/Users/erikobatomi/Documents/Node-v3/services/charge/encryp.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ng-banks.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.uk-banks.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ussd.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.validate.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.voucher.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ach.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.bank.transfer.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.applepay.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.googlepay.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.enaira.js","/Users/erikobatomi/Documents/Node-v3/services/charge/rave.fawrypay.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.ebills.js","/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.order.js","/Users/erikobatomi/Documents/Node-v3/services/schema/auxillary.js","/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.update.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.misc.js","/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances-currency.js","/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances.js","/Users/erikobatomi/Documents/Node-v3/services/misc/rave.initiate.bvn.js","/Users/erikobatomi/Documents/Node-v3/services/misc/rave.verify.bvn.js","/Users/erikobatomi/Documents/Node-v3/services/misc/rave.resolve.account.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.mobile_money.js","/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.ghana.js","/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.mpesa.js","/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.rwanda.js","/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.uganda.js","/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.zambia.js","/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.francophone.js","/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.tanzania.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.otps.js","/Users/erikobatomi/Documents/Node-v3/services/otps/rave.create.js","/Users/erikobatomi/Documents/Node-v3/services/otps/rave.validate.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.payment_plan.js","/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.create.js","/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.cancel.js","/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.all.js","/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.single.js","/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.update.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.settlements.js","/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve-all.js","/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.subscriptions.js","/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.activate.js","/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.cancel.js","/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.all.js","/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.single.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.tokenized.js","/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.bulk.charge.js","/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.charge.js","/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.a.bulk.js","/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.charge.transactions.js","/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.update.tokens.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.transactions.js","/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.events.js","/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.fee.js","/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.refund.js","/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.resend-hooks.js","/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.retrieve.js","/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify.js","/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify-by-txref.js","/Users/erikobatomi/Documents/Node-v3/lib/rave.transfers.js","/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.bulk.js","/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fee.js","/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.initiate.js","/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.retrieve.transfers.js","/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fetch.js","/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.wallet.js"]} \ No newline at end of file diff --git a/.nyc_output/processinfo/index.json b/.nyc_output/processinfo/index.json deleted file mode 100644 index 24495c6..0000000 --- a/.nyc_output/processinfo/index.json +++ /dev/null @@ -1 +0,0 @@ -{"processes":{"41a907c4-45a9-4ac9-9cda-86b9cfb33510":{"parent":null,"children":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"]},"5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b":{"parent":"41a907c4-45a9-4ac9-9cda-86b9cfb33510","children":[]}},"files":{"/Users/erikobatomi/Documents/Node-v3/lib/rave.banks.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-branches.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/utils/validator.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/utils/error.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/utils/logger.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/schema/base.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/banks/rave.banks-country.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.base.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/utils/rave.utils.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/security.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.beneficiaries.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.create.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/schema/create.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.delete.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.retrieve.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/utils/build.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/beneficiaries/rave.single.retrieve.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.bills.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.amount.to-be-paid.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/schema/bill.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bill.payment.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-bulk.bills.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.create-order-billing-code.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get-bill-payments.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-categories.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.bill-payment-agencies.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.get.status.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.products-under-an-agency.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.update-bills.order.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/bills/rave.validate-bill.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.charge.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.card.charge.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/encryp.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ng-banks.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.uk-banks.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ussd.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.validate.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.voucher.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.ach.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.bank.transfer.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.applepay.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.googlepay.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.enaira.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/charge/rave.fawrypay.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.ebills.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.order.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/schema/auxillary.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/ebills/rave.update.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.misc.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances-currency.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.balances.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.initiate.bvn.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.verify.bvn.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/misc/rave.resolve.account.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.mobile_money.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.ghana.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.mpesa.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.rwanda.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.uganda.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.zambia.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.francophone.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/mobile-money/rave.tanzania.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.otps.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/otps/rave.create.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/otps/rave.validate.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.payment_plan.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.create.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.cancel.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.all.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.retrieve.single.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/payment-plans/rave.update.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.settlements.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve-all.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/settlements/rave.retrieve.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.subscriptions.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.activate.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.cancel.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.all.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/subscriptions/rave.retrieve.single.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.tokenized.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.bulk.charge.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.charge.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.a.bulk.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.retrieve.charge.transactions.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/tokenized-charges/rave.update.tokens.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.transactions.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.events.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.fee.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.refund.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.resend-hooks.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.retrieve.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transactions/rave.verify-by-txref.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/lib/rave.transfers.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.bulk.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fee.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.initiate.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.retrieve.transfers.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.fetch.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"],"/Users/erikobatomi/Documents/Node-v3/services/transfers/rave.wallet.js":["5f0f93a1-a66f-4c47-b6a0-3d42a4eb115b"]},"externalIds":{}} \ No newline at end of file From 533112b598ddba7c8fec7eeb1d6e8907e3c2b9f0 Mon Sep 17 00:00:00 2001 From: "adedotun@flutterwavego.com" Date: Thu, 29 Jan 2026 15:20:37 +0100 Subject: [PATCH 4/6] Updating Test Files. Removing Unneeded Tests from the test suites. --- coverage/lcov-report/index.html | 42 +-- coverage/lcov-report/lib/index.html | 38 +- coverage/lcov-report/lib/rave.banks.js.html | 2 +- coverage/lcov-report/lib/rave.base.js.html | 156 ++++---- .../lib/rave.beneficiaries.js.html | 2 +- coverage/lcov-report/lib/rave.bills.js.html | 2 +- coverage/lcov-report/lib/rave.charge.js.html | 28 +- coverage/lcov-report/lib/rave.ebills.js.html | 2 +- coverage/lcov-report/lib/rave.misc.js.html | 2 +- .../lcov-report/lib/rave.mobile_money.js.html | 2 +- coverage/lcov-report/lib/rave.otps.js.html | 2 +- .../lcov-report/lib/rave.payment_plan.js.html | 2 +- .../lcov-report/lib/rave.settlements.js.html | 2 +- .../lib/rave.subscriptions.js.html | 2 +- .../lcov-report/lib/rave.tokenized.js.html | 2 +- .../lcov-report/lib/rave.transactions.js.html | 2 +- .../lcov-report/lib/rave.transfers.js.html | 2 +- coverage/lcov-report/lib/security.js.html | 14 +- .../lcov-report/services/banks/index.html | 2 +- .../banks/rave.banks-branches.js.html | 2 +- .../services/banks/rave.banks-country.js.html | 2 +- .../services/beneficiaries/index.html | 2 +- .../beneficiaries/rave.create.js.html | 2 +- .../beneficiaries/rave.delete.js.html | 2 +- .../beneficiaries/rave.retrieve.js.html | 2 +- .../rave.single.retrieve.js.html | 2 +- .../lcov-report/services/bills/index.html | 2 +- .../bills/rave.amount.to-be-paid.js.html | 2 +- .../bills/rave.create-bill.payment.js.html | 2 +- .../bills/rave.create-bulk.bills.js.html | 2 +- .../rave.create-order-billing-code.js.html | 2 +- .../bills/rave.get-bill-payments.js.html | 2 +- .../bills/rave.get.bill-categories.js.html | 2 +- .../rave.get.bill-payment-agencies.js.html | 2 +- .../services/bills/rave.get.status.js.html | 2 +- .../rave.products-under-an-agency.js.html | 2 +- .../bills/rave.update-bills.order.js.html | 2 +- .../services/bills/rave.validate-bill.js.html | 2 +- .../services/charge/encryp.js.html | 14 +- .../lcov-report/services/charge/index.html | 2 +- .../services/charge/rave.ach.js.html | 2 +- .../services/charge/rave.applepay.js.html | 2 +- .../charge/rave.bank.transfer.js.html | 2 +- .../services/charge/rave.card.charge.js.html | 16 +- .../services/charge/rave.enaira.js.html | 2 +- .../services/charge/rave.fawrypay.js.html | 2 +- .../services/charge/rave.googlepay.js.html | 2 +- .../services/charge/rave.ng-banks.js.html | 2 +- .../services/charge/rave.uk-banks.js.html | 2 +- .../services/charge/rave.ussd.js.html | 2 +- .../services/charge/rave.validate.js.html | 2 +- .../services/charge/rave.voucher.js.html | 2 +- .../lcov-report/services/ebills/index.html | 2 +- .../services/ebills/rave.order.js.html | 2 +- .../services/ebills/rave.update.js.html | 2 +- coverage/lcov-report/services/misc/index.html | 2 +- .../misc/rave.balances-currency.js.html | 2 +- .../services/misc/rave.balances.js.html | 2 +- .../services/misc/rave.initiate.bvn.js.html | 2 +- .../misc/rave.resolve.account.js.html | 2 +- .../services/misc/rave.verify.bvn.js.html | 2 +- .../services/mobile-money/index.html | 2 +- .../mobile-money/rave.francophone.js.html | 2 +- .../services/mobile-money/rave.ghana.js.html | 2 +- .../services/mobile-money/rave.mpesa.js.html | 2 +- .../services/mobile-money/rave.rwanda.js.html | 2 +- .../mobile-money/rave.tanzania.js.html | 2 +- .../services/mobile-money/rave.uganda.js.html | 2 +- .../services/mobile-money/rave.zambia.js.html | 2 +- coverage/lcov-report/services/otps/index.html | 2 +- .../services/otps/rave.create.js.html | 2 +- .../services/otps/rave.validate.js.html | 2 +- .../services/payment-plans/index.html | 2 +- .../payment-plans/rave.cancel.js.html | 2 +- .../payment-plans/rave.create.js.html | 2 +- .../payment-plans/rave.retrieve.all.js.html | 2 +- .../rave.retrieve.single.js.html | 2 +- .../payment-plans/rave.update.js.html | 2 +- .../services/schema/auxillary.js.html | 2 +- .../lcov-report/services/schema/base.js.html | 2 +- .../lcov-report/services/schema/bill.js.html | 2 +- .../services/schema/create.js.html | 6 +- .../lcov-report/services/schema/index.html | 2 +- .../services/settlements/index.html | 2 +- .../settlements/rave.retrieve-all.js.html | 2 +- .../settlements/rave.retrieve.js.html | 2 +- .../services/subscriptions/index.html | 2 +- .../subscriptions/rave.activate.js.html | 2 +- .../subscriptions/rave.cancel.js.html | 2 +- .../subscriptions/rave.retrieve.all.js.html | 2 +- .../rave.retrieve.single.js.html | 2 +- .../services/tokenized-charges/index.html | 2 +- .../rave.bulk.charge.js.html | 2 +- .../tokenized-charges/rave.charge.js.html | 2 +- .../rave.retrieve.a.bulk.js.html | 2 +- .../rave.retrieve.charge.transactions.js.html | 2 +- .../rave.update.tokens.js.html | 2 +- .../services/transactions/index.html | 2 +- .../services/transactions/rave.events.js.html | 2 +- .../services/transactions/rave.fee.js.html | 2 +- .../services/transactions/rave.refund.js.html | 2 +- .../transactions/rave.resend-hooks.js.html | 2 +- .../transactions/rave.retrieve.js.html | 2 +- .../transactions/rave.verify-by-txref.js.html | 2 +- .../services/transactions/rave.verify.js.html | 2 +- .../lcov-report/services/transfers/index.html | 2 +- .../services/transfers/rave.bulk.js.html | 2 +- .../services/transfers/rave.fee.js.html | 2 +- .../services/transfers/rave.fetch.js.html | 2 +- .../services/transfers/rave.initiate.js.html | 2 +- .../transfers/rave.retrieve.transfers.js.html | 2 +- .../services/transfers/rave.wallet.js.html | 2 +- coverage/lcov-report/utils/build.js.html | 24 +- coverage/lcov-report/utils/error.js.html | 8 +- coverage/lcov-report/utils/index.html | 10 +- coverage/lcov-report/utils/logger.js.html | 2 +- coverage/lcov-report/utils/rave.utils.js.html | 16 +- coverage/lcov-report/utils/validator.js.html | 8 +- coverage/lcov.info | 352 +++++++++--------- test/rave.base.test.js | 105 +----- test/rave.card.charge.test.js | 53 +-- test/rave.security.test.js | 12 +- test/rave.utils.build.test.js | 33 +- test/rave.utils.error.test.js | 14 +- test/rave.utils.test.js | 17 +- 125 files changed, 495 insertions(+), 681 deletions(-) diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index 2b7a748..c594cd9 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -23,30 +23,30 @@

All files

- 99.89% + 98.98% Statements - 983/984 + 974/984
- 90.59% + 84.61% Branches - 106/117 + 99/117
- 99.53% + 96.27% Functions - 214/215 + 207/215
- 99.89% + 98.98% Lines - 981/982 + 972/982
@@ -80,17 +80,17 @@

All files

lib - -
+ +
- 99.7% - 335/336 - 71.87% - 23/32 - 99.11% - 112/113 - 99.7% - 334/335 + 97.02% + 326/336 + 53.12% + 17/32 + 92.92% + 105/113 + 97.01% + 325/335 @@ -325,8 +325,8 @@

All files

100% 53/53 - 91.66% - 22/24 + 87.5% + 21/24 100% 9/9 100% @@ -341,7 +341,7 @@

All files