diff --git a/package-lock.json b/package-lock.json index f9741f671..3b564d4f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1477,9 +1477,9 @@ } }, "base-x": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.5.tgz", - "integrity": "sha512-C3picSgzPSLE+jW3tcBzJoGwitOtazb5B+5YmAxZm2ybmTi9LNgAtDO/jjVEBZwHoXmDBZ9m/IELj3elJVRBcA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.4.tgz", + "integrity": "sha512-UYOadoSIkEI/VrRGSG6qp93rp2WdokiAiNYDfGW5qURAY8GiAQkvMbwNNSDYiVJopqv4gCna7xqf4rrNGp+5AA==", "requires": { "safe-buffer": "^5.0.1" } @@ -1851,6 +1851,11 @@ } } }, + "callbackify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/callbackify/-/callbackify-1.1.0.tgz", + "integrity": "sha1-0qNphtKKppcUUmwREgm+65l50x4=" + }, "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", @@ -5161,24 +5166,10 @@ } } }, - "ipfs-block": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/ipfs-block/-/ipfs-block-0.8.0.tgz", - "integrity": "sha512-znNtFRxXlJYP1/Q4u0tGFJUceH9pNww8WA+zair6T3y7d28m+vtUDJGn96M7ZlFFSkByQyQsAiq2ssNhKtMzxw==", - "requires": { - "cids": "~0.5.5", - "class-is": "^1.1.0" - } - }, - "ipfs-css": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/ipfs-css/-/ipfs-css-0.12.0.tgz", - "integrity": "sha512-bU72aEG1LR1MVUnHIXsCxdZqJwKpQrh0Wod2aI1o940hVxobZqHEVw5PISdhVdtK42IaHhtq25wAl0zZlUwyiA==" - }, - "ipfs-http-client": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-27.1.0.tgz", - "integrity": "sha512-Id9C0V8Bxnr8xBjXdVf7qUBAnslkvgHSFJw+csx4t5dqqeaI/aOLnNZG/6RBgmvI0//3ixKgwzgSt2vBHxeikw==", + "ipfs-api": { + "version": "26.1.2", + "resolved": "https://registry.npmjs.org/ipfs-api/-/ipfs-api-26.1.2.tgz", + "integrity": "sha512-HkM6vQOHL9z9ZCXIrbDXvAOsIzfWPaAac9kY+SjUuVqMydWHzP8qTxfv5jaXResGbmLcbwcROhuqgJU+HrclSg==", "requires": { "async": "^2.6.1", "big.js": "^5.2.2", @@ -5194,15 +5185,15 @@ "ipfs-block": "~0.8.0", "ipfs-unixfs": "~0.1.16", "ipld-dag-cbor": "~0.13.0", - "ipld-dag-pb": "~0.15.0", + "ipld-dag-pb": "~0.14.11", "is-ipfs": "~0.4.7", "is-pull-stream": "0.0.0", "is-stream": "^1.1.0", "libp2p-crypto": "~0.14.0", "lodash": "^4.17.11", "lru-cache": "^4.1.3", - "multiaddr": "^5.0.2", - "multibase": "~0.6.0", + "multiaddr": "^5.0.0", + "multibase": "~0.5.0", "multihashes": "~0.4.14", "ndjson": "^1.5.0", "once": "^1.4.0", @@ -5247,6 +5238,91 @@ } } }, + "ipfs-block": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/ipfs-block/-/ipfs-block-0.8.0.tgz", + "integrity": "sha512-znNtFRxXlJYP1/Q4u0tGFJUceH9pNww8WA+zair6T3y7d28m+vtUDJGn96M7ZlFFSkByQyQsAiq2ssNhKtMzxw==", + "requires": { + "cids": "~0.5.5", + "class-is": "^1.1.0" + } + }, + "libp2p-crypto": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.14.1.tgz", + "integrity": "sha512-JP3bfEzNik76fFIWOeU909+v76tjj5BMukbPCc61bgh1ixftcHkr4bH79duz+oSxRpGA+orCLxvkhgALV+pfwg==", + "requires": { + "asn1.js": "^5.0.1", + "async": "^2.6.1", + "browserify-aes": "^1.2.0", + "bs58": "^4.0.1", + "keypair": "^1.0.1", + "libp2p-crypto-secp256k1": "~0.2.2", + "multihashing-async": "~0.5.1", + "node-forge": "~0.7.6", + "pem-jwk": "^1.5.1", + "protons": "^1.0.1", + "rsa-pem-to-jwk": "^1.1.3", + "tweetnacl": "^1.0.0", + "ursa-optional": "~0.9.9", + "webcrypto-shim": "github:dignifiedquire/webcrypto-shim#190bc9ec341375df6025b17ae12ddb2428ea49c8" + } + }, + "multibase": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.5.0.tgz", + "integrity": "sha512-7epKiK8/UBzraYZvOuZa8FH/00hMfTnzTy1OQol1YBU2csAYA7rwWh+iue9plXRmVFBGvmVKMuo0oq5sD47kvw==", + "requires": { + "base-x": "3.0.4" + } + }, + "peer-id": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.12.0.tgz", + "integrity": "sha512-pPKk4IDBWGGzcjXe6zzngIwKmyadYNsIOUH1PKb7GYTVVTKHpHn78ljZNZdAXAWZ2V1TmlU2OS6d9MfW2E5DNA==", + "requires": { + "async": "^2.6.1", + "class-is": "^1.1.0", + "libp2p-crypto": "~0.13.0", + "lodash": "^4.17.10", + "multihashes": "~0.4.13" + }, + "dependencies": { + "libp2p-crypto": { + "version": "0.13.0", + "resolved": "http://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.13.0.tgz", + "integrity": "sha512-i3r1TBec/xYmC5bcpPiIs3OyUAU3iy53OdRdxqawKoWTQPjYB+TyQ4w+otT66Y0sMcw70O0wH3GFAfPmQgFn+g==", + "requires": { + "asn1.js": "^5.0.0", + "async": "^2.6.0", + "browserify-aes": "^1.2.0", + "bs58": "^4.0.1", + "keypair": "^1.0.1", + "libp2p-crypto-secp256k1": "~0.2.2", + "multihashing-async": "~0.4.8", + "node-forge": "^0.7.5", + "pem-jwk": "^1.5.1", + "protons": "^1.0.1", + "rsa-pem-to-jwk": "^1.1.3", + "tweetnacl": "^1.0.0", + "webcrypto-shim": "github:dignifiedquire/webcrypto-shim#190bc9ec341375df6025b17ae12ddb2428ea49c8" + } + }, + "multihashing-async": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.4.8.tgz", + "integrity": "sha512-LCc4lfxmTJOHKIjZjFNgvmfB6nXS/ErLInT9uwU8udFrRm2PH+aTPk3mfCREKmCiSHOlCWiv2O8rlnBx+OjlMw==", + "requires": { + "async": "^2.6.0", + "blakejs": "^1.1.0", + "js-sha3": "^0.7.0", + "multihashes": "~0.4.13", + "murmurhash3js": "^3.0.1", + "nodeify": "^1.0.1" + } + } + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -5265,9 +5341,54 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } + }, + "tweetnacl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", + "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins=" } } }, + "ipfs-block": { + "version": "0.7.1", + "resolved": "http://registry.npmjs.org/ipfs-block/-/ipfs-block-0.7.1.tgz", + "integrity": "sha512-ABZS9J/+OaDwc10zu6pIVdxWnOD/rkPEravk7FRVuRep7/zKSjffNhO/WuHN7Ex+MOBMz7mty0e+i6xjGnRsRQ==", + "requires": { + "cids": "^0.5.3", + "class-is": "^1.1.0" + } + }, + "ipfs-css": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/ipfs-css/-/ipfs-css-0.12.0.tgz", + "integrity": "sha512-bU72aEG1LR1MVUnHIXsCxdZqJwKpQrh0Wod2aI1o940hVxobZqHEVw5PISdhVdtK42IaHhtq25wAl0zZlUwyiA==" + }, + "ipfs-postmsg-proxy": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/ipfs-postmsg-proxy/-/ipfs-postmsg-proxy-3.1.1.tgz", + "integrity": "sha512-SfBUODRZcGxdESOHx/wqQ+JoS149N1nFCWnjK5N9JZ3K4sDam0e6+JTLrty2laphcjpsHPbFAtE47HMueh56iQ==", + "requires": { + "big.js": "^5.1.2", + "callbackify": "^1.1.0", + "cids": "^0.5.3", + "ipfs-block": "^0.7.1", + "ipld-dag-pb": "^0.14.4", + "is-pull-stream": "0.0.0", + "is-stream": "^1.1.0", + "multiaddr": "^5.0.0", + "peer-id": "^0.11.0", + "peer-info": "^0.14.1", + "postmsg-rpc": "^2.4.0", + "prepost": "^1.1.0", + "pull-abortable": "^4.1.1", + "pull-defer": "^0.2.2", + "pull-postmsg-stream": "^1.2.0", + "pull-stream": "^3.6.8", + "pull-stream-to-stream": "^1.3.4", + "shortid": "^2.2.8", + "stream-to-pull-stream": "^1.7.2" + } + }, "ipfs-unixfs": { "version": "0.1.16", "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-0.1.16.tgz", @@ -5277,9 +5398,9 @@ } }, "ipfsd-ctl": { - "version": "0.40.1", - "resolved": "https://registry.npmjs.org/ipfsd-ctl/-/ipfsd-ctl-0.40.1.tgz", - "integrity": "sha512-oGb73BoMKBI34Xv4ukuFj51fYIObdmE2v6akOw1trdaXKh9CG7dSIy96j+G24kNmOakcDLo+YNNKNA4GYRU3yg==", + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/ipfsd-ctl/-/ipfsd-ctl-0.40.0.tgz", + "integrity": "sha512-gjc3BeR0oXpgpIV3900jq4aShmryONMaGGrdB6Mm8AJJLSp+VcLN/vOcYfIURxDnne2+S01vBf6SpbsqgMRi0Q==", "requires": { "async": "^2.6.1", "base-x": "^3.0.5", @@ -5290,7 +5411,7 @@ "execa": "^1.0.0", "hapi": "^16.6.2", "hat": "~0.0.3", - "ipfs-http-client": "^27.0.0", + "ipfs-api": "^26.1.0", "joi": "^14.0.4", "libp2p-crypto": "~0.14.0", "lodash.clone": "^4.5.0", @@ -5303,6 +5424,42 @@ "safe-json-parse": "^4.0.0", "safe-json-stringify": "^1.2.0", "superagent": "^4.0.0-beta.5" + }, + "dependencies": { + "base-x": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.5.tgz", + "integrity": "sha512-C3picSgzPSLE+jW3tcBzJoGwitOtazb5B+5YmAxZm2ybmTi9LNgAtDO/jjVEBZwHoXmDBZ9m/IELj3elJVRBcA==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "libp2p-crypto": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.14.1.tgz", + "integrity": "sha512-JP3bfEzNik76fFIWOeU909+v76tjj5BMukbPCc61bgh1ixftcHkr4bH79duz+oSxRpGA+orCLxvkhgALV+pfwg==", + "requires": { + "asn1.js": "^5.0.1", + "async": "^2.6.1", + "browserify-aes": "^1.2.0", + "bs58": "^4.0.1", + "keypair": "^1.0.1", + "libp2p-crypto-secp256k1": "~0.2.2", + "multihashing-async": "~0.5.1", + "node-forge": "~0.7.6", + "pem-jwk": "^1.5.1", + "protons": "^1.0.1", + "rsa-pem-to-jwk": "^1.1.3", + "tweetnacl": "^1.0.0", + "ursa-optional": "~0.9.9", + "webcrypto-shim": "github:dignifiedquire/webcrypto-shim#190bc9ec341375df6025b17ae12ddb2428ea49c8" + } + }, + "tweetnacl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", + "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins=" + } } }, "ipld-dag-cbor": { @@ -5328,9 +5485,9 @@ } }, "ipld-dag-pb": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.15.0.tgz", - "integrity": "sha512-rX8kHhiM7975LO6XgSze91TSAEVEpHLsFaLQoR1FLgKoDTwejudRdQJx6DnZmzTT+agpSvi79UYdWTI5ZP+B1w==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.14.11.tgz", + "integrity": "sha512-ja4FH6elDprVuJBkNObFlq7+9h1Q3aoQx5SSG/v3I9e7j19nwyuMhLJYwBhdv29LiqpyD2cEqNrJLm8lWn0lJg==", "requires": { "async": "^2.6.1", "bs58": "^4.0.1", @@ -5941,26 +6098,38 @@ } }, "libp2p-crypto": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.14.1.tgz", - "integrity": "sha512-JP3bfEzNik76fFIWOeU909+v76tjj5BMukbPCc61bgh1ixftcHkr4bH79duz+oSxRpGA+orCLxvkhgALV+pfwg==", + "version": "0.13.0", + "resolved": "http://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.13.0.tgz", + "integrity": "sha512-i3r1TBec/xYmC5bcpPiIs3OyUAU3iy53OdRdxqawKoWTQPjYB+TyQ4w+otT66Y0sMcw70O0wH3GFAfPmQgFn+g==", "requires": { - "asn1.js": "^5.0.1", - "async": "^2.6.1", + "asn1.js": "^5.0.0", + "async": "^2.6.0", "browserify-aes": "^1.2.0", "bs58": "^4.0.1", "keypair": "^1.0.1", "libp2p-crypto-secp256k1": "~0.2.2", - "multihashing-async": "~0.5.1", - "node-forge": "~0.7.6", + "multihashing-async": "~0.4.8", + "node-forge": "^0.7.5", "pem-jwk": "^1.5.1", "protons": "^1.0.1", "rsa-pem-to-jwk": "^1.1.3", "tweetnacl": "^1.0.0", - "ursa-optional": "~0.9.9", "webcrypto-shim": "github:dignifiedquire/webcrypto-shim#190bc9ec341375df6025b17ae12ddb2428ea49c8" }, "dependencies": { + "multihashing-async": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.4.8.tgz", + "integrity": "sha512-LCc4lfxmTJOHKIjZjFNgvmfB6nXS/ErLInT9uwU8udFrRm2PH+aTPk3mfCREKmCiSHOlCWiv2O8rlnBx+OjlMw==", + "requires": { + "async": "^2.6.0", + "blakejs": "^1.1.0", + "js-sha3": "^0.7.0", + "multihashes": "~0.4.13", + "murmurhash3js": "^3.0.1", + "nodeify": "^1.0.1" + } + }, "tweetnacl": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", @@ -6490,16 +6659,6 @@ "integrity": "sha512-R9bNLQhbD7MsitPm1NeY7w9sDgu6d7cuj25snAWH7k5PSNPSwIQQBpcpj8jx1W96dLbdigZqmUWOdQRMnAmgjA==", "requires": { "base-x": "3.0.4" - }, - "dependencies": { - "base-x": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.4.tgz", - "integrity": "sha512-UYOadoSIkEI/VrRGSG6qp93rp2WdokiAiNYDfGW5qURAY8GiAQkvMbwNNSDYiVJopqv4gCna7xqf4rrNGp+5AA==", - "requires": { - "safe-buffer": "^5.0.1" - } - } } }, "multicodec": { @@ -6548,6 +6707,11 @@ "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==" }, + "nanoid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.0.0.tgz", + "integrity": "sha512-SG2qscLE3iM4C0CNzGrsAojJHSVHMS1J8NnvJ31P1lH8P0hGHOiafmniNJz6w6q7vuoDlV7RdySlJgtqkFEVtQ==" + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -7143,55 +7307,14 @@ } }, "peer-id": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.12.0.tgz", - "integrity": "sha512-pPKk4IDBWGGzcjXe6zzngIwKmyadYNsIOUH1PKb7GYTVVTKHpHn78ljZNZdAXAWZ2V1TmlU2OS6d9MfW2E5DNA==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.11.0.tgz", + "integrity": "sha512-C/lRJk4CWIgOdKvfO572NvHbPcUwe49I6G0toIhDB5tCohqv/qzy0uBcAK9Ww8TvYI6U4J3C8ACShV9fWjNU4w==", "requires": { "async": "^2.6.1", - "class-is": "^1.1.0", "libp2p-crypto": "~0.13.0", "lodash": "^4.17.10", "multihashes": "~0.4.13" - }, - "dependencies": { - "libp2p-crypto": { - "version": "0.13.0", - "resolved": "http://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.13.0.tgz", - "integrity": "sha512-i3r1TBec/xYmC5bcpPiIs3OyUAU3iy53OdRdxqawKoWTQPjYB+TyQ4w+otT66Y0sMcw70O0wH3GFAfPmQgFn+g==", - "requires": { - "asn1.js": "^5.0.0", - "async": "^2.6.0", - "browserify-aes": "^1.2.0", - "bs58": "^4.0.1", - "keypair": "^1.0.1", - "libp2p-crypto-secp256k1": "~0.2.2", - "multihashing-async": "~0.4.8", - "node-forge": "^0.7.5", - "pem-jwk": "^1.5.1", - "protons": "^1.0.1", - "rsa-pem-to-jwk": "^1.1.3", - "tweetnacl": "^1.0.0", - "webcrypto-shim": "github:dignifiedquire/webcrypto-shim#190bc9ec341375df6025b17ae12ddb2428ea49c8" - } - }, - "multihashing-async": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.4.8.tgz", - "integrity": "sha512-LCc4lfxmTJOHKIjZjFNgvmfB6nXS/ErLInT9uwU8udFrRm2PH+aTPk3mfCREKmCiSHOlCWiv2O8rlnBx+OjlMw==", - "requires": { - "async": "^2.6.0", - "blakejs": "^1.1.0", - "js-sha3": "^0.7.0", - "multihashes": "~0.4.13", - "murmurhash3js": "^3.0.1", - "nodeify": "^1.0.1" - } - }, - "tweetnacl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", - "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins=" - } } }, "peer-info": { @@ -7479,6 +7602,14 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, + "postmsg-rpc": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postmsg-rpc/-/postmsg-rpc-2.4.0.tgz", + "integrity": "sha512-adGH2zGSxhCUOfUfAXdRn4tgZVWauaSP2X8on+g7uBA45sxkzORL1oia95eXZtcZk5Sp4JTZmDFOTe+D24avBQ==", + "requires": { + "shortid": "^2.2.8" + } + }, "pre-commit": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz", @@ -7524,6 +7655,11 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, + "prepost": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/prepost/-/prepost-1.1.0.tgz", + "integrity": "sha512-HhwOYePY0JXrbqAHm0fGWdSBFqGAMCJvdTaKGxO7uO6S0cbdxXeTnMWDkgAJDS+6kXATaV3n0C0EGI6tR+nqQA==" + }, "prettier": { "version": "1.15.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.15.3.tgz", @@ -7682,11 +7818,25 @@ "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" }, + "pull-abortable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/pull-abortable/-/pull-abortable-4.1.1.tgz", + "integrity": "sha1-s61a77QRayWRbSbbiTk6yY0NzqE=" + }, "pull-defer": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.3.tgz", "integrity": "sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA==" }, + "pull-postmsg-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pull-postmsg-stream/-/pull-postmsg-stream-1.2.0.tgz", + "integrity": "sha512-wpuu5iEFYRr0tJvnzvo3Q8b0Nopzy5FqnCYjrhL/YY5goTNre+paB4qHghMvbB7JSjo717f5XCGRTzTL2sXv7w==", + "requires": { + "postmsg-rpc": "^2.4.0", + "prepost": "^1.1.0" + } + }, "pull-pushable": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.2.0.tgz", @@ -8499,6 +8649,14 @@ "rechoir": "^0.6.2" } }, + "shortid": { + "version": "2.2.14", + "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.14.tgz", + "integrity": "sha512-4UnZgr9gDdA1kaKj/38IiudfC3KHKhDc1zi/HSxd9FQDR0VLwH3/y79tZJLsVYPsJgIjeHjqIWaWVRJUj9qZOQ==", + "requires": { + "nanoid": "^2.0.0" + } + }, "shot": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/shot/-/shot-3.4.2.tgz", diff --git a/package.json b/package.json index 871422ef5..9a5dae217 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "install-app-deps": "electron-builder install-app-deps", "clean:webui": "shx rm -rf src/hooks/webui/app/", "build": "run-s build:*", - "build:webui": "cross-env CID=QmR6FjMewzJRuVq6e9RCbB7akjURSuoGqYxrUurTKS3QQ5 npm run build:webui:with-cid", + "build:webui": "cross-env CID=QmNddzwsDA3XrkdaTCNCbwaPvbUXAfgdXzHv5y3XhkCy5a npm run build:webui:with-cid", "build:webui:with-cid": "cross-env-shell \"shx test -d src/hooks/webui/app/ || (npm run build:webui:dir && (npm run build:webui:fetch-ipfs || npm run build:webui:fetch-http) && npm run build:webui:minimize)\"", "build:webui:dir": "shx mkdir -p src/hooks/webui/app", "build:webui:fetch-ipfs": "cross-env-shell \"ipfs get $CID -o src/hooks/webui/app/\"", @@ -91,7 +91,8 @@ "i18next-icu": "^0.6.0", "i18next-node-fs-backend": "^2.1.0", "ipfs-css": "^0.12.0", - "ipfsd-ctl": "^0.40.1", + "ipfsd-ctl": "0.40.0", + "ipfs-postmsg-proxy": "^3.1.1", "is-ipfs": "^0.4.8", "react": "^16.6.3", "react-dom": "^16.6.3", diff --git a/src/hooks/webui/index.js b/src/hooks/webui/index.js index b5124f9b2..ba4590837 100644 --- a/src/hooks/webui/index.js +++ b/src/hooks/webui/index.js @@ -1,4 +1,4 @@ -import { logo, logger, store } from '../../utils' +import { logo, logger, store, createProxy } from '../../utils' import { join } from 'path' import { screen, BrowserWindow, ipcMain, app, session } from 'electron' import serve from 'electron-serve' @@ -16,8 +16,7 @@ const createWindow = () => { width: store.get('window.width', dimensions.width < 1440 ? dimensions.width : 1440), height: store.get('window.height', dimensions.height < 900 ? dimensions.height : 900), webPreferences: { - preload: join(__dirname, 'preload.js'), - webSecurity: false + preload: join(__dirname, 'preload.js') } }) @@ -57,10 +56,7 @@ export default async function (ctx) { window.webContents.send('config.changed', store.store) }) - session.defaultSession.webRequest.onBeforeSendHeaders((details, callback) => { - delete details.requestHeaders['Origin'] - callback({ cancel: false, requestHeaders: details.requestHeaders }) // eslint-disable-line - }) + createProxy(() => ctx.ipfsd.api, () => window) return new Promise(resolve => { window.on('ready-to-show', () => { diff --git a/src/hooks/webui/preload.js b/src/hooks/webui/preload.js index 17bfaceb4..8c3cc60ca 100644 --- a/src/hooks/webui/preload.js +++ b/src/hooks/webui/preload.js @@ -1,4 +1,16 @@ const { ipcRenderer, shell } = require('electron') +const { createProxyClient } = require('ipfs-postmsg-proxy') + +ipcRenderer.setMaxListeners(100) + +window.ipfs = createProxyClient({ + postMessage: (msg) => { + ipcRenderer.send('ipfs.message', msg) + }, + addListener: (_, listener) => ipcRenderer.on('ipfs.message', listener), + removeListener: (_, listener) => ipcRenderer.removeListener('ipfs.message', listener), + getMessageData: (_, msg) => msg +}) document.addEventListener('click', function (event) { if (event.target.tagName === 'A' && event.target.href.startsWith('http')) { @@ -24,11 +36,3 @@ window.ipfsDesktop = { ipcRenderer.send('config.toggle', setting) } } - -// This preload script creates the window.ipfs object with -// the apiAddress in the URL. -const urlParams = new URLSearchParams(window.location.search) -const apiAddress = urlParams.get('api') - -// Inject api address -window.localStorage.setItem('ipfsApi', apiAddress) diff --git a/src/utils/index.js b/src/utils/index.js index 0c349e943..43edee098 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -1,4 +1,5 @@ import createDaemon from './daemon' +import createProxy from './proxy' import logo from './logo' import { showConnFailureErrorMessage, showErrorMessage } from './errors' import store from './store' @@ -6,6 +7,7 @@ import logger from './logger' import i18n from './i18n' export { + createProxy, createDaemon, logo, store, diff --git a/src/utils/proxy.js b/src/utils/proxy.js new file mode 100644 index 000000000..75e8ddf2f --- /dev/null +++ b/src/utils/proxy.js @@ -0,0 +1,18 @@ +import { createProxyServer } from 'ipfs-postmsg-proxy' +import { ipcMain } from 'electron' + +export default function (getIpfs, getWindow) { + ipcMain.setMaxListeners(100) + + createProxyServer(getIpfs, { + postMessage: (msg) => { + const window = getWindow() + if (window) { + window.webContents.send('ipfs.message', msg) + } + }, + addListener: (_, listener) => ipcMain.on('ipfs.message', listener), + removeListener: (_, listener) => ipcMain.removeListener('ipfs.message', listener), + getMessageData: (_, msg) => msg + }) +}