mirror of
https://github.com/alexbosworth/balanceofsatoshis.git
synced 2026-08-13 12:33:37 +02:00
add json output option
This commit is contained in:
parent
c859f77e39
commit
d66452a184
7 changed files with 120 additions and 33 deletions
|
|
@ -1,5 +1,9 @@
|
|||
# Versions
|
||||
|
||||
## 15.8.0
|
||||
|
||||
- `call`: Add `--json` option to write the raw JSON to the console
|
||||
|
||||
## 15.7.2
|
||||
|
||||
- `telegram`: Ignore re-received chain txs where only the locktime is changed
|
||||
|
|
|
|||
5
bos
5
bos
|
|
@ -231,11 +231,14 @@ prog
|
|||
.command('call', 'Make a raw API call and to get a raw API response')
|
||||
.help('If you do not specify a method it will list the supported methods')
|
||||
.argument('[method]', 'Method to call')
|
||||
.option('--json', 'Output raw JSON as the output')
|
||||
.option('--node <node_name>', 'Saved node to use for call')
|
||||
.option('--param <param>', 'query encoded name=value', REPEATABLE)
|
||||
.action((args, options, logger) => {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
try {
|
||||
const r = options.json ? responses.returnJson : responses.returnObject;
|
||||
|
||||
return commands.callRawApi({
|
||||
logger,
|
||||
ask: await commands.interrogate({}),
|
||||
|
|
@ -243,7 +246,7 @@ prog
|
|||
method: args.method,
|
||||
params: flatten([options.param].filter(n => !!n)),
|
||||
},
|
||||
responses.returnObject({logger, reject, resolve}));
|
||||
r({logger, reject, resolve}));
|
||||
} catch (err) {
|
||||
return logger.error({err}) && reject();
|
||||
}
|
||||
|
|
|
|||
56
package-lock.json
generated
56
package-lock.json
generated
|
|
@ -1,15 +1,15 @@
|
|||
{
|
||||
"name": "balanceofsatoshis",
|
||||
"version": "15.7.2",
|
||||
"version": "15.8.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "balanceofsatoshis",
|
||||
"version": "15.7.2",
|
||||
"version": "15.8.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@alexbosworth/blockchain": "1.1.0",
|
||||
"@alexbosworth/blockchain": "1.2.0",
|
||||
"@alexbosworth/caporal": "1.4.4",
|
||||
"@alexbosworth/fiat": "1.0.4",
|
||||
"@alexbosworth/html2unicode": "1.1.5",
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
"grammy": "1.16.0",
|
||||
"hot-formula-parser": "4.0.0",
|
||||
"import-lazy": "4.0.0",
|
||||
"ini": "4.1.0",
|
||||
"ini": "4.1.1",
|
||||
"inquirer": "9.2.3",
|
||||
"ln-accounting": "7.0.1",
|
||||
"ln-service": "56.3.1",
|
||||
|
|
@ -65,9 +65,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@alexbosworth/blockchain": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@alexbosworth/blockchain/-/blockchain-1.1.0.tgz",
|
||||
"integrity": "sha512-EIAbKQLdQAlqgz5F2NWlSY8tK16p3NU5jkFNLHrMGCko97PPz+u8PU41yHLSo5PcLTVzZvllnKZKI0DWSppnyw==",
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@alexbosworth/blockchain/-/blockchain-1.2.0.tgz",
|
||||
"integrity": "sha512-vsrRjOKuP9yO6T+LgqYkoz+ewglhJ5uLDe1W4x2VnZE6EFHVofVMzb5OHCvgIi7qpXl2Yml0Wwa8z+nHw0YOWQ==",
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
}
|
||||
|
|
@ -2936,9 +2936,9 @@
|
|||
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.1.4.tgz",
|
||||
"integrity": "sha512-At4pvmIOki8yuwLtd7BNHl3CiWNbtclUbNtScGx4OHfBd4/oWoJC8KRCIxXwkdndzhxOsPXihrsOoydxBjlE9Q=="
|
||||
"version": "20.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.1.7.tgz",
|
||||
"integrity": "sha512-WCuw/o4GSwDGMoonES8rcvwsig77dGCMbZDrZr2x4ZZiNW4P/gcoZXe/0twgtobcTkmg9TuKflxYL/DuwDyJzg=="
|
||||
},
|
||||
"node_modules/@types/qs": {
|
||||
"version": "6.9.7",
|
||||
|
|
@ -4251,9 +4251,9 @@
|
|||
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.4.394",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.394.tgz",
|
||||
"integrity": "sha512-0IbC2cfr8w5LxTz+nmn2cJTGafsK9iauV2r5A5scfzyovqLrxuLoxOHE5OBobP3oVIggJT+0JfKnw9sm87c8Hw==",
|
||||
"version": "1.4.397",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.397.tgz",
|
||||
"integrity": "sha512-jwnPxhh350Q/aMatQia31KAIQdhEsYS0fFZ0BQQlN9tfvOEwShu6ZNwI4kL/xBabjcB/nTy6lSt17kNIluJZ8Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/elliptic": {
|
||||
|
|
@ -5256,9 +5256,9 @@
|
|||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"node_modules/ini": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-4.1.0.tgz",
|
||||
"integrity": "sha512-HLR38RSF2iulAzc3I/sma4CoYxQP844rPYCNfzGDOHqa/YqVlwuuZgBx6M50/X8dKgzk0cm1qRg3+47mK2N+cQ==",
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz",
|
||||
"integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==",
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
|
||||
}
|
||||
|
|
@ -9481,9 +9481,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@alexbosworth/blockchain": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@alexbosworth/blockchain/-/blockchain-1.1.0.tgz",
|
||||
"integrity": "sha512-EIAbKQLdQAlqgz5F2NWlSY8tK16p3NU5jkFNLHrMGCko97PPz+u8PU41yHLSo5PcLTVzZvllnKZKI0DWSppnyw=="
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@alexbosworth/blockchain/-/blockchain-1.2.0.tgz",
|
||||
"integrity": "sha512-vsrRjOKuP9yO6T+LgqYkoz+ewglhJ5uLDe1W4x2VnZE6EFHVofVMzb5OHCvgIi7qpXl2Yml0Wwa8z+nHw0YOWQ=="
|
||||
},
|
||||
"@alexbosworth/caporal": {
|
||||
"version": "1.4.4",
|
||||
|
|
@ -11499,9 +11499,9 @@
|
|||
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "20.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.1.4.tgz",
|
||||
"integrity": "sha512-At4pvmIOki8yuwLtd7BNHl3CiWNbtclUbNtScGx4OHfBd4/oWoJC8KRCIxXwkdndzhxOsPXihrsOoydxBjlE9Q=="
|
||||
"version": "20.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.1.7.tgz",
|
||||
"integrity": "sha512-WCuw/o4GSwDGMoonES8rcvwsig77dGCMbZDrZr2x4ZZiNW4P/gcoZXe/0twgtobcTkmg9TuKflxYL/DuwDyJzg=="
|
||||
},
|
||||
"@types/qs": {
|
||||
"version": "6.9.7",
|
||||
|
|
@ -12537,9 +12537,9 @@
|
|||
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.4.394",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.394.tgz",
|
||||
"integrity": "sha512-0IbC2cfr8w5LxTz+nmn2cJTGafsK9iauV2r5A5scfzyovqLrxuLoxOHE5OBobP3oVIggJT+0JfKnw9sm87c8Hw==",
|
||||
"version": "1.4.397",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.397.tgz",
|
||||
"integrity": "sha512-jwnPxhh350Q/aMatQia31KAIQdhEsYS0fFZ0BQQlN9tfvOEwShu6ZNwI4kL/xBabjcB/nTy6lSt17kNIluJZ8Q==",
|
||||
"dev": true
|
||||
},
|
||||
"elliptic": {
|
||||
|
|
@ -13319,9 +13319,9 @@
|
|||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"ini": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-4.1.0.tgz",
|
||||
"integrity": "sha512-HLR38RSF2iulAzc3I/sma4CoYxQP844rPYCNfzGDOHqa/YqVlwuuZgBx6M50/X8dKgzk0cm1qRg3+47mK2N+cQ=="
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz",
|
||||
"integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g=="
|
||||
},
|
||||
"inquirer": {
|
||||
"version": "9.2.3",
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
"url": "https://github.com/alexbosworth/balanceofsatoshis/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"@alexbosworth/blockchain": "1.1.0",
|
||||
"@alexbosworth/blockchain": "1.2.0",
|
||||
"@alexbosworth/caporal": "1.4.4",
|
||||
"@alexbosworth/fiat": "1.0.4",
|
||||
"@alexbosworth/html2unicode": "1.1.5",
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
"grammy": "1.16.0",
|
||||
"hot-formula-parser": "4.0.0",
|
||||
"import-lazy": "4.0.0",
|
||||
"ini": "4.1.0",
|
||||
"ini": "4.1.1",
|
||||
"inquirer": "9.2.3",
|
||||
"ln-accounting": "7.0.1",
|
||||
"ln-service": "56.3.1",
|
||||
|
|
@ -84,5 +84,5 @@
|
|||
"postpublish": "docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t alexbosworth/balanceofsatoshis -t alexbosworth/balanceofsatoshis:$npm_package_version --push .",
|
||||
"test": "tap --branches=1 --functions=1 --lines=1 --statements=1 -t 60 test/arrays/*.js test/balances/*.js test/chain/*.js test/display/*.js test/encryption/*.js test/lnd/*.js test/network/*.js test/nodes/*.js test/peers/*.js test/responses/*.js test/routing/*.js test/services/*.js test/swaps/*.js test/tags/*.js test/telegram/*.js test/wallets/*.js"
|
||||
},
|
||||
"version": "15.7.2"
|
||||
"version": "15.8.0"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,13 @@
|
|||
const returnChart = require('./return_chart');
|
||||
const returnJson = require('./return_json');
|
||||
const returnNumber = require('./return_number');
|
||||
const returnObject = require('./return_object');
|
||||
const returnOutput = require('./return_output');
|
||||
|
||||
module.exports = {returnChart, returnNumber, returnObject, returnOutput};
|
||||
module.exports = {
|
||||
returnChart,
|
||||
returnJson,
|
||||
returnNumber,
|
||||
returnObject,
|
||||
returnOutput,
|
||||
};
|
||||
|
|
|
|||
30
responses/return_json.js
Normal file
30
responses/return_json.js
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
const {stringify} = JSON;
|
||||
const spacer = ' ';
|
||||
|
||||
/** Return an output result to a logger in a promise
|
||||
|
||||
{
|
||||
logger: {
|
||||
error: <Log Error Function>
|
||||
info: <Log Info Function>
|
||||
}
|
||||
reject: <Reject Function>
|
||||
resolve: <Resolve Function>
|
||||
}
|
||||
|
||||
@returns
|
||||
<Standard Callback Function> (err, res) => {}
|
||||
*/
|
||||
module.exports = ({logger, reject, resolve}) => {
|
||||
return (err, res) => {
|
||||
if (!!err) {
|
||||
logger.error(err);
|
||||
|
||||
return reject();
|
||||
}
|
||||
|
||||
logger.info(stringify(res, null, spacer));
|
||||
|
||||
return resolve();
|
||||
};
|
||||
};
|
||||
43
test/responses/test_return_json.js
Normal file
43
test/responses/test_return_json.js
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
const {test} = require('@alexbosworth/tap');
|
||||
|
||||
const {returnJson} = require('./../../responses');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
description: 'Error returns an error',
|
||||
error: 'error',
|
||||
},
|
||||
{
|
||||
args: [],
|
||||
description: 'Output returns output',
|
||||
expected: '[]',
|
||||
},
|
||||
];
|
||||
|
||||
tests.forEach(({args, description, error, expected}) => {
|
||||
return test(description, ({end, equal, throws}) => {
|
||||
if (!!error) {
|
||||
let err;
|
||||
|
||||
return returnJson({
|
||||
logger: {error: n => err = n},
|
||||
reject: () => {
|
||||
equal(err, error, 'Error as expected');
|
||||
|
||||
return end();
|
||||
},
|
||||
})(error);
|
||||
}
|
||||
|
||||
let output;
|
||||
|
||||
return returnJson({
|
||||
logger: {info: n => output = n},
|
||||
resolve: () => {
|
||||
equal(output, expected, 'Got expected output');
|
||||
|
||||
return end();
|
||||
},
|
||||
})(null, args);
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue