diff --git a/content/_code-samples/tx-serialization/js/index.js b/content/_code-samples/tx-serialization/js/index.js index 1f2d7e76cb..f8d1a338cd 100644 --- a/content/_code-samples/tx-serialization/js/index.js +++ b/content/_code-samples/tx-serialization/js/index.js @@ -636,10 +636,19 @@ class TxSerializer { // Startup stuff begin +function main(rawJson) { + const json = JSON.parse(rawJson) + const serializer = new TxSerializer(json) + const serializedTx = serializer.serializeTx(json) + + console.log(serializedTx.toUpperCase()) +} + const args = parseArgs(process.argv.slice(2), { alias: { 'f': 'filename', 'j': 'json', + 's': 'stdin', 'v': 'verbose', }, default: { @@ -659,12 +668,20 @@ const logger = function(verbose, value) { let rawJson if (args.json) { rawJson = args.json + main(rawJson) +} else if (args.stdin) { + const stdin = process.openStdin(); + + let data = "" + + stdin.on('data', function(chunk) { + data += chunk + }); + + stdin.on('end', function() { + main(data) + }); } else { rawJson = fs.readFileSync(args.filename, 'utf8') -} - -const json = JSON.parse(rawJson) -const serializer = new TxSerializer(json) -const serializedTx = serializer.serializeTx(json) - -console.log(serializedTx.toUpperCase()) \ No newline at end of file + main(rawJson) +} \ No newline at end of file diff --git a/content/_code-samples/tx-serialization/js/test-cases/README.md b/content/_code-samples/tx-serialization/js/test-cases/README.md index 0cfa290ed1..14cbad4ef7 100644 --- a/content/_code-samples/tx-serialization/js/test-cases/README.md +++ b/content/_code-samples/tx-serialization/js/test-cases/README.md @@ -3,14 +3,14 @@ This folder contains several transactions in their JSON and binary forms, which you can use to verify the behavior of transaction serialization code. -For example (starting from the `tx-serialization/` dir above this one): +For example (starting from the `tx-serialization/js/` dir above this one): ```bash -$ python3 serialize.py -f test-cases/tx2.json | \ +$ node index.js -f test-cases/tx2.json | \ diff - test-cases/tx2-binary.txt ``` -The expected result is no output because the output of `serialize.py` matches +The expected result is no output because the output of `node index.js` matches the contents of `test-cases/tx2-binary.txt` exactly. For an example of how the output is different if you change the `Fee` parameter of sample transaction 1, we can pipe a modified version of the file into the serializer: @@ -18,7 +18,7 @@ For an example of how the output is different if you change the `Fee` parameter ```bash $ cat test-cases/tx1.json | \ sed -e 's/"Fee": "10"/"Fee": "100"/' | \ - python3 serialize.py --stdin | \ + node index.js --json | \ diff - test-cases/tx1-binary.txt --color ``` @@ -46,7 +46,7 @@ CDC63E1DEE7FE3744630440220143759437C04F7B61F012563AFE90D8DAFC46E86035E1D965A9CED For a friendlier display, you could pipe the output of the serializer to a file and use a visual tool like [Meld](http://meldmerge.org/) that shows intra-line differences: ```bash -$ cat test-cases/tx1.json | sed -e 's/"Fee": "10"/"Fee": "100"/' | python3 serialize.py --stdin > /tmp/tx1-modified.txt && meld /tmp/tx1-modified.txt test-cases/tx1-binary.txt +$ cat test-cases/tx1.json | sed -e 's/"Fee": "10"/"Fee": "100"/' | node index.js --stdin --stdin > /tmp/tx1-modified.txt && meld /tmp/tx1-modified.txt test-cases/tx1-binary.txt ``` ![Meld screenshot showing the `0A` / `64` difference](meld-example.png)