diff --git a/json/bitcoin-config.json b/json/bitcoin-config.json index 1ef8f480..17d53a88 100644 --- a/json/bitcoin-config.json +++ b/json/bitcoin-config.json @@ -2,7 +2,7 @@ "bitcoinPeerUri": "[MUST FILL THIS IN!!!]", "bitcoinWalletImportString": "[MUST FILL THIS IN!!!]", "bitcoinFee": 4000, - "sidetreeTransactionPrefix": "ion-test:", + "sidetreeTransactionPrefix": "ion:", "genesisBlockNumber": 1500000, "databaseName": "sidetree-bitcoin", "transactionFetchPageSize": 100, diff --git a/json/core-config.json b/json/core-config.json index 1f9190d5..88d789c3 100644 --- a/json/core-config.json +++ b/json/core-config.json @@ -2,7 +2,7 @@ "batchingIntervalInSeconds": 600, "blockchainServiceUri": "http://127.0.0.1:3002", "contentAddressableStoreServiceUri": "http://127.0.0.1:3003/v1.0", - "didMethodName": "did:ion-test:", + "didMethodName": "did:ion:test:", "maxConcurrentDownloads": 20, "mongoDbConnectionString": "mongodb://localhost:27017/", "observingIntervalInSeconds": 60, diff --git a/package-lock.json b/package-lock.json index caf8131f..fc6b79f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -129,9 +129,9 @@ "integrity": "sha512-WdLCNpz4XmN1LA59HhRL5ns45qSIV8zDZSl8GhkjFeQ/1gZDgJedNialsQBNQ6dpBDMWIBxX5Ehr4NqxE0ZW6Q==" }, "@decentralized-identity/sidetree": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@decentralized-identity/sidetree/-/sidetree-0.1.11.tgz", - "integrity": "sha512-mrbN9nC4Zf1Pgdx/SywgaiGfMmlaQnCBmJsHNokRPKMV8E6/yyTHNu53weh9JNfsKcYkB3lAPs1jZ0CPJmIpWw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@decentralized-identity/sidetree/-/sidetree-0.2.0.tgz", + "integrity": "sha512-16KlQSEKmxSm7H+Igg5037xKdfEEYEuUe1ht2CrBG2/IaruoOclXqavmnG0weulC1IvwASU3DLf2aL/PftFOSw==", "requires": { "@decentralized-identity/did-auth-jose": "0.1.5", "@decentralized-identity/did-common-typescript": "0.1.2", @@ -145,7 +145,7 @@ "koa-router": "7.4.0", "mongodb": "3.2.3", "multihashes": "0.4.14", - "node-fetch": "2.3.0", + "node-fetch": "2.6.0", "raw-body": "2.3.3", "secp256k1": "3.6.2", "time-span": "3.1.0", @@ -2105,9 +2105,9 @@ "integrity": "sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc=" }, "es6-promise": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", - "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==" + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" }, "escape-html": { "version": "1.0.3", @@ -2294,9 +2294,9 @@ } }, "ethereumjs-common": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.1.0.tgz", - "integrity": "sha512-LUmYkKV/HcZbWRyu3OU9YOevsH3VJDXtI6kEd8VZweQec+JjDGKCmAVKUyzhYUHqxRJu7JNALZ3A/b3NXOP6tA==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.2.1.tgz", + "integrity": "sha512-VNr8MBdKHHuWgpYhRUhkp05P0mTcTH8Udb8wXcnnxUmwOWl388Sk/Lw2KL1rQNsV3gid2BB2auHT4vcfs9PFbw==" }, "ethereumjs-tx": { "version": "1.3.7", @@ -2342,6 +2342,11 @@ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + }, "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", @@ -2595,9 +2600,9 @@ } }, "gc-stats": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/gc-stats/-/gc-stats-1.3.0.tgz", - "integrity": "sha512-S3dLoQztYwKjmXgZ+0HK+/aXliq6aW+4FDGUxX0duBOMEeWINa8MzBahl4zNh9CiXC5IDh084twfDmHtY/9q8w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/gc-stats/-/gc-stats-1.4.0.tgz", + "integrity": "sha512-4FcCj9e8j8rCjvLkqRpGZBLgTC/xr9XEf5By3x77cDucWWB3pJK6FEwXZCTCbb4z8xdaOoi4owBNrvn3ciDdxA==", "optional": true, "requires": { "nan": "^2.13.2", @@ -3212,44 +3217,27 @@ "accept": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/accept/-/accept-3.1.3.tgz", - "integrity": "sha512-OgOEAidVEOKPup+Gv2+2wdH2AgVKI9LxsJ4hicdJ6cY0faUuZdZoi56kkXWlHp9qicN1nWQLmW5ZRGk+SBS5xg==", - "requires": { - "boom": "7.x.x", - "hoek": "6.x.x" - } + "integrity": "sha512-OgOEAidVEOKPup+Gv2+2wdH2AgVKI9LxsJ4hicdJ6cY0faUuZdZoi56kkXWlHp9qicN1nWQLmW5ZRGk+SBS5xg==" }, "ammo": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/ammo/-/ammo-3.0.3.tgz", - "integrity": "sha512-vo76VJ44MkUBZL/BzpGXaKzMfroF4ZR6+haRuw9p+eSWfoNaH2AxVc8xmiEPC08jhzJSeM6w7/iMUGet8b4oBQ==", - "requires": { - "hoek": "6.x.x" - } + "integrity": "sha512-vo76VJ44MkUBZL/BzpGXaKzMfroF4ZR6+haRuw9p+eSWfoNaH2AxVc8xmiEPC08jhzJSeM6w7/iMUGet8b4oBQ==" }, "b64": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/b64/-/b64-4.1.2.tgz", - "integrity": "sha512-+GUspBxlH3CJaxMUGUE1EBoWM6RKgWiYwUDal0qdf8m3ArnXNN1KzKVo5HOnE/FSq4HHyWf3TlHLsZI8PKQgrQ==", - "requires": { - "hoek": "6.x.x" - } + "integrity": "sha512-+GUspBxlH3CJaxMUGUE1EBoWM6RKgWiYwUDal0qdf8m3ArnXNN1KzKVo5HOnE/FSq4HHyWf3TlHLsZI8PKQgrQ==" }, "boom": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz", - "integrity": "sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A==", - "requires": { - "hoek": "6.x.x" - } + "integrity": "sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A==" }, "bounce": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/bounce/-/bounce-1.2.3.tgz", - "integrity": "sha512-3G7B8CyBnip5EahCZJjnvQ1HLyArC6P5e+xcolo13BVI9ogFaDOsNMAE7FIWliHtIkYI8/nTRCvCY9tZa3Mu4g==", - "requires": { - "boom": "7.x.x", - "hoek": "6.x.x" - } + "integrity": "sha512-3G7B8CyBnip5EahCZJjnvQ1HLyArC6P5e+xcolo13BVI9ogFaDOsNMAE7FIWliHtIkYI8/nTRCvCY9tZa3Mu4g==" }, "bourne": { "version": "1.1.1", @@ -3259,56 +3247,32 @@ "call": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/call/-/call-5.0.3.tgz", - "integrity": "sha512-eX16KHiAYXugbFu6VifstSdwH6aMuWWb4s0qvpq1nR1b+Sf+u68jjttg8ixDBEldPqBi30bDU35OJQWKeTLKxg==", - "requires": { - "boom": "7.x.x", - "hoek": "6.x.x" - } + "integrity": "sha512-eX16KHiAYXugbFu6VifstSdwH6aMuWWb4s0qvpq1nR1b+Sf+u68jjttg8ixDBEldPqBi30bDU35OJQWKeTLKxg==" }, "catbox": { "version": "10.0.6", "resolved": "https://registry.npmjs.org/catbox/-/catbox-10.0.6.tgz", - "integrity": "sha512-gQWCnF/jbHcfwGbQ4FQxyRiAwLRipqWTTXjpq7rTqqdcsnZosFa0L3LsCZcPTF33QIeMMkS7QmFBHt6QdzGPvg==", - "requires": { - "boom": "7.x.x", - "hoek": "6.x.x", - "joi": "14.x.x" - } + "integrity": "sha512-gQWCnF/jbHcfwGbQ4FQxyRiAwLRipqWTTXjpq7rTqqdcsnZosFa0L3LsCZcPTF33QIeMMkS7QmFBHt6QdzGPvg==" }, "catbox-memory": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-4.0.1.tgz", - "integrity": "sha512-ZmqNiLsYCIu9qvBJ/MQbznDV2bFH5gFiH67TgIJgSSffJFtTXArT+MM3AvJQlby9NSkLHOX4eH/uuUqnch/Ldw==", - "requires": { - "boom": "7.x.x", - "hoek": "6.x.x" - } + "integrity": "sha512-ZmqNiLsYCIu9qvBJ/MQbznDV2bFH5gFiH67TgIJgSSffJFtTXArT+MM3AvJQlby9NSkLHOX4eH/uuUqnch/Ldw==" }, "content": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/content/-/content-4.0.6.tgz", - "integrity": "sha512-lR9ND3dXiMdmsE84K6l02rMdgiBVmtYWu1Vr/gfSGHcIcznBj2QxmSdUgDuNFOA+G9yrb1IIWkZ7aKtB6hDGyA==", - "requires": { - "boom": "7.x.x" - } + "integrity": "sha512-lR9ND3dXiMdmsE84K6l02rMdgiBVmtYWu1Vr/gfSGHcIcznBj2QxmSdUgDuNFOA+G9yrb1IIWkZ7aKtB6hDGyA==" }, "cryptiles": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-4.1.3.tgz", - "integrity": "sha512-gT9nyTMSUC1JnziQpPbxKGBbUg8VL7Zn2NB4E1cJYvuXdElHrwxrV9bmltZGDzet45zSDGyYceueke1TjynGzw==", - "requires": { - "boom": "7.x.x" - } + "integrity": "sha512-gT9nyTMSUC1JnziQpPbxKGBbUg8VL7Zn2NB4E1cJYvuXdElHrwxrV9bmltZGDzet45zSDGyYceueke1TjynGzw==" }, "heavy": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/heavy/-/heavy-6.1.2.tgz", - "integrity": "sha512-cJp884bqhiebNcEHydW0g6V1MUGYOXRPw9c7MFiHQnuGxtbWuSZpsbojwb2kxb3AA1/Rfs8CNiV9MMOF8pFRDg==", - "requires": { - "boom": "7.x.x", - "hoek": "6.x.x", - "joi": "14.x.x" - } + "integrity": "sha512-cJp884bqhiebNcEHydW0g6V1MUGYOXRPw9c7MFiHQnuGxtbWuSZpsbojwb2kxb3AA1/Rfs8CNiV9MMOF8pFRDg==" }, "hoek": { "version": "6.1.2", @@ -3318,23 +3282,12 @@ "iron": { "version": "5.0.6", "resolved": "https://registry.npmjs.org/iron/-/iron-5.0.6.tgz", - "integrity": "sha512-zYUMOSkEXGBdwlV/AXF9zJC0aLuTJUKHkGeYS5I2g225M5i6SrxQyGJGhPgOR8BK1omL6N5i6TcwfsXbP8/Exw==", - "requires": { - "b64": "4.x.x", - "boom": "7.x.x", - "cryptiles": "4.x.x", - "hoek": "6.x.x" - } + "integrity": "sha512-zYUMOSkEXGBdwlV/AXF9zJC0aLuTJUKHkGeYS5I2g225M5i6SrxQyGJGhPgOR8BK1omL6N5i6TcwfsXbP8/Exw==" }, "joi": { "version": "14.3.1", "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", - "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", - "requires": { - "hoek": "6.x.x", - "isemail": "3.x.x", - "topo": "3.x.x" - } + "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==" }, "mime-db": { "version": "1.37.0", @@ -3344,86 +3297,42 @@ "mimos": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/mimos/-/mimos-4.0.2.tgz", - "integrity": "sha512-5XBsDqBqzSN88XPPH/TFpOalWOjHJM5Z2d3AMx/30iq+qXvYKd/8MPhqBwZDOLtoaIWInR3nLzMQcxfGK9djXA==", - "requires": { - "hoek": "6.x.x", - "mime-db": "1.x.x" - } + "integrity": "sha512-5XBsDqBqzSN88XPPH/TFpOalWOjHJM5Z2d3AMx/30iq+qXvYKd/8MPhqBwZDOLtoaIWInR3nLzMQcxfGK9djXA==" }, "nigel": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/nigel/-/nigel-3.0.4.tgz", - "integrity": "sha512-3SZCCS/duVDGxFpTROHEieC+itDo4UqL9JNUyQJv3rljudQbK6aqus5B4470OxhESPJLN93Qqxg16rH7DUjbfQ==", - "requires": { - "hoek": "6.x.x", - "vise": "3.x.x" - } + "integrity": "sha512-3SZCCS/duVDGxFpTROHEieC+itDo4UqL9JNUyQJv3rljudQbK6aqus5B4470OxhESPJLN93Qqxg16rH7DUjbfQ==" }, "pez": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pez/-/pez-4.0.5.tgz", - "integrity": "sha512-HvL8uiFIlkXbx/qw4B8jKDCWzo7Pnnd65Uvanf9OOCtb20MRcb9gtTVBf9NCnhETif1/nzbDHIjAWC/sUp7LIQ==", - "requires": { - "b64": "4.x.x", - "boom": "7.x.x", - "content": "4.x.x", - "hoek": "6.x.x", - "nigel": "3.x.x" - } + "integrity": "sha512-HvL8uiFIlkXbx/qw4B8jKDCWzo7Pnnd65Uvanf9OOCtb20MRcb9gtTVBf9NCnhETif1/nzbDHIjAWC/sUp7LIQ==" }, "podium": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/podium/-/podium-3.2.0.tgz", - "integrity": "sha512-rbwvxwVkI6gRRlxZQ1zUeafrpGxZ7QPHIheinehAvGATvGIPfWRkaTeWedc5P4YjXJXEV8ZbBxPtglNylF9hjw==", - "requires": { - "hoek": "6.x.x", - "joi": "14.x.x" - } + "integrity": "sha512-rbwvxwVkI6gRRlxZQ1zUeafrpGxZ7QPHIheinehAvGATvGIPfWRkaTeWedc5P4YjXJXEV8ZbBxPtglNylF9hjw==" }, "shot": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/shot/-/shot-4.0.7.tgz", - "integrity": "sha512-RKaKAGKxJ11EjJl0cf2fYVSsd4KB5Cncb9J0v7w+0iIaXpxNqFWTYNDNhBX7f0XSyDrjOH9a4OWZ9Gp/ZML+ew==", - "requires": { - "hoek": "6.x.x", - "joi": "14.x.x" - } + "integrity": "sha512-RKaKAGKxJ11EjJl0cf2fYVSsd4KB5Cncb9J0v7w+0iIaXpxNqFWTYNDNhBX7f0XSyDrjOH9a4OWZ9Gp/ZML+ew==" }, "somever": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/somever/-/somever-2.0.0.tgz", - "integrity": "sha512-9JaIPP+HxwYGqCDqqK3tRaTqdtQHoK6Qy3IrXhIt2q5x8fs8RcfU7BMWlFTCOgFazK8p88zIv1tHQXvAwtXMyw==", - "requires": { - "bounce": "1.x.x", - "hoek": "6.x.x" - } + "integrity": "sha512-9JaIPP+HxwYGqCDqqK3tRaTqdtQHoK6Qy3IrXhIt2q5x8fs8RcfU7BMWlFTCOgFazK8p88zIv1tHQXvAwtXMyw==" }, "statehood": { "version": "6.0.9", "resolved": "https://registry.npmjs.org/statehood/-/statehood-6.0.9.tgz", - "integrity": "sha512-jbFg1+MYEqfC7ABAoWZoeF4cQUtp3LUvMDUGExL76cMmleBHG7I6xlZFsE8hRi7nEySIvutHmVlLmBe9+2R5LQ==", - "requires": { - "boom": "7.x.x", - "bounce": "1.x.x", - "bourne": "1.x.x", - "cryptiles": "4.x.x", - "hoek": "6.x.x", - "iron": "5.x.x", - "joi": "14.x.x" - } + "integrity": "sha512-jbFg1+MYEqfC7ABAoWZoeF4cQUtp3LUvMDUGExL76cMmleBHG7I6xlZFsE8hRi7nEySIvutHmVlLmBe9+2R5LQ==" }, "subtext": { "version": "6.0.12", "resolved": "https://registry.npmjs.org/subtext/-/subtext-6.0.12.tgz", - "integrity": "sha512-yT1wCDWVgqvL9BIkWzWqgj5spUSYo/Enu09iUV8t2ZvHcr2tKGTGg2kc9tUpVEsdhp1ihsZeTAiDqh0TQciTPQ==", - "requires": { - "boom": "7.x.x", - "bourne": "1.x.x", - "content": "4.x.x", - "hoek": "6.x.x", - "pez": "4.x.x", - "wreck": "14.x.x" - } + "integrity": "sha512-yT1wCDWVgqvL9BIkWzWqgj5spUSYo/Enu09iUV8t2ZvHcr2tKGTGg2kc9tUpVEsdhp1ihsZeTAiDqh0TQciTPQ==" }, "teamwork": { "version": "3.0.3", @@ -3433,27 +3342,17 @@ "topo": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", - "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", - "requires": { - "hoek": "6.x.x" - } + "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==" }, "vise": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/vise/-/vise-3.0.2.tgz", - "integrity": "sha512-X52VtdRQbSBXdjcazRiY3eRgV3vTQ0B+7Wh8uC9cVv7lKfML5m9+9NHlbcgCY0R9EAqD1v/v7o9mhGh2A3ANFg==", - "requires": { - "hoek": "6.x.x" - } + "integrity": "sha512-X52VtdRQbSBXdjcazRiY3eRgV3vTQ0B+7Wh8uC9cVv7lKfML5m9+9NHlbcgCY0R9EAqD1v/v7o9mhGh2A3ANFg==" }, "wreck": { "version": "14.1.3", "resolved": "https://registry.npmjs.org/wreck/-/wreck-14.1.3.tgz", - "integrity": "sha512-hb/BUtjX3ObbwO3slCOLCenQ4EP8e+n8j6FmTne3VhEFp5XV1faSJojiyxVSvw34vgdeTG5baLTl4NmjwokLlw==", - "requires": { - "boom": "7.x.x", - "hoek": "6.x.x" - } + "integrity": "sha512-hb/BUtjX3ObbwO3slCOLCenQ4EP8e+n8j6FmTne3VhEFp5XV1faSJojiyxVSvw34vgdeTG5baLTl4NmjwokLlw==" } } }, @@ -3593,6 +3492,11 @@ } } }, + "hi-base32": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/hi-base32/-/hi-base32-0.5.0.tgz", + "integrity": "sha512-DDRmxSyoYuvjUb9EnXdoiMChBZ7ZcUVJsK5Frd3kqMhuBxvmZdnBeynAVfj7/ECbn++CekcoprvC/rprHPAtow==" + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -3879,17 +3783,13 @@ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, "ip-address": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.0.tgz", - "integrity": "sha512-+4yKpEyent8IpjuDQVkIpzIDbxSlCHTPdmaXCRLH0ttt3YsrbNxuZJ6h+1wLPx10T7gWsLN7M6BXIHV2vZNOGw==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.2.tgz", + "integrity": "sha512-7aeFm/7oqo0mMhubTSjZ2Juw/F+WJ3hyfCScNVRQdz5RSRhw1Rj4ZlBFsmEajeKgQDI8asqVs31h8DpxEv7IfQ==", "requires": { "jsbn": "1.1.0", - "lodash.find": "^4.6.0", - "lodash.max": "^4.0.1", - "lodash.merge": "^4.6.1", - "lodash.padstart": "^4.6.1", - "lodash.repeat": "^4.1.0", - "sprintf-js": "1.1.1" + "lodash": "^4.17.11", + "sprintf-js": "1.1.2" } }, "ip-regex": { @@ -5538,9 +5438,9 @@ } }, "levelup": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.0.1.tgz", - "integrity": "sha512-l7KXOkINXHgNqmz0v9bxvRnMCUG4gmShFrzFSZXXhcqFnfvKAW8NerVsTICpZtVhGOMAmhY6JsVoVh/tUPBmdg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.0.2.tgz", + "integrity": "sha512-cx9PmLENwbGA3svWBEbeO2HazpOSOYSXH4VA+ahVpYyurvD+SDSfURl29VBY2qgyk+Vfy2dJd71SBRckj/EZVA==", "requires": { "deferred-leveldown": "~5.0.0", "level-errors": "~2.0.0", @@ -5554,26 +5454,26 @@ "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" }, "libp2p": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-0.25.3.tgz", - "integrity": "sha512-zeWUErS3izSjlm4FO0Wq6YpqUyml6Fl25Ahxu7gXBg/HJU6R+ujWuPke0O0MI8EHpCdcTxPF7TreD20h+LSWsw==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-0.25.4.tgz", + "integrity": "sha512-pg0g80heFcTCXOC6P66uibUTLMvQ6hKap30sFCK84V7UWZYGhP8vNh+2Ye3xZMaDbsASVUJn6pEnDn2krOCrFQ==", "requires": { "async": "^2.6.2", "debug": "^4.1.1", "err-code": "^1.1.2", "fsm-event": "^2.1.0", - "libp2p-connection-manager": "~0.1.0", - "libp2p-floodsub": "~0.16.0", - "libp2p-ping": "~0.8.5", - "libp2p-switch": "~0.42.9", - "libp2p-websockets": "~0.12.2", + "libp2p-connection-manager": "^0.1.0", + "libp2p-floodsub": "^0.16.1", + "libp2p-ping": "^0.8.5", + "libp2p-switch": "^0.42.12", + "libp2p-websockets": "^0.12.2", "mafmt": "^6.0.7", - "multiaddr": "^6.0.6", + "multiaddr": "^6.1.0", "once": "^1.4.0", - "peer-book": "~0.9.1", - "peer-id": "~0.12.2", - "peer-info": "~0.15.1", - "superstruct": "~0.6.0" + "peer-book": "^0.9.1", + "peer-id": "^0.12.2", + "peer-info": "^0.15.1", + "superstruct": "^0.6.0" } }, "libp2p-bootstrap": { @@ -5590,21 +5490,21 @@ } }, "libp2p-circuit": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/libp2p-circuit/-/libp2p-circuit-0.3.6.tgz", - "integrity": "sha512-aeLAyQKIvWOxD5AWJ5M6z9XNUWerfBmUNQEEOoGDVW91PW95BrxqtOmaCXOXiMct7qpT4gz2RtAPES55dDwbIQ==", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/libp2p-circuit/-/libp2p-circuit-0.3.7.tgz", + "integrity": "sha512-Z14T3D1YYE1W2k9QtheyxzfwGpEi4Tk4gDofSmAhKqlfCQcctNvKdv0udgjnwzZjXRBtAmNzVJfxZ2WagtZotA==", "requires": { "async": "^2.6.2", "debug": "^4.1.1", "interface-connection": "~0.3.3", - "mafmt": "^6.0.6", - "multiaddr": "^6.0.4", + "mafmt": "^6.0.7", + "multiaddr": "^6.0.6", "once": "^1.4.0", "peer-id": "~0.12.2", "peer-info": "~0.15.1", "protons": "^1.0.1", "pull-handshake": "^1.1.4", - "pull-length-prefixed": "^1.3.1", + "pull-length-prefixed": "^1.3.2", "pull-pair": "^1.1.0", "pull-stream": "^3.6.9" } @@ -5908,9 +5808,9 @@ } }, "libp2p-switch": { - "version": "0.42.11", - "resolved": "https://registry.npmjs.org/libp2p-switch/-/libp2p-switch-0.42.11.tgz", - "integrity": "sha512-F0iIZXG8snM/ADwD9bsCzwJzxYv/tF4jHsn7n9MUypAN3aESJtexiI9KeDisRRY8rlwvUzwMZLx4C1NE5PFTxA==", + "version": "0.42.12", + "resolved": "https://registry.npmjs.org/libp2p-switch/-/libp2p-switch-0.42.12.tgz", + "integrity": "sha512-aNjJQpP9kSClXXKIliSqIowIoxAy0JQ8hnw6BoqOHUIG9Eov4GVyuOdU6lQKl1ym4uKMsnF2G49qpZJ47O01XA==", "requires": { "async": "^2.6.2", "bignumber.js": "^8.1.1", @@ -6125,11 +6025,6 @@ "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" }, - "lodash.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=" - }, "lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -6150,26 +6045,6 @@ "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" }, - "lodash.max": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.max/-/lodash.max-4.0.1.tgz", - "integrity": "sha1-hzVWbGGLNan3YFILSHrnllivE2o=" - }, - "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" - }, - "lodash.padstart": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", - "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" - }, - "lodash.repeat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-4.1.0.tgz", - "integrity": "sha1-/H3oEx2MisB+S0n3T/6CnR8r7EQ=" - }, "lodash.throttle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", @@ -6451,9 +6326,9 @@ } }, "mongodb-core": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.2.6.tgz", - "integrity": "sha512-i+XRVjur9D0ywGF7cFebOUnALnbvMHajdNhhl3TQuopW6QDE655G8CpPeERbqSqfa3rOKEUo08lENDIiBIuAvQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.2.7.tgz", + "integrity": "sha512-WypKdLxFNPOH/Jy6i9z47IjG2wIldA54iDZBmHMINcgKOUcWJh8og+Wix76oGd7EyYkHJKssQ2FAOw5Su/n4XQ==", "requires": { "bson": "^1.1.1", "require_optional": "^1.0.1", @@ -6462,12 +6337,12 @@ } }, "mortice": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/mortice/-/mortice-1.2.1.tgz", - "integrity": "sha512-O9O2Cx6u/AcPLLELYbCGZkcg2yvPo7zJk3+v7h8Emlne5+sg48W/shwtG5UAD+2UIuMMayC+fJ/OlZXwHfA08g==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/mortice/-/mortice-1.2.2.tgz", + "integrity": "sha512-zECpP0bCFVxlAbIJST7ZHQPm5ECKsJRaw4JfSmu5XQeSkO+UB8i+1GUxkskqLHHQfj/wGRWNDd8KBkWfHaZZkw==", "requires": { "observable-webworkers": "^1.0.0", - "p-queue": "^2.4.2", + "p-queue": "^5.0.0", "promise-timeout": "^1.3.0", "shortid": "^2.2.8" } @@ -6488,12 +6363,13 @@ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" }, "multiaddr": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-6.0.6.tgz", - "integrity": "sha512-nR4s91mi7IKed1jrqUj/4OhZ1VKdAjUG79IuVB5PS6b+qxOZLKPW8nsskHhrfGn4o1Rn1NJWl7znidF/NVQpEA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-6.1.0.tgz", + "integrity": "sha512-+XTP3OzG2m6JVcjxA9QBmGDr0Vk8WwnohC/fCC3puXb5qJqfJwLVJLEtdTc6vK7ri/hw+Nn4wyT4LkZaPnvGfQ==", "requires": { "bs58": "^4.0.1", "class-is": "^1.1.0", + "hi-base32": "~0.5.0", "ip": "^1.1.5", "is-ip": "^2.0.0", "varint": "^5.0.0" @@ -6535,9 +6411,9 @@ } }, "multicodec": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.1.tgz", - "integrity": "sha512-Q5glyZLdXVbbBxvRYHLQHpu8ydVf1422Z+v9fU47v2JCkiue7n+JcFS7uRv0cQW8hbVtgdtIDgYWPWaIKEXuXA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.3.tgz", + "integrity": "sha512-TUId9mavSh7q4ui5nUYiC0U10XVrMhsoMLPoG6nAAaFt2GKqZKK3aB2AeFk58aqEnLhmTSdRkmNrlty4jjOxzg==", "requires": { "varint": "^5.0.0" } @@ -6645,9 +6521,9 @@ } }, "node-fetch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", - "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" }, "node-forge": { "version": "0.8.4", @@ -7902,9 +7778,12 @@ } }, "p-queue": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-2.4.2.tgz", - "integrity": "sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-5.0.0.tgz", + "integrity": "sha512-6QfeouDf236N+MAxHch0CVIy8o/KBnmhttKjxZoOkUlzqU+u9rZgEyXH3OdckhTgawbqf5rpzmyR+07+Lv0+zg==", + "requires": { + "eventemitter3": "^3.1.0" + } }, "p-try": { "version": "2.2.0", @@ -8090,9 +7969,9 @@ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "pino": { - "version": "5.12.5", - "resolved": "https://registry.npmjs.org/pino/-/pino-5.12.5.tgz", - "integrity": "sha512-Y493vt9ci7Jez3WZ/aUArijTQZXbHgWvDB3TMZlTu731p2kan/qyJk5k46aveEmYFnTlEommc+PSncUcuiMrBg==", + "version": "5.12.6", + "resolved": "https://registry.npmjs.org/pino/-/pino-5.12.6.tgz", + "integrity": "sha512-LM5ug2b27uymIIkaBw54ncF+9DSf8S4z1uzw+Y5I94dRu3Z+lFuB13j0kg1InAeyxy+CsLGnWHKy9+zgTreFOg==", "requires": { "fast-redact": "^1.4.4", "fast-safe-stringify": "^2.0.6", @@ -8119,9 +7998,9 @@ } }, "pino-std-serializers": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.1.tgz", - "integrity": "sha512-v/JglhO0aFcvkMV9VUxhgyuJo8K1si857Ww86Tx8H2cjC/kp0ndzzcF6Vbxr4RgKFYJdHfLVpEuD55znMZuxnw==" + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz", + "integrity": "sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ==" }, "pkg-dir": { "version": "3.0.0", @@ -8238,9 +8117,9 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "prom-client": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-11.3.0.tgz", - "integrity": "sha512-OqSf5WOvpGZXkfqPXUHNHpjrbEE/q8jxjktO0i7zg1cnULAtf0ET67/J5R4e4iA4MZx2260tzTzSFSWgMdTZmQ==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-11.5.0.tgz", + "integrity": "sha512-VxEGhbe/C287yBARXCEWLmbTQy7n97DZmaMuHdqLQ1bB/THLHcelZHcSyxIHigL6UtvKq09ZUEinK6hsH6LwDQ==", "optional": true, "requires": { "tdigest": "^0.1.1" @@ -8439,9 +8318,9 @@ } }, "pull-stream": { - "version": "3.6.11", - "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.11.tgz", - "integrity": "sha512-43brwtqO0OSltctKbW1mgzzKH4TNE8egkW+Y4BFzlDWiG2Ayl7VKr4SeuoKacfgPfUWcSwcPlHsf40BEqNR32A==" + "version": "3.6.12", + "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.12.tgz", + "integrity": "sha512-+LO1XIVyTMmeoH26UHznpgrgX2npTVYccTkMpgk/EyiQjFt1FmoNm+w+/zMLuz9U3bpvT5sSUicMKEe/2JjgEA==" }, "pull-stream-to-async-iterator": { "version": "1.0.1", @@ -8652,9 +8531,9 @@ } }, "readable-stream": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", - "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -9255,9 +9134,9 @@ } }, "sprintf-js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", - "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, "stable": { "version": "0.1.8", @@ -9502,9 +9381,9 @@ } }, "tar-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.0.1.tgz", - "integrity": "sha512-I6OJF7wE62BC6zNPdHDtseK0D0187PBjbKSLYY4ffvVkBM6tyBn2O9plDvVM2229/mozfEL/X3++qSvYYQE2xw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.0.tgz", + "integrity": "sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw==", "requires": { "bl": "^3.0.0", "end-of-stream": "^1.4.1", @@ -10291,9 +10170,9 @@ } }, "yargs-parser": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz", - "integrity": "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/package.json b/package.json index 18c1c554..23268011 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "Apache-2.0", "main": "dist/src/core.js", "dependencies": { - "@decentralized-identity/sidetree": "0.1.11", + "@decentralized-identity/sidetree": "0.2.0", "koa": "2.7.0", "koa-router": "7.4.0", "raw-body": "2.3.3" diff --git a/src/bitcoin.ts b/src/bitcoin.ts index 1d580208..75d12feb 100644 --- a/src/bitcoin.ts +++ b/src/bitcoin.ts @@ -13,7 +13,40 @@ interface IBitcoinServiceConifg extends ISidetreeBitcoinConfig { port: number; } -const config: IBitcoinServiceConifg = require('../json/bitcoin-config.json'); +/** + * Handles the request using the given request handler then assigns the returned value as the body. + * NOTE: The value of this method is really the unified handling of errors thrown. + * @param requestHandler Request handler. + * @param koaResponse Response object to update. + */ +async function handleRequestAndSetKoaResponse (requestHandler: () => Promise, koaResponse: Koa.Response) { + try { + const responseBody = await requestHandler(); + koaResponse.status = 200; + koaResponse.set('Content-Type', 'application/json'); + + if (responseBody) { + koaResponse.body = JSON.stringify(responseBody); + } else { + // Need to set the body explicitly, otherwise Koa will return HTTP 204 + koaResponse.body = ''; + } + } catch (error) { + console.error(error); + if ('status' in error) { + koaResponse.status = error.status; + } + + if ('code' in error) { + koaResponse.body = JSON.stringify({ + code: error.code + }); + } + } +} + +const configFilePath = process.env.SIDETREE_BITCOIN_CONFIG_FILE_PATH || '../json/bitcoin-config.json'; +const config: IBitcoinServiceConifg = require(configFilePath); const app = new Koa(); // Raw body parser. @@ -25,39 +58,40 @@ app.use(async (ctx, next) => { const router = new Router(); router.get('/transactions', async (ctx, _next) => { - const params = querystring.parse(ctx.querystring); + + let requestHandler; if ('since' in params && 'transaction-time-hash' in params) { const since = Number(params['since']); const transactionTimeHash = String(params['transaction-time-hash']); - const response = await blockchainService.transactions(since, transactionTimeHash); - setKoaResponse(response, ctx.response); + requestHandler = () => blockchainService.transactions(since, transactionTimeHash); } else { - const response = await blockchainService.transactions(); - setKoaResponse(response, ctx.response); + requestHandler = () => blockchainService.transactions(); } + + await handleRequestAndSetKoaResponse(requestHandler, ctx.response); }); router.post('/transactions', async (ctx, _next) => { const writeRequest = JSON.parse(ctx.body); - const response = await blockchainService.writeTransaction(writeRequest.anchorFileHash); - setKoaResponse(response, ctx.response); + const requestHandler = () => blockchainService.writeTransaction(writeRequest.anchorFileHash); + await handleRequestAndSetKoaResponse(requestHandler, ctx.response); }); router.post('/transactions/firstValid', async (ctx, _next) => { const transactionsObject = JSON.parse(ctx.body); - const response = await blockchainService.firstValidTransaction(transactionsObject.transactions); - setKoaResponse(response, ctx.response); + const requestHandler = () => blockchainService.firstValidTransaction(transactionsObject.transactions); + await handleRequestAndSetKoaResponse(requestHandler, ctx.response); }); router.get('/time', async (ctx, _next) => { - const response = await blockchainService.time(); - setKoaResponse(response, ctx.response); + const requestHandler = () => blockchainService.time(); + await handleRequestAndSetKoaResponse(requestHandler, ctx.response); }); router.get('/time/:hash', async (ctx, _next) => { - const response = await blockchainService.time(ctx.params.hash); - setKoaResponse(response, ctx.response); + const requestHandler = () => blockchainService.time(ctx.params.hash); + await handleRequestAndSetKoaResponse(requestHandler, ctx.response); }); app.use(router.routes()) @@ -71,40 +105,35 @@ app.use((ctx, _next) => { const port = process.env.SIDETREE_BITCOIN_PORT || config.port; // initialize the blockchain service and kick-off background tasks +let server: any; let blockchainService: SidetreeBitcoinProcessor; try { blockchainService = new SidetreeBitcoinProcessor(config); - blockchainService.initialize() + // SIDETREE_TEST_MODE enables unit testing of this file by bypassing blockchain service initialization. + if (process.env.SIDETREE_TEST_MODE === 'true') { + server = app.listen(port); + } else { + blockchainService.initialize() .then(() => { - app.listen(port, () => { + server = app.listen(port, () => { console.log(`Sidetree-Bitcoin node running on port: ${port}`); }); }) - .catch((error: Error) => { + .catch((error) => { console.error(`Sidetree-Bitcoin node initialization failed with error: ${error}`); process.exit(1); }); + } } catch (error) { - console.log('Is bitcoinWalletImportString valid? Consider using testnet key...'); + console.log('Is bitcoinWalletImportString valid? Consider using testnet key generated below:'); console.log(SidetreeBitcoinProcessor.generatePrivateKey('testnet')); process.exit(1); } console.info('Sidetree bitcoin service configuration:'); console.info(config); -/** - * Sets the koa response according to the Sidetree response object given. - * @param response Response object fetched from request handler. - * @param koaResponse Koa Response object to be filled - * @param contentType Content type to be set for response, defaults to application/json - */ -const setKoaResponse = (response: any, koaResponse: Koa.Response, contentType?: string) => { - koaResponse.status = 200; - if (contentType) { - koaResponse.set('Content-Type', contentType); - } else { - koaResponse.set('Content-Type', 'application/json'); - } - koaResponse.body = response ? JSON.stringify(response) : ''; +export { + server, + blockchainService };