From a52c14122c2f6159aee8e9204f207dfb05523e44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Cruz?= Date: Thu, 3 Jan 2019 17:49:34 +0000 Subject: [PATCH] Use the new dag api and use ipld links for both heads and next pointers This change is backwards compatible, meaning the old logs can still be read. Also updated IPFS to latest version as the current installed one has breaking changes to the dag api. This way, we are already using the new dag api. --- API.md | 32 +- package-lock.json | 2811 +++++++++++++++++++---------------- package.json | 12 +- src/entry.js | 31 +- src/log-io.js | 14 +- src/utils/from-ipld-node.js | 28 + src/utils/index.js | 6 +- src/utils/to-ipld-node.js | 33 + test/entry-io.spec.js | 2 +- test/entry.spec.js | 14 +- test/log.spec.js | 44 +- test/replicate.spec.js | 8 +- test/utils/mem-store.js | 64 +- 13 files changed, 1740 insertions(+), 1359 deletions(-) create mode 100644 src/utils/from-ipld-node.js create mode 100644 src/utils/to-ipld-node.js diff --git a/API.md b/API.md index d2c3eb2f..3bece3c0 100644 --- a/API.md +++ b/API.md @@ -65,7 +65,7 @@ const tails = log.tails #### append(data) -Append an entry to the log. Returns a *Promise* that resolves to the updated `Log`. +Append an entry to the log. Returns a *Promise* that resolves to the added `Entry`. `ipfs` IPFS instance. @@ -75,31 +75,31 @@ Append an entry to the log. Returns a *Promise* that resolves to the updated `Lo ```javascript log.append({ some: 'data' }) - .then(log => log.append('text')) - .then(log => console.log(log.values)) + .then(() => log.append('text')) + .then(() => console.log(log.values)) -// [ -// { -// hash: 'QmV1KFxZnaguPFp57PMXz5Dd1tf6z9U8csJQoy4xWDzzts', +// [ +// { +// hash: 'zdpuAkYarxnBQD7dQcr5onfzCTkTW8FebzC9nY5FviAveSzCL', // id: 'A', // payload: { some: 'data' }, // next: [], -// v: 0, -// clock: LamportClock { id: 'A', time: 0 } +// v: 1, +// clock: LamportClock { id: 'A', time: 0 } // }, -// { hash: 'QmSxe4Shd7jt4ExyoBjtvgi1UabNKrZfRJKptwUmSa843u', +// { hash: 'zdpuAx4RKTtSkrpA8LKP5vzUdAoWExxLHrRjK2s8YEayDBQDC', // id: 'A', // payload: 'text', -// next: [ 'QmV1KFxZnaguPFp57PMXz5Dd1tf6z9U8csJQoy4xWDzzts' ], -// v: 0, -// clock: LamportClock { id: 'A', time: 1 } -// } +// next: [ 'zdpuAkYarxnBQD7dQcr5onfzCTkTW8FebzC9nY5FviAveSzCL' ], +// v: 1, +// clock: LamportClock { id: 'A', time: 1 } +// } // ] ``` #### join(log, [length], [id]) -Join the log with another log. Returns a Promise that resolves to a `Log` instance. The size of the joined log can be specified by giving `length` argument. +Join the log with another log. Returns a Promise that resolves to a `Log` instance. The size of the joined log can be specified by giving `length` argument. ```javascript // log1.values ==> ['A', 'B', 'C'] @@ -121,6 +121,8 @@ log1.toMultihash() // QmSUrxz12UDsuuQMjzBQ4NDGyYprhFJbQefgeRiomQ5j6T ``` +You can take the hash and inspect the DAG in [explore.ipld.io](https://explore.ipld.io/). + ### toBuffer() Converts the log to a `Buffer` that contains the log as JSON.stringified `string`. Returns a `Buffer`. @@ -165,6 +167,8 @@ Returns the multihash of the log. Converting the log to a multihash will persist the log to IPFS, thus causing side effects. +You can take the hash and inspect the DAG in [explore.ipld.io](https://explore.ipld.io/). + #### Log.fromMultihash(ipfs, multihash, [length=-1]) Create a `Log` from a multihash. diff --git a/package-lock.json b/package-lock.json index 2bdedbad..7b39b560 100644 --- a/package-lock.json +++ b/package-lock.json @@ -54,9 +54,9 @@ }, "dependencies": { "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -759,9 +759,9 @@ }, "dependencies": { "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -1270,14 +1270,6 @@ "chalk": "2.4.1", "leven": "2.1.0", "mri": "1.1.1" - }, - "dependencies": { - "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", - "dev": true - } } }, "arr-diff": { @@ -1382,7 +1374,6 @@ "version": "2.6.1", "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, "requires": { "lodash": "^4.17.10" } @@ -1467,7 +1458,7 @@ }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true } @@ -1556,11 +1547,16 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.5.tgz", "integrity": "sha512-C3picSgzPSLE+jW3tcBzJoGwitOtazb5B+5YmAxZm2ybmTi9LNgAtDO/jjVEBZwHoXmDBZ9m/IELj3elJVRBcA==", - "dev": true, "requires": { "safe-buffer": "^5.0.1" } }, + "base32-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/base32-encode/-/base32-encode-1.1.0.tgz", + "integrity": "sha512-fQWhpkWtaOPr+wvXWYDu1AfRbtIIzWDt3yDDNXLENWPwFyyxDJfVaJoOc1ks1TQckogPiHmb+0iZLQFPkZw8kg==", + "dev": true + }, "base32.js": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/base32.js/-/base32.js-0.1.0.tgz", @@ -1610,9 +1606,9 @@ } }, "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, "bignumber.js": { @@ -1720,8 +1716,7 @@ "blakejs": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", - "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=", - "dev": true + "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=" }, "blob": { "version": "0.0.5", @@ -1791,6 +1786,12 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -1955,7 +1956,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dev": true, "requires": { "base-x": "^3.0.2" } @@ -2062,25 +2062,42 @@ "dev": true }, "cacache": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.1.tgz", - "integrity": "sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA==", + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", "dev": true, "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "figgy-pudding": "^3.1.0", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.3", + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", "promise-inflight": "^1.0.1", "rimraf": "^2.6.2", - "ssri": "^6.0.0", - "unique-filename": "^1.1.0", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", "y18n": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } } }, "cache-base": { @@ -2149,15 +2166,15 @@ "dev": true }, "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", "dev": true }, "caniuse-lite": { - "version": "1.0.30000923", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000923.tgz", - "integrity": "sha512-j5ur7eeluOFjjPUkydtXP4KFAsmH3XaQNch5tvWSO+dLHYt5PE+VgJZLWtbVOodfWij6m6zas28T4gB/cLYq1w==", + "version": "1.0.30000925", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000925.tgz", + "integrity": "sha512-zcYupoUxtW46rOikuDF7vfL9N1Qe9ZuUBTz3n3q8fFsoJIs/h9UN6Vg/0QpjsmvImXw9mVc3g+ZBfqvUz/iALA==", "dev": true }, "capture-stack-trace": { @@ -2303,11 +2320,23 @@ "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", "dev": true }, + "cid-tool": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cid-tool/-/cid-tool-0.1.0.tgz", + "integrity": "sha512-lss0IzW2uiLm+W8St00N23+ySnCoFTD7qPZB1WqqOSvT5mzDG8Di9e5LmcaEkNfFXh7xAmlPZmJnvWxAjVPErg==", + "dev": true, + "requires": { + "cids": "~0.5.3", + "explain-error": "^1.0.4", + "multibase": "~0.5.0", + "multihashes": "~0.4.14", + "yargs": "^12.0.2" + } + }, "cids": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/cids/-/cids-0.5.7.tgz", "integrity": "sha512-SlAz4p8XMEW3mhwiYbzfjn+5+Y//+kIuHqzRUytK0a3uGBnsjJb76xHliehv0HcVMCjRKv2vZnPTwd4QX+IcMA==", - "dev": true, "requires": { "class-is": "^1.1.0", "multibase": "~0.6.0", @@ -2319,7 +2348,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.4.tgz", "integrity": "sha512-UYOadoSIkEI/VrRGSG6qp93rp2WdokiAiNYDfGW5qURAY8GiAQkvMbwNNSDYiVJopqv4gCna7xqf4rrNGp+5AA==", - "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -2328,7 +2356,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.0.tgz", "integrity": "sha512-R9bNLQhbD7MsitPm1NeY7w9sDgu6d7cuj25snAWH7k5PSNPSwIQQBpcpj8jx1W96dLbdigZqmUWOdQRMnAmgjA==", - "dev": true, "requires": { "base-x": "3.0.4" } @@ -2354,8 +2381,7 @@ "class-is": { "version": "1.1.0", "resolved": "http://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", - "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==", - "dev": true + "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" }, "class-utils": { "version": "0.3.6", @@ -2523,7 +2549,7 @@ }, "concat-stream": { "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "resolved": "http://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { @@ -2641,6 +2667,12 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, + "core-decorators": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/core-decorators/-/core-decorators-0.20.0.tgz", + "integrity": "sha1-YFiWYkBTr4wo775zXCWjAaYcZcU=", + "dev": true + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -2694,12 +2726,14 @@ } }, "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "lru-cache": "^4.0.1", + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" } @@ -2790,46 +2824,19 @@ } }, "datastore-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/datastore-fs/-/datastore-fs-0.5.0.tgz", - "integrity": "sha512-l2WF+/TFzzCY3L0b4GYYa196X25PqR2jZnLvqXtz2WODkTXZTcZJ+s4+KAnUAc6TMxWejN8NkEnkcPL05lKSSA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/datastore-fs/-/datastore-fs-0.7.0.tgz", + "integrity": "sha512-U8amTi/aWW391JYeFbIzjKtEqECXuMvDafD0XphsiaRKp0If4SwxgmlMn+y7BHlCRrf4/AYAwemVZBMBrSwIxA==", "dev": true, "requires": { "async": "^2.6.1", - "datastore-core": "~0.4.0", - "glob": "^7.1.2", + "datastore-core": "~0.6.0", + "glob": "^7.1.3", "graceful-fs": "^4.1.11", - "interface-datastore": "^0.4.2", + "interface-datastore": "~0.6.0", "mkdirp": "~0.5.1", - "pull-stream": "^3.6.8", + "pull-stream": "^3.6.9", "write-file-atomic": "^2.3.0" - }, - "dependencies": { - "datastore-core": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-0.4.0.tgz", - "integrity": "sha512-BQC3f2jSUgVL1DUjt/ZJr9yWzNYyx3ApNh4NhMYFZBap0c+iTKJqyHRlO4bRT+CZG0mqqOUTNXU3qYvTJlN6OA==", - "dev": true, - "requires": { - "async": "^2.5.0", - "interface-datastore": "~0.4.0", - "left-pad": "^1.1.3", - "pull-many": "^1.0.8", - "pull-stream": "^3.6.1" - } - }, - "interface-datastore": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-0.4.2.tgz", - "integrity": "sha512-Vztsb1SXZANtwwGkpDoxOTMELhhuCklkQKbjma6PY4XLwIyrhQ1xEKaG1sOHavMXoghThw8IZEysiCDrofOQKQ==", - "dev": true, - "requires": { - "async": "^2.6.0", - "pull-defer": "^0.2.2", - "pull-stream": "^3.6.1", - "uuid": "^3.1.0" - } - } } }, "datastore-level": { @@ -2914,7 +2921,7 @@ }, "deferred-leveldown": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-3.0.0.tgz", + "resolved": "http://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-3.0.0.tgz", "integrity": "sha512-ajbXqRPMXRlcdyt0TuWqknOJkp1JgQjGB7xOl2V+ebol7/U11E9h3/nCZAtN1M7djmAJEIhypCUc1tIWxdQAuQ==", "dev": true, "requires": { @@ -3177,9 +3184,9 @@ } }, "electron-to-chromium": { - "version": "1.3.95", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.95.tgz", - "integrity": "sha512-0JZEDKOQAE05EO/4rk3vLAE+PYFI9OLCVLAS4QAq1y+Bb2y1N6MyQJz62ynzHN/y0Ka/nO5jVJcahbCEdfiXLQ==", + "version": "1.3.96", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.96.tgz", + "integrity": "sha512-ZUXBUyGLeoJxp4Nt6G/GjBRLnyz8IKQGexZ2ndWaoegThgMGFO1tdDYID5gBV32/1S83osjJHyfzvanE/8HY4Q==", "dev": true }, "elliptic": { @@ -3488,19 +3495,6 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", @@ -3906,13 +3900,13 @@ } }, "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", @@ -3961,6 +3955,12 @@ "integrity": "sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg==", "dev": true }, + "explain-error": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/explain-error/-/explain-error-1.0.4.tgz", + "integrity": "sha1-p5PTrAytTGq1cemWj7urbLJTKSk=", + "dev": true + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -4163,9 +4163,9 @@ "dev": true }, "file-type": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", - "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.7.0.tgz", + "integrity": "sha512-AbaGtdWYYRaVrv2MwL/65myuRJ9j3e79e7etJ79US18QHuVlzJBcQHUH+HxDUoLtbyWRTUfLzLkGXX3pP9kfZg==", "dev": true }, "filereader": { @@ -5550,10 +5550,25 @@ "dev": true }, "get-stream": { - "version": "3.0.0", - "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } }, "get-value": { "version": "2.0.6", @@ -5668,6 +5683,14 @@ "timed-out": "^4.0.0", "unzip-response": "^2.0.1", "url-parse-lax": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } } }, "graceful-fs": { @@ -6141,9 +6164,9 @@ } }, "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -6336,9 +6359,9 @@ } }, "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", "dev": true }, "invariant": { @@ -6386,110 +6409,109 @@ } }, "ipfs": { - "version": "0.31.7", - "resolved": "https://registry.npmjs.org/ipfs/-/ipfs-0.31.7.tgz", - "integrity": "sha512-HuA0Y6K7Y6f2Yu+ehUlGhv5VF2PtdZuME1AWYu/8zkfZ+HRpIYANjoK9GqZh6CQjOTJnIrEdqkHpOivUrZnIIg==", + "version": "0.33.1", + "resolved": "https://registry.npmjs.org/ipfs/-/ipfs-0.33.1.tgz", + "integrity": "sha512-He22aMi/qJYcao4zkh9fS1cZZWKPWIyO964j/Bt+DhEUVO79DBBGW+PuF3I8IfVE8ihDxImxNboal3pbZT9EdA==", "dev": true, "requires": { "@nodeutils/defaults-deep": "^1.1.0", "async": "^2.6.1", - "big.js": "^5.1.2", + "big.js": "^5.2.2", "binary-querystring": "~0.1.2", - "bl": "^2.0.1", + "bl": "^2.1.2", "boom": "^7.2.0", "bs58": "^4.0.1", "byteman": "^1.3.5", - "cids": "~0.5.3", - "debug": "^3.1.0", + "cid-tool": "~0.1.0", + "cids": "~0.5.5", + "debug": "^4.1.0", "err-code": "^1.1.2", - "file-type": "^8.1.0", - "filesize": "^3.6.1", + "file-type": "^10.2.0", "fnv1a": "^1.0.1", "fsm-event": "^2.1.0", "get-folder-size": "^2.0.0", - "glob": "^7.1.2", + "glob": "^7.1.3", "hapi": "^16.6.2", "hapi-set-header": "^1.0.2", - "hoek": "^5.0.3", + "hoek": "^5.0.4", "human-to-milliseconds": "^1.0.0", - "interface-datastore": "~0.4.2", - "ipfs-api": "^24.0.0", - "ipfs-bitswap": "~0.20.3", - "ipfs-block": "~0.7.1", - "ipfs-block-service": "~0.14.0", - "ipfs-http-response": "~0.1.2", - "ipfs-mfs": "~0.3.0", + "interface-datastore": "~0.6.0", + "ipfs-api": "^26.1.0", + "ipfs-bitswap": "~0.21.0", + "ipfs-block": "~0.8.0", + "ipfs-block-service": "~0.15.1", + "ipfs-http-response": "~0.2.0", + "ipfs-mfs": "~0.4.2", "ipfs-multipart": "~0.1.0", - "ipfs-repo": "~0.23.1", - "ipfs-unixfs": "~0.1.15", - "ipfs-unixfs-engine": "~0.32.1", - "ipld": "~0.17.3", - "ipld-dag-cbor": "~0.12.1", - "ipld-dag-pb": "~0.14.6", - "is-ipfs": "~0.4.2", + "ipfs-repo": "~0.25.0", + "ipfs-unixfs": "~0.1.16", + "ipfs-unixfs-engine": "~0.33.0", + "ipld": "~0.19.1", + "ipld-bitcoin": "~0.1.8", + "ipld-dag-pb": "~0.14.11", + "ipld-ethereum": "^2.0.1", + "ipld-git": "~0.2.2", + "ipld-raw": "^2.0.1", + "ipld-zcash": "~0.1.6", + "ipns": "~0.3.0", + "is-ipfs": "~0.4.7", "is-pull-stream": "~0.0.0", "is-stream": "^1.1.0", "joi": "^13.4.0", "joi-browser": "^13.4.0", "joi-multiaddr": "^2.0.0", - "libp2p": "~0.23.0", + "libp2p": "~0.23.1", "libp2p-bootstrap": "~0.9.3", - "libp2p-circuit": "~0.2.0", - "libp2p-floodsub": "~0.15.0", - "libp2p-kad-dht": "~0.10.1", - "libp2p-keychain": "~0.3.1", + "libp2p-crypto": "~0.14.0", + "libp2p-kad-dht": "~0.10.6", + "libp2p-keychain": "~0.3.3", "libp2p-mdns": "~0.12.0", - "libp2p-mplex": "~0.8.0", + "libp2p-mplex": "~0.8.2", + "libp2p-record": "~0.6.0", "libp2p-secio": "~0.10.0", - "libp2p-tcp": "~0.12.0", - "libp2p-webrtc-star": "~0.15.3", - "libp2p-websocket-star": "~0.8.1", + "libp2p-tcp": "~0.13.0", + "libp2p-webrtc-star": "~0.15.5", + "libp2p-websocket-star": "~0.9.0", "libp2p-websockets": "~0.12.0", - "lodash": "^4.17.10", - "mafmt": "^6.0.0", - "mime-types": "^2.1.19", + "lodash": "^4.17.11", + "mafmt": "^6.0.2", + "mime-types": "^2.1.21", "mkdirp": "~0.5.1", "multiaddr": "^5.0.0", "multiaddr-to-uri": "^4.0.0", - "multibase": "~0.4.0", - "multihashes": "~0.4.13", + "multibase": "~0.5.0", + "multihashes": "~0.4.14", "once": "^1.4.0", - "path-exists": "^3.0.0", "peer-book": "~0.8.0", - "peer-id": "~0.11.0", + "peer-id": "~0.12.0", "peer-info": "~0.14.1", - "progress": "^2.0.0", - "prom-client": "^11.1.1", - "prometheus-gc-stats": "~0.5.1", + "progress": "^2.0.1", + "prom-client": "^11.1.3", + "prometheus-gc-stats": "~0.6.0", "promisify-es6": "^1.0.3", "pull-abortable": "^4.1.1", - "pull-defer": "~0.2.2", + "pull-catch": "^1.0.0", + "pull-defer": "~0.2.3", "pull-file": "^1.1.0", "pull-ndjson": "~0.1.1", "pull-paramap": "^1.2.2", "pull-pushable": "^2.2.0", "pull-sort": "^1.0.1", - "pull-stream": "^3.6.8", + "pull-stream": "^3.6.9", "pull-stream-to-stream": "^1.3.4", "pull-zip": "^2.0.1", + "pump": "^3.0.0", "read-pkg-up": "^4.0.0", - "readable-stream": "2.3.6", + "readable-stream": "3.0.6", + "receptacle": "^1.3.2", "stream-to-pull-stream": "^1.7.2", - "tar-stream": "^1.6.1", + "tar-stream": "^1.6.2", "temp": "~0.8.3", - "through2": "^2.0.3", "update-notifier": "^2.5.0", - "yargs": "^12.0.1", - "yargs-parser": "^10.1.0", + "yargs": "^12.0.2", "yargs-promise": "^1.1.0" }, "dependencies": { - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, "bl": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/bl/-/bl-2.1.2.tgz", @@ -6498,27 +6520,87 @@ "requires": { "readable-stream": "^2.3.5", "safe-buffer": "^5.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } } }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "interface-datastore": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-0.4.2.tgz", - "integrity": "sha512-Vztsb1SXZANtwwGkpDoxOTMELhhuCklkQKbjma6PY4XLwIyrhQ1xEKaG1sOHavMXoghThw8IZEysiCDrofOQKQ==", + "ipfs-repo": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/ipfs-repo/-/ipfs-repo-0.25.2.tgz", + "integrity": "sha512-TuhUdturwwG/hKdK2m1fv6Hz1hvHsdXQqAsDr0uEXK8WOfz7CZ9IHLU3feDTDhh8nr4fB0nOO5xaTz3cCZ+/9Q==", "dev": true, "requires": { - "async": "^2.6.0", - "pull-defer": "^0.2.2", - "pull-stream": "^3.6.1", - "uuid": "^3.1.0" + "async": "^2.6.1", + "base32.js": "~0.1.0", + "big.js": "^5.2.2", + "cids": "~0.5.5", + "datastore-core": "~0.6.0", + "datastore-fs": "~0.7.0", + "datastore-level": "~0.10.0", + "debug": "^4.1.0", + "interface-datastore": "~0.6.0", + "ipfs-block": "~0.7.1", + "lodash.get": "^4.4.2", + "lodash.has": "^4.5.2", + "lodash.set": "^4.3.2", + "multiaddr": "^5.0.0", + "proper-lockfile": "^3.2.0", + "pull-stream": "^3.6.9", + "sort-keys": "^2.0.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "cids": "^0.5.3", + "class-is": "^1.1.0" + } + } + } + }, + "ipld-dag-pb": { + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.14.11.tgz", + "integrity": "sha512-ja4FH6elDprVuJBkNObFlq7+9h1Q3aoQx5SSG/v3I9e7j19nwyuMhLJYwBhdv29LiqpyD2cEqNrJLm8lWn0lJg==", + "dev": true, + "requires": { + "async": "^2.6.1", + "bs58": "^4.0.1", + "cids": "~0.5.4", + "class-is": "^1.1.0", + "is-ipfs": "~0.4.2", + "multihashing-async": "~0.5.1", + "protons": "^1.0.1", + "pull-stream": "^3.6.9", + "pull-traverse": "^1.0.3", + "stable": "~0.1.8" } }, "ms": { @@ -6526,73 +6608,137 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "readable-stream": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.0.6.tgz", + "integrity": "sha512-9E1oLoOWfhSXHGv6QlwXJim7uNzd9EVlWK+21tCU9Ju/kR0/p2AZYPz4qSchgO8PlLIH4FpZYfzwS+rEksZjIg==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } } } }, "ipfs-api": { - "version": "24.0.2", - "resolved": "https://registry.npmjs.org/ipfs-api/-/ipfs-api-24.0.2.tgz", - "integrity": "sha512-3uxSZ+KNlQql3HO//gfR2Q+MTrfcmkLPlGP9Ewv28Ri+IEUZ3oawo9JahWCEGvXrnJmpRpD9Ko8dYHQZTq+3bA==", + "version": "26.1.2", + "resolved": "https://registry.npmjs.org/ipfs-api/-/ipfs-api-26.1.2.tgz", + "integrity": "sha512-HkM6vQOHL9z9ZCXIrbDXvAOsIzfWPaAac9kY+SjUuVqMydWHzP8qTxfv5jaXResGbmLcbwcROhuqgJU+HrclSg==", "dev": true, "requires": { "async": "^2.6.1", - "big.js": "^5.1.2", + "big.js": "^5.2.2", + "bl": "^2.1.2", "bs58": "^4.0.1", - "cids": "~0.5.3", + "cids": "~0.5.5", "concat-stream": "^1.6.2", - "debug": "^3.1.0", - "detect-node": "^2.0.3", + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "end-of-stream": "^1.4.1", "flatmap": "0.0.3", - "glob": "^7.1.2", - "ipfs-block": "~0.7.1", - "ipfs-unixfs": "~0.1.15", - "ipld-dag-cbor": "~0.12.1", - "ipld-dag-pb": "~0.14.6", - "is-ipfs": "~0.4.2", + "glob": "^7.1.3", + "ipfs-block": "~0.8.0", + "ipfs-unixfs": "~0.1.16", + "ipld-dag-cbor": "~0.13.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.13.0", + "libp2p-crypto": "~0.14.0", + "lodash": "^4.17.11", "lru-cache": "^4.1.3", "multiaddr": "^5.0.0", - "multibase": "~0.4.0", - "multihashes": "~0.4.13", + "multibase": "~0.5.0", + "multihashes": "~0.4.14", "ndjson": "^1.5.0", "once": "^1.4.0", - "peer-id": "~0.11.0", + "peer-id": "~0.12.0", "peer-info": "~0.14.1", "promisify-es6": "^1.0.3", - "pull-defer": "~0.2.2", + "pull-defer": "~0.2.3", "pull-pushable": "^2.2.0", "pull-stream-to-stream": "^1.3.4", "pump": "^3.0.0", "qs": "^6.5.2", - "readable-stream": "^2.3.6", - "stream-http": "^2.8.3", + "readable-stream": "^3.0.6", + "stream-http": "^3.0.0", "stream-to-pull-stream": "^1.7.2", "streamifier": "~0.1.1", - "tar-stream": "^1.6.1" + "tar-stream": "^1.6.2", + "through2": "^2.0.3" }, "dependencies": { - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "bl": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.1.2.tgz", + "integrity": "sha512-DvC0x+PxmSJNx8wXoFV15pC2+GOJ3ohb4F1REq3X32a2Z3nEBpR1Guu740M7ouYAImFj4BXDNilLNZbygtG9lQ==", "dev": true, "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ipld-dag-pb": { + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.14.11.tgz", + "integrity": "sha512-ja4FH6elDprVuJBkNObFlq7+9h1Q3aoQx5SSG/v3I9e7j19nwyuMhLJYwBhdv29LiqpyD2cEqNrJLm8lWn0lJg==", + "dev": true, + "requires": { + "async": "^2.6.1", + "bs58": "^4.0.1", + "cids": "~0.5.4", + "class-is": "^1.1.0", + "is-ipfs": "~0.4.2", + "multihashing-async": "~0.5.1", + "protons": "^1.0.1", + "pull-stream": "^3.6.9", + "pull-traverse": "^1.0.3", + "stable": "~0.1.8" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true }, "pump": { "version": "3.0.0", @@ -6603,20 +6749,31 @@ "end-of-stream": "^1.1.0", "once": "^1.3.1" } + }, + "readable-stream": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", + "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } } } }, "ipfs-bitswap": { - "version": "0.20.3", - "resolved": "https://registry.npmjs.org/ipfs-bitswap/-/ipfs-bitswap-0.20.3.tgz", - "integrity": "sha512-qXg/QhevKBU/tKdWgW6yhcSKQDQx+4Mvv9HEeoVjkqZ9Pagmojk6yGk8X4J9H2G2PagvHXkWsqwqyKho7RcPWA==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/ipfs-bitswap/-/ipfs-bitswap-0.21.1.tgz", + "integrity": "sha512-uuT0evC8Kv39NwHUf/wa21DplFEMCV9A2pdIRI7BJi0R4i2rDTEXoLXu5/ivWvVrNU22JDUyvROOpp6Dh0Gd4Q==", "dev": true, "requires": { "async": "^2.6.1", - "big.js": "^5.1.2", - "cids": "~0.5.3", - "debug": "^3.1.0", - "ipfs-block": "~0.7.1", + "big.js": "^5.2.2", + "cids": "~0.5.5", + "debug": "^4.1.0", + "ipfs-block": "~0.8.0", "lodash.debounce": "^4.0.8", "lodash.find": "^4.6.0", "lodash.groupby": "^4.6.0", @@ -6630,23 +6787,17 @@ "multicodec": "~0.2.7", "multihashing-async": "~0.5.1", "protons": "^1.0.1", - "pull-defer": "~0.2.2", - "pull-length-prefixed": "^1.3.0", + "pull-defer": "~0.2.3", + "pull-length-prefixed": "^1.3.1", "pull-pushable": "^2.2.0", - "pull-stream": "^3.6.8", + "pull-stream": "^3.6.9", "varint-decoder": "~0.1.1" }, "dependencies": { - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -6661,36 +6812,188 @@ } }, "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==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/ipfs-block/-/ipfs-block-0.8.0.tgz", + "integrity": "sha512-znNtFRxXlJYP1/Q4u0tGFJUceH9pNww8WA+zair6T3y7d28m+vtUDJGn96M7ZlFFSkByQyQsAiq2ssNhKtMzxw==", "dev": true, "requires": { - "cids": "^0.5.3", + "cids": "~0.5.5", "class-is": "^1.1.0" } }, "ipfs-block-service": { - "version": "0.14.0", - "resolved": "http://registry.npmjs.org/ipfs-block-service/-/ipfs-block-service-0.14.0.tgz", - "integrity": "sha512-qu5VdBSAh/44wtqVgyoyWebjIY6mLbiEZObwYZHEZ5VFuU4oOlfZ+s2oz2I5lTw1eeL7SGccQeshQ0OePxIPnw==", - "dev": true + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ipfs-block-service/-/ipfs-block-service-0.15.2.tgz", + "integrity": "sha512-iudmJO7UJZHonWoXyakuzy+bpV/7QVDm/g8eCqKN2BvhSjnLepaxdTyaXxJ76F2EOav1hdBP+U3Z9Mg/aCFPgg==", + "dev": true, + "requires": { + "async": "^2.6.1" + } + }, + "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==", + "dev": true, + "requires": { + "async": "^2.6.1", + "big.js": "^5.2.2", + "bl": "^2.1.2", + "bs58": "^4.0.1", + "cids": "~0.5.5", + "concat-stream": "^1.6.2", + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "end-of-stream": "^1.4.1", + "flatmap": "0.0.3", + "glob": "^7.1.3", + "ipfs-block": "~0.8.0", + "ipfs-unixfs": "~0.1.16", + "ipld-dag-cbor": "~0.13.0", + "ipld-dag-pb": "~0.15.0", + "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", + "multihashes": "~0.4.14", + "ndjson": "^1.5.0", + "once": "^1.4.0", + "peer-id": "~0.12.0", + "peer-info": "~0.14.1", + "promisify-es6": "^1.0.3", + "pull-defer": "~0.2.3", + "pull-pushable": "^2.2.0", + "pull-stream-to-stream": "^1.3.4", + "pump": "^3.0.0", + "qs": "^6.5.2", + "readable-stream": "^3.0.6", + "stream-http": "^3.0.0", + "stream-to-pull-stream": "^1.7.2", + "streamifier": "~0.1.1", + "tar-stream": "^1.6.2", + "through2": "^2.0.3" + }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "bl": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.1.2.tgz", + "integrity": "sha512-DvC0x+PxmSJNx8wXoFV15pC2+GOJ3ohb4F1REq3X32a2Z3nEBpR1Guu740M7ouYAImFj4BXDNilLNZbygtG9lQ==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ipld-dag-pb": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.15.2.tgz", + "integrity": "sha512-9mzeYW4FneGROH+/PXMbXsfy3cUsMYHaI6vUu8nNpSTyQdGF+fa1ViA+jvqWzM8zXYwG4OOSCAAADssJeELAvw==", + "dev": true, + "requires": { + "async": "^2.6.1", + "bs58": "^4.0.1", + "cids": "~0.5.4", + "class-is": "^1.1.0", + "is-ipfs": "~0.4.2", + "multihashing-async": "~0.5.1", + "protons": "^1.0.1", + "pull-stream": "^3.6.9", + "pull-traverse": "^1.0.3", + "stable": "~0.1.8" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "multibase": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.0.tgz", + "integrity": "sha512-R9bNLQhbD7MsitPm1NeY7w9sDgu6d7cuj25snAWH7k5PSNPSwIQQBpcpj8jx1W96dLbdigZqmUWOdQRMnAmgjA==", + "dev": true, + "requires": { + "base-x": "3.0.4" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "readable-stream": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", + "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } }, "ipfs-http-response": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/ipfs-http-response/-/ipfs-http-response-0.1.4.tgz", - "integrity": "sha512-qVi0AK3evZBbHljePgmeFy6o8RBVTOmPXUgRNHrwFr99DmJHPhbgJ/Wse0vpQsKwo3dd1m7RP33GHE9Xd1vmPA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ipfs-http-response/-/ipfs-http-response-0.2.1.tgz", + "integrity": "sha512-A3FPRa/IqiGE0dNRDDYRdDnPsq5eBuJWpASWGuEzTeGAh7Ad5dvIaU9JyIcLlcLLF3tAhueUnaFxjgAhot7xog==", "dev": true, "requires": { "async": "^2.6.0", - "cids": "^0.5.3", + "cids": "~0.5.5", "debug": "^3.1.0", "file-type": "^8.0.0", "filesize": "^3.6.1", "get-stream": "^3.0.0", - "ipfs-unixfs": "^0.1.14", + "ipfs-unixfs": "~0.1.14", "mime-types": "^2.1.18", - "multihashes": "^0.4.13", + "multihashes": "~0.4.13", "promisify-es6": "^1.0.3", "stream-to-blob": "^1.0.1" }, @@ -6704,6 +7007,18 @@ "ms": "^2.1.1" } }, + "file-type": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", + "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -6713,18 +7028,18 @@ } }, "ipfs-mfs": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/ipfs-mfs/-/ipfs-mfs-0.3.3.tgz", - "integrity": "sha512-gi9kIlTqDjNzSN3hvz4/Npheg1xfPMrSZl8NAie+QgvQjr7bpHgBAvv/N7GSOOgP40d0HbJqN61AqrSj2BVHWg==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/ipfs-mfs/-/ipfs-mfs-0.4.2.tgz", + "integrity": "sha512-6xcexwgnyXXbi3PeXfmCtKa8nMijm8lvRPvfm27/Jwv/gLU1sJkpI6KF0m/EBeM7mwl1pQYu4E03qVoz8hDxtA==", "dev": true, "requires": { "async": "^2.6.1", "blob": "~0.0.4", - "cids": "~0.5.3", - "debug": "^3.1.0", + "cids": "~0.5.4", + "debug": "^4.0.1", "file-api": "~0.10.4", "filereader-stream": "^2.0.0", - "interface-datastore": "~0.4.2", + "interface-datastore": "~0.6.0", "ipfs-unixfs": "~0.1.15", "ipfs-unixfs-engine": "~0.32.1", "is-pull-stream": "~0.0.0", @@ -6738,31 +7053,68 @@ "pull-defer": "~0.2.2", "pull-paramap": "^1.2.2", "pull-pushable": "^2.2.0", - "pull-stream": "^3.6.8", + "pull-stream": "^3.6.9", "pull-stream-to-stream": "^1.3.4", "pull-traverse": "^1.0.3", "stream-to-pull-stream": "^1.7.2" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "interface-datastore": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-0.4.2.tgz", - "integrity": "sha512-Vztsb1SXZANtwwGkpDoxOTMELhhuCklkQKbjma6PY4XLwIyrhQ1xEKaG1sOHavMXoghThw8IZEysiCDrofOQKQ==", + "ipfs-unixfs-engine": { + "version": "0.32.8", + "resolved": "https://registry.npmjs.org/ipfs-unixfs-engine/-/ipfs-unixfs-engine-0.32.8.tgz", + "integrity": "sha512-YqLppNmG5M0rFj7QOTdRjny8xNKxmqKJE5DCOtc2ZMaXd4Semq+rEH23N2Mr1jYpimboDnadcv6jszi5cWRexw==", "dev": true, "requires": { - "async": "^2.6.0", - "pull-defer": "^0.2.2", - "pull-stream": "^3.6.1", - "uuid": "^3.1.0" + "async": "^2.6.1", + "cids": "~0.5.5", + "deep-extend": "~0.6.0", + "ipfs-unixfs": "~0.1.15", + "ipld-dag-pb": "~0.14.6", + "left-pad": "^1.3.0", + "multihashing-async": "~0.5.1", + "pull-batch": "^1.0.0", + "pull-block": "^1.4.0", + "pull-cat": "^1.1.11", + "pull-pair": "^1.1.0", + "pull-paramap": "^1.2.2", + "pull-pause": "0.0.2", + "pull-pushable": "^2.2.0", + "pull-stream": "^3.6.9", + "pull-through": "^1.0.18", + "pull-traverse": "^1.0.3", + "pull-write": "^1.1.4", + "rabin": "^1.6.0", + "sparse-array": "^1.3.1", + "stream-to-pull-stream": "^1.7.2" + }, + "dependencies": { + "ipld-dag-pb": { + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.14.11.tgz", + "integrity": "sha512-ja4FH6elDprVuJBkNObFlq7+9h1Q3aoQx5SSG/v3I9e7j19nwyuMhLJYwBhdv29LiqpyD2cEqNrJLm8lWn0lJg==", + "dev": true, + "requires": { + "async": "^2.6.1", + "bs58": "^4.0.1", + "cids": "~0.5.4", + "class-is": "^1.1.0", + "is-ipfs": "~0.4.2", + "multihashing-async": "~0.5.1", + "protons": "^1.0.1", + "pull-stream": "^3.6.9", + "pull-traverse": "^1.0.3", + "stable": "~0.1.8" + } + } } }, "ms": { @@ -6784,20 +7136,20 @@ } }, "ipfs-repo": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/ipfs-repo/-/ipfs-repo-0.23.1.tgz", - "integrity": "sha512-QjcAGkZXQyV5CsxKFdMHVKZuUWCy7wMroYBuy2G2N2Yu/lnwAg9Zuxsqv/3ULF+005bC1gWsld7UmYtbpHLKrQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/ipfs-repo/-/ipfs-repo-0.24.0.tgz", + "integrity": "sha512-dbLuqHVK+RIsDHmbk7oxySMJNRz/PIROgIe5vjQKRqZyuNdh9gFTUsUEvEDsfMUgPhnS9cnf53YAR2B+EuMUrA==", "dev": true, "requires": { "async": "^2.6.0", "base32.js": "~0.1.0", "big.js": "^5.0.3", "cids": "~0.5.3", - "datastore-core": "~0.4.0", - "datastore-fs": "~0.5.0", - "datastore-level": "~0.8.0", + "datastore-core": "~0.5.0", + "datastore-fs": "~0.6.0", + "datastore-level": "~0.9.0", "debug": "^3.1.0", - "interface-datastore": "~0.4.2", + "interface-datastore": "~0.5.0", "ipfs-block": "~0.7.1", "lock-me": "^1.0.4", "lodash.get": "^4.4.2", @@ -6808,38 +7160,48 @@ "sort-keys": "^2.0.0" }, "dependencies": { - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, "datastore-core": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-0.4.0.tgz", - "integrity": "sha512-BQC3f2jSUgVL1DUjt/ZJr9yWzNYyx3ApNh4NhMYFZBap0c+iTKJqyHRlO4bRT+CZG0mqqOUTNXU3qYvTJlN6OA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-0.5.0.tgz", + "integrity": "sha512-H15EZOXLZXJRXTKQ2EQ6lms93fYXsFUgTWYjtJfsGyhs8MAEfjzoFM1HpP4l1/TiWSz2weslyl57M/q2U65sgw==", "dev": true, "requires": { - "async": "^2.5.0", - "interface-datastore": "~0.4.0", - "left-pad": "^1.1.3", + "async": "^2.6.1", + "interface-datastore": "~0.5.0", + "left-pad": "^1.3.0", "pull-many": "^1.0.8", - "pull-stream": "^3.6.1" + "pull-stream": "^3.6.9" + } + }, + "datastore-fs": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/datastore-fs/-/datastore-fs-0.6.0.tgz", + "integrity": "sha512-/e2R+jxyR1ACzy3nzW02A0spUrBC525eeq0lVC0VDqdIO2qva1wCN5XDWwpmL7vxngSFGhzpKh42q58fT2YIOw==", + "dev": true, + "requires": { + "async": "^2.6.1", + "datastore-core": "~0.5.0", + "glob": "^7.1.3", + "graceful-fs": "^4.1.11", + "interface-datastore": "~0.5.0", + "mkdirp": "~0.5.1", + "pull-stream": "^3.6.9", + "write-file-atomic": "^2.3.0" } }, "datastore-level": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/datastore-level/-/datastore-level-0.8.0.tgz", - "integrity": "sha512-RSklSUhf4CBNXm8akR+Q7LvDE4J6NA8XfZ3h5pGPempdXcExFui5CoyHJscOlu0culvZzuJLU4k5PxcLPGzuMw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/datastore-level/-/datastore-level-0.9.0.tgz", + "integrity": "sha512-BL2KE1P5xgYWFRsOdwPEpTwW6Ebpxnp3Ir6aAC5Era+zMS3Vtf14vn2q8cUMvc4GCo68iqL3pknT4Ds9/xFKMw==", "dev": true, "requires": { - "datastore-core": "~0.4.0", - "encoding-down": "^5.0.2", - "interface-datastore": "~0.4.1", + "datastore-core": "~0.5.0", + "encoding-down": "^5.0.4", + "interface-datastore": "~0.5.0", "level-js": "github:timkuijsten/level.js#18e03adab34c49523be7d3d58fafb0c632f61303", "leveldown": "^3.0.2", "levelup": "^2.0.2", - "pull-stream": "^3.6.1" + "pull-stream": "^3.6.9" } }, "debug": { @@ -6852,15 +7214,26 @@ } }, "interface-datastore": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-0.4.2.tgz", - "integrity": "sha512-Vztsb1SXZANtwwGkpDoxOTMELhhuCklkQKbjma6PY4XLwIyrhQ1xEKaG1sOHavMXoghThw8IZEysiCDrofOQKQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-0.5.0.tgz", + "integrity": "sha512-JBQG5zCsh71DdDD01PzRrhlFBI0FCj6zAlJVBcnsZlfK74BK7Yx8f3SPxk240/JplrA919mjfrpe1W7BaovtRg==", "dev": true, "requires": { - "async": "^2.6.0", - "pull-defer": "^0.2.2", - "pull-stream": "^3.6.1", - "uuid": "^3.1.0" + "async": "^2.6.1", + "err-code": "^1.1.2", + "pull-defer": "~0.2.3", + "pull-stream": "^3.6.9", + "uuid": "^3.3.2" + } + }, + "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==", + "dev": true, + "requires": { + "cids": "^0.5.3", + "class-is": "^1.1.0" } }, "ms": { @@ -6897,16 +7270,16 @@ } }, "ipfs-unixfs-engine": { - "version": "0.32.8", - "resolved": "https://registry.npmjs.org/ipfs-unixfs-engine/-/ipfs-unixfs-engine-0.32.8.tgz", - "integrity": "sha512-YqLppNmG5M0rFj7QOTdRjny8xNKxmqKJE5DCOtc2ZMaXd4Semq+rEH23N2Mr1jYpimboDnadcv6jszi5cWRexw==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/ipfs-unixfs-engine/-/ipfs-unixfs-engine-0.33.0.tgz", + "integrity": "sha512-NF4e9PB4I22Ca1qaGeCG0pBQOaYTpBWwgC+EKlAomwj6FD6BeFD4OpoaEAs9kp8dOdjY8yKrHe+tRg9AGgOoIw==", "dev": true, "requires": { "async": "^2.6.1", "cids": "~0.5.5", "deep-extend": "~0.6.0", - "ipfs-unixfs": "~0.1.15", - "ipld-dag-pb": "~0.14.6", + "ipfs-unixfs": "~0.1.16", + "ipld-dag-pb": "~0.14.11", "left-pad": "^1.3.0", "multihashing-async": "~0.5.1", "pull-batch": "^1.0.0", @@ -6923,25 +7296,45 @@ "rabin": "^1.6.0", "sparse-array": "^1.3.1", "stream-to-pull-stream": "^1.7.2" + }, + "dependencies": { + "ipld-dag-pb": { + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.14.11.tgz", + "integrity": "sha512-ja4FH6elDprVuJBkNObFlq7+9h1Q3aoQx5SSG/v3I9e7j19nwyuMhLJYwBhdv29LiqpyD2cEqNrJLm8lWn0lJg==", + "dev": true, + "requires": { + "async": "^2.6.1", + "bs58": "^4.0.1", + "cids": "~0.5.4", + "class-is": "^1.1.0", + "is-ipfs": "~0.4.2", + "multihashing-async": "~0.5.1", + "protons": "^1.0.1", + "pull-stream": "^3.6.9", + "pull-traverse": "^1.0.3", + "stable": "~0.1.8" + } + } } }, "ipfsd-ctl": { - "version": "0.39.5", - "resolved": "https://registry.npmjs.org/ipfsd-ctl/-/ipfsd-ctl-0.39.5.tgz", - "integrity": "sha512-QFkhlensPol2VPWkURAB5neMsvZ3VVV6nYXa1muaSqrjeu+Hf1h8vpHoF19EuEvKm68BVFtshPtREeIb5wRfaw==", + "version": "0.40.2", + "resolved": "https://registry.npmjs.org/ipfsd-ctl/-/ipfsd-ctl-0.40.2.tgz", + "integrity": "sha512-HCU8DT59u/AWYd7IhDMM8WlN7VXlVbGxwypCnbPAW54H4xPM4w8mFyWPYLvj2YLEoYxR6pFyt7i+1iXrCnpuaA==", "dev": true, "requires": { "async": "^2.6.1", - "base-x": "^3.0.4", - "boom": "^7.2.0", + "base-x": "^3.0.5", + "boom": "^7.2.2", "debug": "^4.1.0", "detect-node": "^2.0.4", "dexie": "^2.0.4", "execa": "^1.0.0", "hapi": "^16.6.2", "hat": "~0.0.3", - "ipfs-api": "^25.0.0", - "joi": "^13.1.2", + "ipfs-http-client": "^27.0.0", + "joi": "^14.0.4", "libp2p-crypto": "~0.14.0", "lodash.clone": "^4.5.0", "lodash.defaults": "^4.2.0", @@ -6951,186 +7344,43 @@ "protons": "^1.0.1", "rimraf": "^2.6.2", "safe-json-parse": "^4.0.0", - "safe-json-stringify": "^1.1.0", - "superagent": "^3.8.2" + "safe-json-stringify": "^1.2.0", + "superagent": "^4.0.0-beta.5" }, "dependencies": { - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "bl": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.1.2.tgz", - "integrity": "sha512-DvC0x+PxmSJNx8wXoFV15pC2+GOJ3ohb4F1REq3X32a2Z3nEBpR1Guu740M7ouYAImFj4BXDNilLNZbygtG9lQ==", - "dev": true, - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } + "hoek": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.2.tgz", + "integrity": "sha512-6qhh/wahGYZHFSFw12tBbJw5fsAhhwrrG/y3Cs0YMTv2WzMnL0oLPnQJjv1QJvEfylRSOFuP+xCu+tdx0tD16Q==", + "dev": true }, - "ipfs-api": { - "version": "25.0.0", - "resolved": "https://registry.npmjs.org/ipfs-api/-/ipfs-api-25.0.0.tgz", - "integrity": "sha512-s+UYe+ZOkxSxU/J0O731HhuzXlmrpGoe1apj97p0yM8oLo0w1EzgWYe+0gV6A0+15cLsgREBD130gJFDGDw6dg==", + "isemail": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", + "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", "dev": true, "requires": { - "async": "^2.6.1", - "big.js": "^5.1.2", - "bl": "^2.0.1", - "bs58": "^4.0.1", - "cids": "~0.5.3", - "concat-stream": "^1.6.2", - "debug": "^3.1.0", - "detect-node": "^2.0.3", - "flatmap": "0.0.3", - "glob": "^7.1.2", - "ipfs-block": "~0.7.1", - "ipfs-unixfs": "~0.1.15", - "ipld-dag-cbor": "~0.12.1", - "ipld-dag-pb": "~0.14.6", - "is-ipfs": "~0.4.2", - "is-pull-stream": "0.0.0", - "is-stream": "^1.1.0", - "libp2p-crypto": "~0.13.0", - "lodash": "^4.17.11", - "lru-cache": "^4.1.3", - "multiaddr": "^5.0.0", - "multibase": "~0.4.0", - "multihashes": "~0.4.13", - "ndjson": "^1.5.0", - "once": "^1.4.0", - "peer-id": "~0.11.0", - "peer-info": "~0.14.1", - "promisify-es6": "^1.0.3", - "pull-defer": "~0.2.2", - "pull-pushable": "^2.2.0", - "pull-stream-to-stream": "^1.3.4", - "pump": "^3.0.0", - "qs": "^6.5.2", - "readable-stream": "^2.3.6", - "stream-http": "^3.0.0", - "stream-to-pull-stream": "^1.7.2", - "streamifier": "~0.1.1", - "tar-stream": "^1.6.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "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==", - "dev": true, - "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" - } - } + "punycode": "2.x.x" } }, - "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==", + "joi": { + "version": "14.3.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", + "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", "dev": true, "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" - }, - "dependencies": { - "multihashing-async": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.5.1.tgz", - "integrity": "sha512-Ft5lQNcJCfsns1QN1TDXqPZrrNwBYqIokprYJR2h2Jj01x0GFcYmJYAqHvme6vJoyI3XptEcmZpdr9g5Oy7q3Q==", - "dev": true, - "requires": { - "async": "^2.6.1", - "blakejs": "^1.1.0", - "js-sha3": "^0.7.0", - "multihashes": "~0.4.13", - "murmurhash3js": "^3.0.1", - "nodeify": "^1.0.1" - } - } + "hoek": "6.x.x", + "isemail": "3.x.x", + "topo": "3.x.x" } }, "ms": { @@ -7139,211 +7389,107 @@ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, - "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==", - "dev": true, - "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", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "stream-http": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.0.0.tgz", - "integrity": "sha512-JELJfd+btL9GHtxU3+XXhg9NLYrKFnhybfvRuDghtyVkOFydz3PKNT1df07AMr88qW03WHF+FSV0PySpXignCA==", + "topo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", + "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^3.0.6", - "xtend": "^4.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.0.tgz", - "integrity": "sha512-vpydAvIJvPODZNagCPuHG87O9JNPtvFEtjHHRVwNVsVVRBqemvPJkc2SYbxJsiZXawJdtZNmkmnsPuE3IgsG0A==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "requires": { + "hoek": "6.x.x" } - }, - "tweetnacl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", - "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins=", - "dev": true } } }, "ipld": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/ipld/-/ipld-0.17.4.tgz", - "integrity": "sha512-V+qGqt3CWYb72GzjSUQiPnzv7wLKDazB3zEBuiJmbVAta8RaoCuqb8cbmYN1riIW0pERRHqinrkNPdP9pZgkNA==", + "version": "0.19.3", + "resolved": "https://registry.npmjs.org/ipld/-/ipld-0.19.3.tgz", + "integrity": "sha512-MK7hKGT2bUFs82XjVgM+12RhrAALVAdS/2bXJX4zJR0hPSXe/jXIqv83DijLk98zEjMujoPxh/Er+VVXNSr4gw==", "dev": true, "requires": { "async": "^2.6.1", - "cids": "~0.5.4", - "interface-datastore": "~0.5.0", - "ipfs-block": "~0.7.1", - "ipfs-block-service": "~0.14.0", - "ipfs-repo": "~0.24.0", - "ipld-bitcoin": "~0.1.7", - "ipld-dag-cbor": "~0.12.1", - "ipld-dag-pb": "~0.14.10", - "ipld-ethereum": "^2.0.1", - "ipld-git": "~0.2.1", + "cids": "~0.5.5", + "interface-datastore": "~0.6.0", + "ipfs-block": "~0.8.0", + "ipfs-block-service": "~0.15.0", + "ipfs-repo": "~0.25.0", + "ipld-dag-cbor": "~0.13.0", + "ipld-dag-pb": "~0.14.11", "ipld-raw": "^2.0.1", - "ipld-zcash": "~0.1.6", - "is-ipfs": "~0.4.2", - "lodash.flatten": "^4.4.0", - "lodash.includes": "^4.3.0", - "memdown": "^3.0.0", - "multihashes": "~0.4.14", + "merge-options": "^1.0.1", "pull-defer": "~0.2.3", - "pull-sort": "^1.0.1", "pull-stream": "^3.6.9", "pull-traverse": "^1.0.3" }, "dependencies": { - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "datastore-core": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-0.5.0.tgz", - "integrity": "sha512-H15EZOXLZXJRXTKQ2EQ6lms93fYXsFUgTWYjtJfsGyhs8MAEfjzoFM1HpP4l1/TiWSz2weslyl57M/q2U65sgw==", - "dev": true, - "requires": { - "async": "^2.6.1", - "interface-datastore": "~0.5.0", - "left-pad": "^1.3.0", - "pull-many": "^1.0.8", - "pull-stream": "^3.6.9" - } - }, - "datastore-fs": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/datastore-fs/-/datastore-fs-0.6.0.tgz", - "integrity": "sha512-/e2R+jxyR1ACzy3nzW02A0spUrBC525eeq0lVC0VDqdIO2qva1wCN5XDWwpmL7vxngSFGhzpKh42q58fT2YIOw==", - "dev": true, - "requires": { - "async": "^2.6.1", - "datastore-core": "~0.5.0", - "glob": "^7.1.3", - "graceful-fs": "^4.1.11", - "interface-datastore": "~0.5.0", - "mkdirp": "~0.5.1", - "pull-stream": "^3.6.9", - "write-file-atomic": "^2.3.0" - } - }, - "datastore-level": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/datastore-level/-/datastore-level-0.9.0.tgz", - "integrity": "sha512-BL2KE1P5xgYWFRsOdwPEpTwW6Ebpxnp3Ir6aAC5Era+zMS3Vtf14vn2q8cUMvc4GCo68iqL3pknT4Ds9/xFKMw==", - "dev": true, - "requires": { - "datastore-core": "~0.5.0", - "encoding-down": "^5.0.4", - "interface-datastore": "~0.5.0", - "level-js": "github:timkuijsten/level.js#18e03adab34c49523be7d3d58fafb0c632f61303", - "leveldown": "^3.0.2", - "levelup": "^2.0.2", - "pull-stream": "^3.6.9" - } - }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "interface-datastore": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-0.5.0.tgz", - "integrity": "sha512-JBQG5zCsh71DdDD01PzRrhlFBI0FCj6zAlJVBcnsZlfK74BK7Yx8f3SPxk240/JplrA919mjfrpe1W7BaovtRg==", - "dev": true, - "requires": { - "async": "^2.6.1", - "err-code": "^1.1.2", - "pull-defer": "~0.2.3", - "pull-stream": "^3.6.9", - "uuid": "^3.3.2" - } - }, "ipfs-repo": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/ipfs-repo/-/ipfs-repo-0.24.0.tgz", - "integrity": "sha512-dbLuqHVK+RIsDHmbk7oxySMJNRz/PIROgIe5vjQKRqZyuNdh9gFTUsUEvEDsfMUgPhnS9cnf53YAR2B+EuMUrA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/ipfs-repo/-/ipfs-repo-0.25.2.tgz", + "integrity": "sha512-TuhUdturwwG/hKdK2m1fv6Hz1hvHsdXQqAsDr0uEXK8WOfz7CZ9IHLU3feDTDhh8nr4fB0nOO5xaTz3cCZ+/9Q==", "dev": true, "requires": { - "async": "^2.6.0", + "async": "^2.6.1", "base32.js": "~0.1.0", - "big.js": "^5.0.3", - "cids": "~0.5.3", - "datastore-core": "~0.5.0", - "datastore-fs": "~0.6.0", - "datastore-level": "~0.9.0", - "debug": "^3.1.0", - "interface-datastore": "~0.5.0", + "big.js": "^5.2.2", + "cids": "~0.5.5", + "datastore-core": "~0.6.0", + "datastore-fs": "~0.7.0", + "datastore-level": "~0.10.0", + "debug": "^4.1.0", + "interface-datastore": "~0.6.0", "ipfs-block": "~0.7.1", - "lock-me": "^1.0.4", "lodash.get": "^4.4.2", "lodash.has": "^4.5.2", "lodash.set": "^4.3.2", - "multiaddr": "^4.0.0", - "pull-stream": "^3.6.7", + "multiaddr": "^5.0.0", + "proper-lockfile": "^3.2.0", + "pull-stream": "^3.6.9", "sort-keys": "^2.0.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "cids": "^0.5.3", + "class-is": "^1.1.0" + } + } } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "multiaddr": { - "version": "4.0.0", - "resolved": "http://registry.npmjs.org/multiaddr/-/multiaddr-4.0.0.tgz", - "integrity": "sha512-zUatrOCfBd/tJNOSoJ10d2EI2FDXB9PyPZhqUMdXE9mOyR3C+HLuOjga2Ga/eChwvEHIpTYRMoIKF2Nv7af2qQ==", + "ipld-dag-pb": { + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.14.11.tgz", + "integrity": "sha512-ja4FH6elDprVuJBkNObFlq7+9h1Q3aoQx5SSG/v3I9e7j19nwyuMhLJYwBhdv29LiqpyD2cEqNrJLm8lWn0lJg==", "dev": true, "requires": { + "async": "^2.6.1", "bs58": "^4.0.1", + "cids": "~0.5.4", "class-is": "^1.1.0", - "ip": "^1.1.5", - "ip-address": "^5.8.9", - "lodash.filter": "^4.6.0", - "lodash.map": "^4.6.0", - "varint": "^5.0.0", - "xtend": "^4.0.1" + "is-ipfs": "~0.4.2", + "multihashing-async": "~0.5.1", + "protons": "^1.0.1", + "pull-stream": "^3.6.9", + "pull-traverse": "^1.0.3", + "stable": "~0.1.8" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, @@ -7361,17 +7507,17 @@ } }, "ipld-dag-cbor": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/ipld-dag-cbor/-/ipld-dag-cbor-0.12.1.tgz", - "integrity": "sha512-m0BR/zR9sKIuY/PydppkpwO0S9w7+ob0as7RN3jQmMIpW9m8HW7hLznvtp1xpYZknH7efUhIaMHgaQP43E5IWQ==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/ipld-dag-cbor/-/ipld-dag-cbor-0.13.0.tgz", + "integrity": "sha512-74gtitUOWbLkGtqomhq7lDYwWzfFNwbwMXAj3jpti4ZtfM9VTJWVIQ+05u7NOCj8yaLwzFONHdcO0rJ+j/i0jA==", "dev": true, "requires": { - "async": "^2.6.0", - "borc": "^2.0.2", + "async": "^2.6.1", + "borc": "^2.0.3", "bs58": "^4.0.1", - "cids": "~0.5.2", - "is-circular": "^1.0.1", - "multihashes": "~0.4.12", + "cids": "~0.5.5", + "is-circular": "^1.0.2", + "multihashes": "~0.4.14", "multihashing-async": "~0.5.1", "traverse": "~0.6.6" }, @@ -7385,10 +7531,9 @@ } }, "ipld-dag-pb": { - "version": "0.14.11", - "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.14.11.tgz", - "integrity": "sha512-ja4FH6elDprVuJBkNObFlq7+9h1Q3aoQx5SSG/v3I9e7j19nwyuMhLJYwBhdv29LiqpyD2cEqNrJLm8lWn0lJg==", - "dev": true, + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.15.2.tgz", + "integrity": "sha512-9mzeYW4FneGROH+/PXMbXsfy3cUsMYHaI6vUu8nNpSTyQdGF+fa1ViA+jvqWzM8zXYwG4OOSCAAADssJeELAvw==", "requires": { "async": "^2.6.1", "bs58": "^4.0.1", @@ -7418,18 +7563,6 @@ "multihashes": "~0.4.12", "multihashing-async": "~0.5.1", "rlp": "^2.0.0" - }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "cids": "~0.5.5", - "class-is": "^1.1.0" - } - } } }, "ipld-git": { @@ -7478,6 +7611,94 @@ "zcash-bitcore-lib": "~0.13.20-rc3" } }, + "ipns": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ipns/-/ipns-0.3.0.tgz", + "integrity": "sha512-3X8xS4AVgRbsqaTfpJ4OzqAJ2DOYXl9lh7AV/gq7qyF14A+YXk1zmCKc6xXS2GJSVkvsnoRsVGPRrQnDQoNksw==", + "dev": true, + "requires": { + "base32-encode": "^1.1.0", + "big.js": "^5.1.2", + "debug": "^3.1.0", + "interface-datastore": "~0.6.0", + "left-pad": "^1.3.0", + "libp2p-crypto": "~0.13.0", + "multihashes": "~0.4.14", + "nano-date": "^2.1.0", + "peer-id": "~0.11.0", + "protons": "^1.0.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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==", + "dev": true, + "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" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "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==", + "dev": true, + "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" + } + }, + "peer-id": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.11.0.tgz", + "integrity": "sha512-C/lRJk4CWIgOdKvfO572NvHbPcUwe49I6G0toIhDB5tCohqv/qzy0uBcAK9Ww8TvYI6U4J3C8ACShV9fWjNU4w==", + "dev": true, + "requires": { + "async": "^2.6.1", + "libp2p-crypto": "~0.13.0", + "lodash": "^4.17.10", + "multihashes": "~0.4.13" + } + }, + "tweetnacl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", + "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins=", + "dev": true + } + } + }, "iron": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/iron/-/iron-4.0.5.tgz", @@ -7684,7 +7905,6 @@ "version": "0.4.8", "resolved": "https://registry.npmjs.org/is-ipfs/-/is-ipfs-0.4.8.tgz", "integrity": "sha512-xIKUeA24IFMfkmeAPEOZL448X7a08c/KzAGQp1e/QxC9bx/NNEdT/ohob3SW6eJO2UwJNjsbfMeNZ2B+Dk2Fdg==", - "dev": true, "requires": { "bs58": "4.0.1", "cids": "~0.5.6", @@ -7696,7 +7916,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.4.tgz", "integrity": "sha512-UYOadoSIkEI/VrRGSG6qp93rp2WdokiAiNYDfGW5qURAY8GiAQkvMbwNNSDYiVJopqv4gCna7xqf4rrNGp+5AA==", - "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -7705,7 +7924,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.0.tgz", "integrity": "sha512-R9bNLQhbD7MsitPm1NeY7w9sDgu6d7cuj25snAWH7k5PSNPSwIQQBpcpj8jx1W96dLbdigZqmUWOdQRMnAmgjA==", - "dev": true, "requires": { "base-x": "3.0.4" } @@ -7777,8 +7995,7 @@ "is-promise": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=", - "dev": true + "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=" }, "is-pull-stream": { "version": "0.0.0", @@ -8028,8 +8245,7 @@ "js-sha3": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.7.0.tgz", - "integrity": "sha512-Wpks3yBDm0UcL5qlVhwW9Jr9n9i4FfeWBFOOXP5puDS/SiudJGhw7DPyBqn3487qD4F0lsC0q3zxink37f7zeA==", - "dev": true + "integrity": "sha512-Wpks3yBDm0UcL5qlVhwW9Jr9n9i4FfeWBFOOXP5puDS/SiudJGhw7DPyBqn3487qD4F0lsC0q3zxink37f7zeA==" }, "js-tokens": { "version": "4.0.0", @@ -8366,7 +8582,7 @@ }, "levelup": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-2.0.2.tgz", + "resolved": "http://registry.npmjs.org/levelup/-/levelup-2.0.2.tgz", "integrity": "sha512-us+nTLUyd/eLnclYYddOCdAVw1hnymGx/9p4Jr5ThohStsjLqMVmbYiz6/SYFZEPXNF+AKQSvh6fA2e2KZpC8w==", "dev": true, "requires": { @@ -8422,6 +8638,61 @@ "peer-book": "~0.8.0", "peer-id": "~0.11.0", "peer-info": "~0.14.1" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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" + } + }, + "peer-id": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.11.0.tgz", + "integrity": "sha512-C/lRJk4CWIgOdKvfO572NvHbPcUwe49I6G0toIhDB5tCohqv/qzy0uBcAK9Ww8TvYI6U4J3C8ACShV9fWjNU4w==", + "dev": true, + "requires": { + "async": "^2.6.1", + "libp2p-crypto": "~0.13.0", + "lodash": "^4.17.10", + "multihashes": "~0.4.13" + } + }, + "tweetnacl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", + "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins=", + "dev": true + } } }, "libp2p-bootstrap": { @@ -8439,9 +8710,9 @@ }, "dependencies": { "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -8452,19 +8723,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true - }, - "peer-id": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.12.0.tgz", - "integrity": "sha512-pPKk4IDBWGGzcjXe6zzngIwKmyadYNsIOUH1PKb7GYTVVTKHpHn78ljZNZdAXAWZ2V1TmlU2OS6d9MfW2E5DNA==", - "dev": true, - "requires": { - "async": "^2.6.1", - "class-is": "^1.1.0", - "libp2p-crypto": "~0.13.0", - "lodash": "^4.17.10", - "multihashes": "~0.4.13" - } } } }, @@ -8498,11 +8756,64 @@ "ms": "^2.1.1" } }, + "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==", + "dev": true, + "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" + } + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true + }, + "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==", + "dev": true, + "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" + } + }, + "peer-id": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.11.0.tgz", + "integrity": "sha512-C/lRJk4CWIgOdKvfO572NvHbPcUwe49I6G0toIhDB5tCohqv/qzy0uBcAK9Ww8TvYI6U4J3C8ACShV9fWjNU4w==", + "dev": true, + "requires": { + "async": "^2.6.1", + "libp2p-crypto": "~0.13.0", + "lodash": "^4.17.10", + "multihashes": "~0.4.13" + } + }, + "tweetnacl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", + "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins=", + "dev": true } } }, @@ -8534,40 +8845,27 @@ } }, "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==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.14.1.tgz", + "integrity": "sha512-JP3bfEzNik76fFIWOeU909+v76tjj5BMukbPCc61bgh1ixftcHkr4bH79duz+oSxRpGA+orCLxvkhgALV+pfwg==", "dev": true, "requires": { - "asn1.js": "^5.0.0", - "async": "^2.6.0", + "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.4.8", - "node-forge": "^0.7.5", + "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" }, "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==", - "dev": true, - "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", @@ -8623,47 +8921,19 @@ }, "dependencies": { "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.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==", - "dev": true, - "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" - } - }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true - }, - "tweetnacl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", - "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins=", - "dev": true } } }, @@ -8679,21 +8949,6 @@ "protons": "^1.0.1", "pull-length-prefixed": "^1.3.0", "pull-stream": "^3.6.9" - }, - "dependencies": { - "peer-id": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.12.0.tgz", - "integrity": "sha512-pPKk4IDBWGGzcjXe6zzngIwKmyadYNsIOUH1PKb7GYTVVTKHpHn78ljZNZdAXAWZ2V1TmlU2OS6d9MfW2E5DNA==", - "dev": true, - "requires": { - "async": "^2.6.1", - "class-is": "^1.1.0", - "libp2p-crypto": "~0.13.0", - "lodash": "^4.17.10", - "multihashes": "~0.4.13" - } - } } }, "libp2p-kad-dht": { @@ -8733,11 +8988,66 @@ "ms": "^2.1.1" } }, + "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==", + "dev": true, + "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" + }, + "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==", + "dev": true, + "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" + } + } + } + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true + }, + "peer-id": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.11.0.tgz", + "integrity": "sha512-C/lRJk4CWIgOdKvfO572NvHbPcUwe49I6G0toIhDB5tCohqv/qzy0uBcAK9Ww8TvYI6U4J3C8ACShV9fWjNU4w==", + "dev": true, + "requires": { + "async": "^2.6.1", + "libp2p-crypto": "~0.13.0", + "lodash": "^4.17.10", + "multihashes": "~0.4.13" + } + }, + "tweetnacl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", + "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins=", + "dev": true } } }, @@ -8753,6 +9063,49 @@ "lodash": "^4.6.1", "pull-stream": "^3.6.8", "sanitize-filename": "^1.6.1" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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=", + "dev": true + } } }, "libp2p-mdns": { @@ -8766,54 +9119,6 @@ "multicast-dns": "^7.2.0", "peer-id": "~0.12.0", "peer-info": "~0.14.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "libp2p-tcp": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/libp2p-tcp/-/libp2p-tcp-0.13.0.tgz", - "integrity": "sha512-bsmfxi+uVegK61x9UxBEgWtvujPl+zwzuVEyaVRs2IxHu6OE5MGKnj7AflzlK4e3w2HZn8nm4qwMV5m+fhqK1g==", - "dev": true, - "requires": { - "class-is": "^1.1.0", - "debug": "^3.1.0", - "interface-connection": "~0.3.2", - "ip-address": "^5.8.9", - "lodash.includes": "^4.3.0", - "lodash.isfunction": "^3.0.9", - "mafmt": "^6.0.2", - "multiaddr": "^5.0.0", - "once": "^1.4.0", - "stream-to-pull-stream": "^1.7.2" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "peer-id": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.12.0.tgz", - "integrity": "sha512-pPKk4IDBWGGzcjXe6zzngIwKmyadYNsIOUH1PKb7GYTVVTKHpHn78ljZNZdAXAWZ2V1TmlU2OS6d9MfW2E5DNA==", - "dev": true, - "requires": { - "async": "^2.6.1", - "class-is": "^1.1.0", - "libp2p-crypto": "~0.13.0", - "lodash": "^4.17.10", - "multihashes": "~0.4.13" - } - } } }, "libp2p-mplex": { @@ -8838,9 +9143,9 @@ }, "dependencies": { "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -8863,9 +9168,9 @@ } }, "readable-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.0.tgz", - "integrity": "sha512-vpydAvIJvPODZNagCPuHG87O9JNPtvFEtjHHRVwNVsVVRBqemvPJkc2SYbxJsiZXawJdtZNmkmnsPuE3IgsG0A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", + "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -8884,36 +9189,6 @@ "libp2p-crypto": "~0.14.1", "pull-handshake": "^1.1.4", "pull-stream": "^3.6.9" - }, - "dependencies": { - "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==", - "dev": true, - "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=", - "dev": true - } } }, "libp2p-record": { @@ -8968,97 +9243,19 @@ }, "dependencies": { "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.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==", - "dev": true, - "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" - } - }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true - }, - "peer-id": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.12.0.tgz", - "integrity": "sha512-pPKk4IDBWGGzcjXe6zzngIwKmyadYNsIOUH1PKb7GYTVVTKHpHn78ljZNZdAXAWZ2V1TmlU2OS6d9MfW2E5DNA==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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=", - "dev": true } } }, @@ -9086,12 +9283,6 @@ "pull-stream": "^3.6.9" }, "dependencies": { - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", @@ -9101,18 +9292,71 @@ "ms": "^2.1.1" } }, + "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==", + "dev": true, + "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" + } + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true + }, + "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==", + "dev": true, + "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" + } + }, + "peer-id": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.11.0.tgz", + "integrity": "sha512-C/lRJk4CWIgOdKvfO572NvHbPcUwe49I6G0toIhDB5tCohqv/qzy0uBcAK9Ww8TvYI6U4J3C8ACShV9fWjNU4w==", + "dev": true, + "requires": { + "async": "^2.6.1", + "libp2p-crypto": "~0.13.0", + "lodash": "^4.17.10", + "multihashes": "~0.4.13" + } + }, + "tweetnacl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", + "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins=", + "dev": true } } }, "libp2p-tcp": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/libp2p-tcp/-/libp2p-tcp-0.12.1.tgz", - "integrity": "sha512-Vt1gLoOKAPAsgQ9IDwrwL4F5zA3gINsstwKKGgZaN5Boj/EeGghdug6vOL0TP2UKWudCuC2rCQUCPVOKZ5gYow==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/libp2p-tcp/-/libp2p-tcp-0.13.0.tgz", + "integrity": "sha512-bsmfxi+uVegK61x9UxBEgWtvujPl+zwzuVEyaVRs2IxHu6OE5MGKnj7AflzlK4e3w2HZn8nm4qwMV5m+fhqK1g==", "dev": true, "requires": { "class-is": "^1.1.0", @@ -9121,8 +9365,8 @@ "ip-address": "^5.8.9", "lodash.includes": "^4.3.0", "lodash.isfunction": "^3.0.9", - "mafmt": "^6.0.0", - "multiaddr": "^4.0.0", + "mafmt": "^6.0.2", + "multiaddr": "^5.0.0", "once": "^1.4.0", "stream-to-pull-stream": "^1.7.2" }, @@ -9141,22 +9385,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true - }, - "multiaddr": { - "version": "4.0.0", - "resolved": "http://registry.npmjs.org/multiaddr/-/multiaddr-4.0.0.tgz", - "integrity": "sha512-zUatrOCfBd/tJNOSoJ10d2EI2FDXB9PyPZhqUMdXE9mOyR3C+HLuOjga2Ga/eChwvEHIpTYRMoIKF2Nv7af2qQ==", - "dev": true, - "requires": { - "bs58": "^4.0.1", - "class-is": "^1.1.0", - "ip": "^1.1.5", - "ip-address": "^5.8.9", - "lodash.filter": "^4.6.0", - "lodash.map": "^4.6.0", - "varint": "^5.0.0", - "xtend": "^4.0.1" - } } } }, @@ -9189,9 +9417,9 @@ }, "dependencies": { "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -9208,50 +9436,37 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true - }, - "peer-id": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.12.0.tgz", - "integrity": "sha512-pPKk4IDBWGGzcjXe6zzngIwKmyadYNsIOUH1PKb7GYTVVTKHpHn78ljZNZdAXAWZ2V1TmlU2OS6d9MfW2E5DNA==", - "dev": true, - "requires": { - "async": "^2.6.1", - "class-is": "^1.1.0", - "libp2p-crypto": "~0.13.0", - "lodash": "^4.17.10", - "multihashes": "~0.4.13" - } } } }, "libp2p-websocket-star": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/libp2p-websocket-star/-/libp2p-websocket-star-0.8.1.tgz", - "integrity": "sha512-lDzL9fGWXveu6HEc6xuIEi036Bg1IQ+PliJJHxgSS9ozTkUwMT5dfvyugSWsZ7Gh4q7BYzr5cDZCNkR42GcRZw==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/libp2p-websocket-star/-/libp2p-websocket-star-0.9.1.tgz", + "integrity": "sha512-OdQ31meWB5uisi69xNS+ePfrY+ebwNNnm2mgCynZhBvgUvglZscb5HpOQ4Syg4AwyUrZUlCPblW6jmIBPtUFBQ==", "dev": true, "requires": { "async": "^2.6.1", "class-is": "^1.1.0", "data-queue": "0.0.3", - "debug": "^3.1.0", + "debug": "^4.1.0", "interface-connection": "~0.3.2", - "libp2p-crypto": "~0.13.0", - "mafmt": "^6.0.0", + "libp2p-crypto": "~0.14.1", + "mafmt": "^6.0.2", "merge-recursive": "0.0.3", - "multiaddr": "^5.0.0", + "multiaddr": "^5.0.2", "once": "^1.4.0", - "peer-id": "~0.10.7", + "peer-id": "~0.12.0", "peer-info": "~0.14.1", - "pull-stream": "^3.6.8", + "pull-stream": "^3.6.9", "socket.io-client": "^2.1.1", "socket.io-pull-stream": "~0.1.5", - "uuid": "^3.2.1" + "uuid": "^3.3.2" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -9262,61 +9477,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true - }, - "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==", - "dev": true, - "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" - } - }, - "peer-id": { - "version": "0.10.7", - "resolved": "http://registry.npmjs.org/peer-id/-/peer-id-0.10.7.tgz", - "integrity": "sha512-VEpMFcL9q0NQijmR0jsj38OGbY4yzaWMEareVkDahopmlNT+Cpsot8btPgsgBBApP9NiZj2Enwvh8rZN30ocQw==", - "dev": true, - "requires": { - "async": "^2.6.0", - "libp2p-crypto": "~0.12.1", - "lodash": "^4.17.5", - "multihashes": "~0.4.13" - }, - "dependencies": { - "libp2p-crypto": { - "version": "0.12.1", - "resolved": "http://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.12.1.tgz", - "integrity": "sha512-1/z8rxZ0DcQNreZhEsl7PnLr7DWOioSvYbKBLGkRwNRiNh1JJLgh0PdTySBb44wkrOGT+TxcGRd7iq3/X6Wxwg==", - "dev": true, - "requires": { - "asn1.js": "^5.0.0", - "async": "^2.6.0", - "browserify-aes": "^1.1.1", - "bs58": "^4.0.1", - "keypair": "^1.0.1", - "libp2p-crypto-secp256k1": "~0.2.2", - "multihashing-async": "~0.4.7", - "node-forge": "^0.7.1", - "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" - } - } - } - }, - "tweetnacl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", - "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins=", - "dev": true } } }, @@ -9343,6 +9503,14 @@ "parse-json": "^4.0.0", "pify": "^3.0.0", "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "loader-runner": { @@ -9352,20 +9520,29 @@ "dev": true }, "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "dev": true, "requires": { - "big.js": "^3.1.3", + "big.js": "^5.2.2", "emojis-list": "^2.0.0", - "json5": "^0.5.0" + "json5": "^1.0.1" }, "dependencies": { "json5": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } } @@ -9396,8 +9573,7 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, "lodash.clone": { "version": "4.5.0", @@ -9435,12 +9611,6 @@ "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=", "dev": true }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", @@ -9641,6 +9811,14 @@ "dev": true, "requires": { "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "map-age-cleaner": { @@ -9658,6 +9836,12 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, + "map-or-similar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha1-beJlMXSt+12e3DPGnT6Sobdvrwg=", + "dev": true + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -9690,17 +9874,37 @@ } }, "memdown": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/memdown/-/memdown-3.0.0.tgz", - "integrity": "sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha1-tOThkhdGZP+65BNhqlAPMRnv4hU=", "dev": true, "requires": { - "abstract-leveldown": "~5.0.0", - "functional-red-black-tree": "~1.0.1", - "immediate": "~3.2.3", + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", "inherits": "~2.0.1", "ltgt": "~2.2.0", "safe-buffer": "~5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "memoizerific": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha1-fIekZGREwy11Q4VwkF8tvRsagFo=", + "dev": true, + "requires": { + "map-or-similar": "^1.5.0" } }, "memory-fs": { @@ -9713,6 +9917,15 @@ "readable-stream": "^2.0.1" } }, + "merge-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-1.0.1.tgz", + "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.1" + } + }, "merge-recursive": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/merge-recursive/-/merge-recursive-0.0.3.tgz", @@ -9827,31 +10040,6 @@ "xtend": "~4.0.0" } }, - "memdown": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", - "integrity": "sha1-tOThkhdGZP+65BNhqlAPMRnv4hU=", - "dev": true, - "requires": { - "abstract-leveldown": "~2.7.1", - "functional-red-black-tree": "^1.0.1", - "immediate": "^3.2.3", - "inherits": "~2.0.1", - "ltgt": "~2.2.0", - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "abstract-leveldown": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", - "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", - "dev": true, - "requires": { - "xtend": "~4.0.0" - } - } - } - }, "semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", @@ -10181,9 +10369,9 @@ } }, "multibase": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.4.0.tgz", - "integrity": "sha512-fnYvZJWDn3eSJ7EeWvS8zbOpRwuyPHpDggSnqGXkQMvYED5NdO9nyqnZboGvAT+r/60J8KZ09tW8YJHkS22sFw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.5.0.tgz", + "integrity": "sha512-7epKiK8/UBzraYZvOuZa8FH/00hMfTnzTy1OQol1YBU2csAYA7rwWh+iue9plXRmVFBGvmVKMuo0oq5sD47kvw==", "dev": true, "requires": { "base-x": "3.0.4" @@ -10214,7 +10402,6 @@ "version": "0.2.7", "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.2.7.tgz", "integrity": "sha512-96xc9zs7bsclMW0Po9ERnRFqcsWHY8OZ8JW/I8DeHG58YYJZy3cBGI00Ze7hz9Ix56DNHMTSxEj9cgoZByruMg==", - "dev": true, "requires": { "varint": "^5.0.0" } @@ -10223,7 +10410,6 @@ "version": "0.4.14", "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.14.tgz", "integrity": "sha512-V/g/EIN6nALXfS/xHUAgtfPP3mn3sPIF/i9beuGKf25QXS2QZYCpeVJbDPEannkz32B2fihzCe2D/KMrbcmefg==", - "dev": true, "requires": { "bs58": "^4.0.1", "varint": "^5.0.0" @@ -10233,7 +10419,6 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.5.1.tgz", "integrity": "sha512-Ft5lQNcJCfsns1QN1TDXqPZrrNwBYqIokprYJR2h2Jj01x0GFcYmJYAqHvme6vJoyI3XptEcmZpdr9g5Oy7q3Q==", - "dev": true, "requires": { "async": "^2.6.1", "blakejs": "^1.1.0", @@ -10282,12 +10467,11 @@ "murmurhash3js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/murmurhash3js/-/murmurhash3js-3.0.1.tgz", - "integrity": "sha1-Ppg+W0fCoG9DpxMXTn5DXKBEuZg=", - "dev": true + "integrity": "sha1-Ppg+W0fCoG9DpxMXTn5DXKBEuZg=" }, "mute-stream": { "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "resolved": "http://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, @@ -10297,6 +10481,25 @@ "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", "dev": true }, + "nano-date": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nano-date/-/nano-date-2.1.0.tgz", + "integrity": "sha1-veghPYoPKtGjoW6PRV7uJHX/2/k=", + "dev": true, + "requires": { + "bignumber.js": "^4.0.4", + "core-decorators": "^0.20.0", + "memoizerific": "^1.11.2" + }, + "dependencies": { + "bignumber.js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz", + "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==", + "dev": true + } + } + }, "nanoid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.0.0.tgz", @@ -10385,9 +10588,9 @@ } }, "node-abi": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.5.0.tgz", - "integrity": "sha512-9g2twBGSP6wIR5PW7tXvAWnEWKJDH/VskdXp168xsw9VVxpEGov8K4jsP4/VeoC7b2ZAyzckvMCuQuQlw44lXg==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.5.1.tgz", + "integrity": "sha512-oDbFc7vCFx0RWWCweTer3hFm1u+e60N5FtGnmRV6QqvgATGFH/XRR6vqWIeBVosCYCqt6YdIr2L0exLZuEdVcQ==", "dev": true, "requires": { "semver": "^5.4.1" @@ -10450,6 +10653,19 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } } } }, @@ -10488,7 +10704,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/nodeify/-/nodeify-1.0.1.tgz", "integrity": "sha1-ZKtpp7268DzhB7TwM1yHwLnpGx0=", - "dev": true, "requires": { "is-promise": "~1.0.0", "promise": "~1.3.0" @@ -10736,44 +10951,14 @@ "dev": true }, "os-locale": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", - "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, "requires": { - "execa": "^0.10.0", + "execa": "^1.0.0", "lcid": "^2.0.0", "mem": "^4.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - } } }, "os-tmpdir": { @@ -10989,6 +11174,14 @@ "dev": true, "requires": { "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "pbkdf2": { @@ -11082,15 +11275,59 @@ } }, "peer-id": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.11.0.tgz", - "integrity": "sha512-C/lRJk4CWIgOdKvfO572NvHbPcUwe49I6G0toIhDB5tCohqv/qzy0uBcAK9Ww8TvYI6U4J3C8ACShV9fWjNU4w==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.12.0.tgz", + "integrity": "sha512-pPKk4IDBWGGzcjXe6zzngIwKmyadYNsIOUH1PKb7GYTVVTKHpHn78ljZNZdAXAWZ2V1TmlU2OS6d9MfW2E5DNA==", "dev": true, "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==", + "dev": true, + "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==", + "dev": true, + "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=", + "dev": true + } } }, "peer-info": { @@ -11248,10 +11485,9 @@ } }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" }, "pinkie": { "version": "2.0.4", @@ -11415,9 +11651,9 @@ "dev": true }, "prom-client": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-11.2.0.tgz", - "integrity": "sha512-4gUAq/GR5C8q5eWxOa7tA60AtmkMpbyBd/2btCayvd3h/7HzS0p/kESKRwggJgbFrfdhTCBpOwPAwKiI01Q0VQ==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-11.2.1.tgz", + "integrity": "sha512-7VwtjrkQS50NvDoeYNn2z6wzXB5BMGzUlmMOeLPaITtJsTVXnPywRta7QFiV4pKr0fbRx9oDfUcx1xibabjSAg==", "dev": true, "optional": true, "requires": { @@ -11425,13 +11661,13 @@ } }, "prometheus-gc-stats": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/prometheus-gc-stats/-/prometheus-gc-stats-0.5.1.tgz", - "integrity": "sha1-RxO8Xp9znuCahslkAU37zk/VAAM=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/prometheus-gc-stats/-/prometheus-gc-stats-0.6.1.tgz", + "integrity": "sha512-DUo/cDs+1XcVuqoFU6+DjmWjkjIRIVeswtZAIfslIPrYfli2NK0/g/BPoO/kqOgLvzbKRx4m9+MDeNsNIIJGkg==", "dev": true, "optional": true, "requires": { - "gc-stats": "^1.0.0", + "gc-stats": "^1.2.1", "optional": "^0.1.3" } }, @@ -11439,7 +11675,6 @@ "version": "1.3.0", "resolved": "http://registry.npmjs.org/promise/-/promise-1.3.0.tgz", "integrity": "sha1-5cyaTIJ45GZP/twBx9qEhCsEAXU=", - "dev": true, "requires": { "is-promise": "~1" } @@ -11472,17 +11707,26 @@ "object-assign": "^4.1.1" } }, + "proper-lockfile": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-3.2.0.tgz", + "integrity": "sha512-iMghHHXv2bsxl6NchhEaFck8tvX3F9cknEEh1SUpguUOBjN7PAAW9BLzmbc1g/mCD1gY3EE2EABBHPJfFdHFmA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, "protocol-buffers-schema": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.3.2.tgz", - "integrity": "sha512-Xdayp8sB/mU+sUV4G7ws8xtYMGdQnxbeIfLjyO9TZZRJdztBGhlmbI5x1qcY4TG5hBkIKGnc28i7nXxaugu88w==", - "dev": true + "integrity": "sha512-Xdayp8sB/mU+sUV4G7ws8xtYMGdQnxbeIfLjyO9TZZRJdztBGhlmbI5x1qcY4TG5hBkIKGnc28i7nXxaugu88w==" }, "protons": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/protons/-/protons-1.0.1.tgz", "integrity": "sha512-+0ZKnfVs+4c43tbAQ5j0Mck8wPcLnlxUYzKQoB4iDW4ocdXGnN4P+0dDbgX1FTpoY9+7P2Tn2scJyHHqj+S/lQ==", - "dev": true, "requires": { "protocol-buffers-schema": "^3.3.1", "safe-buffer": "^5.1.1", @@ -11686,8 +11930,7 @@ "pull-stream": { "version": "3.6.9", "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.9.tgz", - "integrity": "sha512-hJn4POeBrkttshdNl0AoSCVjMVSuBwuHocMerUdoZ2+oIUzrWHFTwJMlbHND7OiKLVgvz6TFj8ZUVywUMXccbw==", - "dev": true + "integrity": "sha512-hJn4POeBrkttshdNl0AoSCVjMVSuBwuHocMerUdoZ2+oIUzrWHFTwJMlbHND7OiKLVgvz6TFj8ZUVywUMXccbw==" }, "pull-stream-to-stream": { "version": "1.3.4", @@ -11713,8 +11956,7 @@ "pull-traverse": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pull-traverse/-/pull-traverse-1.0.3.tgz", - "integrity": "sha1-dPtde+f6a9enjpeTPhmbeUWGaTg=", - "dev": true + "integrity": "sha1-dPtde+f6a9enjpeTPhmbeUWGaTg=" }, "pull-utf8-decoder": { "version": "1.0.2", @@ -11982,9 +12224,9 @@ } }, "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -12033,6 +12275,23 @@ "readable-stream": "^2.0.2" } }, + "receptacle": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz", + "integrity": "sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==", + "dev": true, + "requires": { + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", @@ -12269,6 +12528,12 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -12377,8 +12642,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-json-parse": { "version": "4.0.0", @@ -12430,9 +12694,9 @@ } }, "secp256k1": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.5.2.tgz", - "integrity": "sha512-iin3kojdybY6NArd+UFsoTuapOF7bnJNf2UbcWXaY3z+E1sJDipl60vtzB5hbO/uquBu7z0fd4VC4Irp+xoFVQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.6.0.tgz", + "integrity": "sha512-a+oKfu2XWhq6Zzj7TexlYpwdnCEtJUUdLaujUclplPkV+INdMaV9D+81wYldm/g4/2PTFoNYZf/+0rHhTPgzjQ==", "dev": true, "requires": { "bindings": "^1.2.1", @@ -12467,9 +12731,9 @@ } }, "serialize-javascript": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", - "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", + "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", "dev": true }, "set-blocking": { @@ -12581,7 +12845,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/signed-varint/-/signed-varint-2.0.1.tgz", "integrity": "sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk=", - "dev": true, "requires": { "varint": "~5.0.0" } @@ -12617,9 +12880,9 @@ }, "dependencies": { "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -12790,9 +13053,9 @@ }, "dependencies": { "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -13010,9 +13273,9 @@ } }, "spdx-license-ids": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", - "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", + "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", "dev": true }, "split": { @@ -13049,9 +13312,9 @@ "dev": true }, "sshpk": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", - "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz", + "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -13077,8 +13340,7 @@ "stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" }, "standard": { "version": "12.0.1", @@ -13202,16 +13464,28 @@ } }, "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.0.0.tgz", + "integrity": "sha512-JELJfd+btL9GHtxU3+XXhg9NLYrKFnhybfvRuDghtyVkOFydz3PKNT1df07AMr88qW03WHF+FSV0PySpXignCA==", "dev": true, "requires": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", + "readable-stream": "^3.0.6", "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", + "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "stream-shift": { @@ -13338,43 +13612,53 @@ } }, "superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-4.1.0.tgz", + "integrity": "sha512-FT3QLMasz0YyCd4uIi5HNe+3t/onxMyEho7C3PSqmti3Twgy2rXT4fmkTz6wRL6bTF4uzPcfkUCa8u4JWHw8Ag==", "dev": true, "requires": { "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", + "cookiejar": "^2.1.2", + "debug": "^4.1.0", + "form-data": "^2.3.3", "formidable": "^1.2.0", "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" + "mime": "^2.4.0", + "qs": "^6.6.0", + "readable-stream": "^3.0.6" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true + }, + "qs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.6.0.tgz", + "integrity": "sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA==", + "dev": true + }, + "readable-stream": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", + "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } } } }, @@ -13519,6 +13803,40 @@ "dev": true, "requires": { "execa": "^0.7.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } } }, "terser": { @@ -13547,9 +13865,9 @@ } }, "terser-webpack-plugin": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz", - "integrity": "sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.1.tgz", + "integrity": "sha512-GGSt+gbT0oKcMDmPx4SRSfJPE1XaN3kQRWG4ghxKQw9cn5G9x6aCKSsgYdvyM0na9NJ4Drv0RG6jbBByZ5CMjw==", "dev": true, "requires": { "cacache": "^11.0.2", @@ -13593,9 +13911,9 @@ } }, "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -14226,8 +14544,7 @@ "varint": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", - "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=", - "dev": true + "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=" }, "varint-decoder": { "version": "0.1.1", @@ -14301,9 +14618,9 @@ "dev": true }, "webpack": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.1.tgz", - "integrity": "sha512-qAS7BFyS5iuOZzGJxyDXmEI289h7tVNtJ5XMxf6Tz55J2riOyH42uaEsWF0F32TRaI+54SmI6qRgHM3GzsZ+sQ==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.2.tgz", + "integrity": "sha512-PK3uVg3/NuNVOjPfYleFI6JF7khO7c2kIlksH7mivQm+QDcwiqV1x6+q89dDeOioh5FNxJHr3LKbDu3oSAhl9g==", "dev": true, "requires": { "@webassemblyjs/ast": "1.7.11", @@ -14356,21 +14673,6 @@ "supports-color": "^5.5.0", "v8-compile-cache": "^2.0.2", "yargs": "^12.0.2" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } } }, "webpack-sources": { @@ -14627,12 +14929,6 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", - "dev": true - }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -14659,9 +14955,9 @@ } }, "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -14700,26 +14996,17 @@ "requires": { "ansi-regex": "^3.0.0" } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } }, "yargs-promise": { diff --git a/package.json b/package.json index 28134d7a..06808263 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,11 @@ "node": ">=8.0.0" }, "dependencies": { + "ipld-dag-pb": "^0.15.2", "orbit-db-identity-provider": "github:orbitdb/orbit-db-identity-provider", "p-map": "^1.1.1", - "p-whilst": "^1.0.0" + "p-whilst": "^1.0.0", + "pify": "^4.0.1" }, "devDependencies": { "@babel/cli": "~7.2.3", @@ -28,10 +30,10 @@ "@orbitdb/eslint-config-orbitdb": "0.0.2", "babel-loader": "~8.0.4", "datastore-level": "~0.10.0", - "go-ipfs-dep": "~0.4.17", - "ipfs": "~0.31.4", - "ipfs-repo": "~0.23.1", - "ipfsd-ctl": "~0.39.1", + "go-ipfs-dep": "~0.4.18", + "ipfs": "~0.33.1", + "ipfs-repo": "~0.24.0", + "ipfsd-ctl": "~0.40.2", "is-node": "~1.0.2", "istanbul": "~0.4.5", "json-loader": "~0.5.7", diff --git a/src/entry.js b/src/entry.js index 0e7a34aa..fb2023bf 100644 --- a/src/entry.js +++ b/src/entry.js @@ -1,8 +1,9 @@ 'use strict' const Clock = require('./lamport-clock') -const { isDefined } = require('./utils') +const { isDefined, toIpldNode, fromIpldNode } = require('./utils') +const IPLD_LINKS = ['next'] const IpfsNotDefinedError = () => new Error('Ipfs instance not defined') class Entry { @@ -32,7 +33,7 @@ class Entry { id: logId, // For determining a unique chain payload: data, // Can be any JSON.stringifyable data next: nexts, // Array of Multihashes - v: 0, // For future data structure updates, should currently always be 0 + v: 1, // To tag the version of this data structure clock: clock || new Clock(identity.publicKey) } @@ -103,9 +104,9 @@ class Entry { if (entry.identity) Object.assign(e, { identity: entry.identity }) if (entry.sig) Object.assign(e, { sig: entry.sig }) - const data = Entry.toBuffer(e) - const object = await ipfs.object.put(data) - return object.toJSON().multihash + const dagNode = await toIpldNode(e, IPLD_LINKS) + const cid = await ipfs.dag.put(dagNode) + return cid.toBaseEncodedString() } /** @@ -122,21 +123,21 @@ class Entry { if (!ipfs) throw IpfsNotDefinedError() if (!hash) throw new Error(`Invalid hash: ${hash}`) - const obj = await ipfs.object.get(hash, { enc: 'base58' }) + const result = await ipfs.dag.get(hash) + const e = fromIpldNode(result.value, IPLD_LINKS) - const data = JSON.parse(obj.toJSON().data) let entry = { hash: hash, - id: data.id, - payload: data.payload, - next: data.next, - v: data.v, - clock: new Clock(data.clock.id, data.clock.time) + id: e.id, + payload: e.payload, + next: e.next, + v: e.v, + clock: new Clock(e.clock.id, e.clock.time) } - if (data.key) Object.assign(entry, { key: data.key }) - if (data.identity) Object.assign(entry, { identity: data.identity }) - if (data.sig) Object.assign(entry, { sig: data.sig }) + if (e.key) Object.assign(entry, { key: e.key }) + if (e.identity) Object.assign(entry, { identity: e.identity }) + if (e.sig) Object.assign(entry, { sig: e.sig }) return entry } diff --git a/src/log-io.js b/src/log-io.js index 26292554..f35c3bb1 100644 --- a/src/log-io.js +++ b/src/log-io.js @@ -4,8 +4,9 @@ const Entry = require('./entry') const EntryIO = require('./entry-io') const Clock = require('./lamport-clock') const LogError = require('./log-errors') -const { isDefined, findUniques, difference } = require('./utils') +const { isDefined, findUniques, difference, toIpldNode, fromIpldNode } = require('./utils') +const IPLD_LINKS = ['heads'] const last = (arr, n) => arr.slice(arr.length - n, arr.length) class LogIO { @@ -13,8 +14,11 @@ class LogIO { if (!isDefined(ipfs)) throw LogError.IPFSNotDefinedError() if (!isDefined(log)) throw LogError.LogNotDefinedError() if (log.values.length < 1) throw new Error(`Can't serialize an empty log`) - const dagNode = await ipfs.object.put(log.toBuffer()) - return dagNode.toJSON().multihash + const logData = log.toJSON() + + const dagNode = await toIpldNode(logData, IPLD_LINKS) + const cid = await ipfs.dag.put(dagNode) + return cid.toBaseEncodedString() } /** @@ -29,8 +33,8 @@ class LogIO { if (!isDefined(ipfs)) throw LogError.IPFSNotDefinedError() if (!isDefined(hash)) throw new Error(`Invalid hash: ${hash}`) - const dagNode = await ipfs.object.get(hash, { enc: 'base58' }) - const logData = JSON.parse(dagNode.toJSON().data) + const result = await ipfs.dag.get(hash) + const logData = fromIpldNode(result.value, IPLD_LINKS) if (!logData.heads || !logData.id) throw LogError.NotALogError() const entries = await EntryIO.fetchAll(ipfs, logData.heads, length, exclude, null, onProgressCallback) diff --git a/src/utils/from-ipld-node.js b/src/utils/from-ipld-node.js new file mode 100644 index 00000000..ddf46be0 --- /dev/null +++ b/src/utils/from-ipld-node.js @@ -0,0 +1,28 @@ +const cidToMultihash = (cid) => { + if (!cid) { + return cid + } + + if (Array.isArray(cid)) { + return cid.map(cidToMultihash) + } + + return cid.toBaseEncodedString() +} + +const fromIpldNode = (dagNode, links) => { + // Backwards compatibility of old `dab-pb` nodes + if (typeof dagNode.toJSON === 'function') { + return JSON.parse(dagNode.toJSON().data) + } + + const obj = Object.assign({}, dagNode) + + links.forEach((prop) => { + obj[prop] = cidToMultihash(obj[prop]) + }) + + return obj +} + +module.exports = fromIpldNode diff --git a/src/utils/index.js b/src/utils/index.js index 55d01ea5..18cedd43 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -3,9 +3,13 @@ const difference = require('./difference') const findUniques = require('./find-uniques') const isDefined = require('./is-defined') +const fromIpldNode = require('./from-ipld-node') +const toIpldNode = require('./to-ipld-node') module.exports = { difference, findUniques, - isDefined + isDefined, + fromIpldNode, + toIpldNode } diff --git a/src/utils/to-ipld-node.js b/src/utils/to-ipld-node.js new file mode 100644 index 00000000..f3452f90 --- /dev/null +++ b/src/utils/to-ipld-node.js @@ -0,0 +1,33 @@ +const dagPB = require('ipld-dag-pb') +const pify = require('pify') + +const createDagNode = pify(dagPB.DAGNode.create) + +const multihashToCborLink = (multihash) => { + if (!multihash) { + return multihash + } + + if (Array.isArray(multihash)) { + return multihash.map(multihashToCborLink) + } + + return { '/': multihash } +} + +const toIpldNode = (obj, links) => { + // Backwards compatibility of old `dab-pb` nodes + if (obj.v === 0) { + return createDagNode(Buffer.from(JSON.stringify(obj))) + } + + const dagNode = Object.assign({}, obj) + + links.forEach((prop) => { + dagNode[prop] = multihashToCborLink(dagNode[prop]) + }) + + return dagNode +} + +module.exports = toIpldNode diff --git a/test/entry-io.spec.js b/test/entry-io.spec.js index c1fcd7e5..6c301a54 100644 --- a/test/entry-io.spec.js +++ b/test/entry-io.spec.js @@ -60,7 +60,7 @@ Object.keys(testAPIs).forEach((IPFS) => { assert.strictEqual(res.length, 2) }) - it('loads max 1 entriy from a log of 2 entry', async () => { + it('loads max 1 entry from a log of 2 entry', async () => { let log = new Log(ipfs, testACL, testIdentity, 'X') await log.append('one') await log.append('two') diff --git a/test/entry.spec.js b/test/entry.spec.js index 7193c42c..7a8d2eb7 100644 --- a/test/entry.spec.js +++ b/test/entry.spec.js @@ -40,32 +40,32 @@ Object.keys(testAPIs).forEach((IPFS) => { describe('create', () => { it('creates a an empty entry', async () => { - const expectedHash = 'QmV5NpvViHHouBfo7CSnfX2iB4t5PVWNJG8doKt5cwwnxY' + const expectedHash = 'zdpuAo2GbSzyzGqskVpWjhdWbJeMYx4zVNYkXBf4a3Y6wZArD' const entry = await Entry.create(ipfs, testIdentity, 'A', 'hello') assert.strictEqual(entry.hash, expectedHash) assert.strictEqual(entry.id, 'A') assert.strictEqual(entry.clock.id, testIdentity.publicKey) assert.strictEqual(entry.clock.time, 0) - assert.strictEqual(entry.v, 0) + assert.strictEqual(entry.v, 1) assert.strictEqual(entry.payload, 'hello') assert.strictEqual(entry.next.length, 0) }) it('creates a entry with payload', async () => { - const expectedHash = 'QmderYccue9XqB7V4EYf71ZygWELdzdbVqo1oxR4nMRrCh' + const expectedHash = 'zdpuApumWqUZbcxYuhpRTy43xsBP1gdT1BTin2mVKVjW9gZVQ' const payload = 'hello world' const entry = await Entry.create(ipfs, testIdentity, 'A', payload, []) assert.strictEqual(entry.payload, payload) assert.strictEqual(entry.id, 'A') assert.strictEqual(entry.clock.id, testIdentity.publicKey) assert.strictEqual(entry.clock.time, 0) - assert.strictEqual(entry.v, 0) + assert.strictEqual(entry.v, 1) assert.strictEqual(entry.next.length, 0) assert.strictEqual(entry.hash, expectedHash) }) it('creates a entry with payload and next', async () => { - const expectedHash = 'QmQDYaVgVpR7uMG1ao9D1sioYHvAHeuLgUxKBuX1tQtKTY' + const expectedHash = 'zdpuB2WUk9WVrfNi2BiULMejhqx15P4ENmoAV8TrgPZc9bgzr' const payload1 = 'hello world' const payload2 = 'hello again' const entry1 = await Entry.create(ipfs, testIdentity, 'A', payload1, []) @@ -149,7 +149,7 @@ Object.keys(testAPIs).forEach((IPFS) => { describe('toMultihash', () => { it('returns an ipfs hash', async () => { - const expectedHash = 'QmV5NpvViHHouBfo7CSnfX2iB4t5PVWNJG8doKt5cwwnxY' + const expectedHash = 'zdpuAo2GbSzyzGqskVpWjhdWbJeMYx4zVNYkXBf4a3Y6wZArD' const entry = await Entry.create(ipfs, testIdentity, 'A', 'hello', []) const hash = await Entry.toMultihash(ipfs, entry) assert.strictEqual(entry.hash, expectedHash) @@ -189,7 +189,7 @@ Object.keys(testAPIs).forEach((IPFS) => { describe('fromMultihash', () => { it('creates a entry from ipfs hash', async () => { - const expectedHash = 'QmTLLKuNVXC95rGcnrL1M3xKf4dWYuu3MeAM3LUh3YNDJ7' + const expectedHash = 'zdpuApQ7g8DVTSuE67eThbaRQn6Xw8qg4ggkwrCuvJ9x1N62B' const payload1 = 'hello world' const payload2 = 'hello again' const entry1 = await Entry.create(ipfs, testIdentity, 'A', payload1, []) diff --git a/test/log.spec.js b/test/log.spec.js index 76c096ae..9fee88de 100644 --- a/test/log.spec.js +++ b/test/log.spec.js @@ -188,7 +188,7 @@ Object.keys(testAPIs).forEach((IPFS) => { it('returns an Entry', () => { const entry = log.get(log.values[0].hash) - assert.deepStrictEqual(entry.hash, 'QmXmmR8f9zYbAQouvLJYhvoffb7c31FC7DV6nSfkv5iJKG') + assert.deepStrictEqual(entry.hash, 'zdpuB2F2JjP1rbBRQbvSic3zMx6h1Lpi2xAgSfFmTyK3uc7BS') }) it('returns undefined when Entry is not in the log', () => { @@ -202,11 +202,11 @@ Object.keys(testAPIs).forEach((IPFS) => { before(async () => { expectedData = { - hash: 'QmXmmR8f9zYbAQouvLJYhvoffb7c31FC7DV6nSfkv5iJKG', + hash: 'zdpuB2F2JjP1rbBRQbvSic3zMx6h1Lpi2xAgSfFmTyK3uc7BS', id: 'AAA', payload: 'one', next: [], - v: 0, + v: 1, clock: new Clock(testIdentity.publicKey, 1), key: testIdentity.toJSON() } @@ -236,7 +236,7 @@ Object.keys(testAPIs).forEach((IPFS) => { let log//, testIdentity2, testIdentity3, testIdentity4 const expectedData = { id: 'AAA', - heads: ['QmRk7Cborp5kyvAr6ty8Qhxs9PtvdBojG9uWUopqUN3c4z'] + heads: ['zdpuAsspW9uQ5KN8o598sLxh7fdbFFCJcrf64S8Rbj8TU7UrV'] } beforeEach(async () => { @@ -255,11 +255,11 @@ Object.keys(testAPIs).forEach((IPFS) => { describe('toSnapshot', () => { const expectedData = { id: 'AAA', - heads: ['QmRk7Cborp5kyvAr6ty8Qhxs9PtvdBojG9uWUopqUN3c4z'], + heads: ['zdpuAsspW9uQ5KN8o598sLxh7fdbFFCJcrf64S8Rbj8TU7UrV'], values: [ - 'QmXmmR8f9zYbAQouvLJYhvoffb7c31FC7DV6nSfkv5iJKG', - 'QmbxyqTACVkkGkkBryEsUP7ff2trezXy4eK67izyxjmu4X', - 'QmRk7Cborp5kyvAr6ty8Qhxs9PtvdBojG9uWUopqUN3c4z' + 'zdpuB2F2JjP1rbBRQbvSic3zMx6h1Lpi2xAgSfFmTyK3uc7BS', + 'zdpuArtVvt2g9g1xe7qcPYGeSpfF8dc3p27Uow6X6f2CuQmkD', + 'zdpuAsspW9uQ5KN8o598sLxh7fdbFFCJcrf64S8Rbj8TU7UrV' ] } @@ -283,7 +283,7 @@ Object.keys(testAPIs).forEach((IPFS) => { describe('toMultihash', async () => { it('returns the log as ipfs hash', async () => { - const expectedHash = 'QmbxZPQsFdj3qA3gvtHV7fJvb48ZoScNWb2zJpKyR3A5BF' + const expectedHash = 'zdpuB3U3wetrMAaLBW7XYJqxqjm6MrcSehKqAMydkAeNuthbx' let log = new Log(ipfs, testACL, testIdentity, 'A') await log.append('one') const hash = await log.toMultihash() @@ -293,16 +293,16 @@ Object.keys(testAPIs).forEach((IPFS) => { it('log serialized to ipfs contains the correct data', async () => { const expectedData = { id: 'A', - heads: ['QmNPsBXD1ieznbsMEgPZdSgxB25vCC6vRge9XfynaFtgxs'] + heads: ['zdpuB1Fw15iDvk6wJgnoZXTSNt4gENLuvYxgyiohtNVh78JZz'] } - const expectedHash = 'QmbxZPQsFdj3qA3gvtHV7fJvb48ZoScNWb2zJpKyR3A5BF' + const expectedHash = 'zdpuB3U3wetrMAaLBW7XYJqxqjm6MrcSehKqAMydkAeNuthbx' let log = new Log(ipfs, testACL, testIdentity, 'A') await log.append('one') const hash = await log.toMultihash() assert.strictEqual(hash, expectedHash) - const result = await ipfs.object.get(hash) - const res = JSON.parse(result.toJSON().data.toString()) - assert.deepStrictEqual(res.heads, expectedData.heads) + const result = await ipfs.dag.get(hash) + const heads = result.value.heads.map(head => head.toBaseEncodedString()) + assert.deepStrictEqual(heads, expectedData.heads) }) it('throws an error if log items is empty', async () => { @@ -322,7 +322,7 @@ Object.keys(testAPIs).forEach((IPFS) => { it('creates a log from ipfs hash - one entry', async () => { const expectedData = { id: 'X', - heads: ['QmRRGWJ8PzhHTp3zgdx2fS4adXF1q4HVGZ9MtbLgZ8QFfL'] + heads: ['zdpuAwu8fa7VEGTb4kjkL2FqgUucLe5QFdwLfTj8XjsAeJDb7'] } let log = new Log(ipfs, testACL, testIdentity, 'X') await log.append('one') @@ -421,10 +421,10 @@ Object.keys(testAPIs).forEach((IPFS) => { }) it('throws an error when data from hash is not instance of Log', async () => { - const res = await ipfs.object.put(Buffer.from('{}')) + const cid = await ipfs.dag.put({}) let err try { - await Log.fromMultihash(ipfs, testACL, testIdentity, res.toJSON().multihash) + await Log.fromMultihash(ipfs, testACL, testIdentity, cid) } catch (e) { err = e } @@ -432,14 +432,18 @@ Object.keys(testAPIs).forEach((IPFS) => { }) it('throws an error if data from hash is not valid JSON', async () => { - const res = await ipfs.object.put(Buffer.from('hello')) + const cid = await ipfs.dag.put(Buffer.from('hello'), { + hashAlg: 'sha2-256', + format: 'dag-pb' + }) + let err try { - await Log.fromMultihash(ipfs, testACL, testIdentity, res.toJSON().multihash) + await Log.fromMultihash(ipfs, testACL, testIdentity, cid) } catch (e) { err = e } - assert.strictEqual(err.message, 'Unexpected token h in JSON at position 0') + assert.strictEqual(err.message, 'Unexpected end of JSON input') }) it('onProgress callback is fired for each entry', async () => { diff --git a/test/replicate.spec.js b/test/replicate.spec.js index b6131579..1f20c172 100644 --- a/test/replicate.spec.js +++ b/test/replicate.spec.js @@ -46,10 +46,10 @@ Object.keys(testAPIs).forEach((IPFS) => { // Use mem-store for faster testing (no disk IO) const memstore = new MemStore() - ipfs1.object.put = memstore.put.bind(memstore) - ipfs1.object.get = memstore.get.bind(memstore) - ipfs2.object.put = memstore.put.bind(memstore) - ipfs2.object.get = memstore.get.bind(memstore) + ipfs1.dag.put = memstore.put.bind(memstore) + ipfs1.dag.get = memstore.get.bind(memstore) + ipfs2.dag.put = memstore.put.bind(memstore) + ipfs2.dag.get = memstore.get.bind(memstore) // Create an identity for each peers testIdentity = await IdentityProvider.createIdentity({ id: 'userA', identityKeysPath, signingKeysPath }) diff --git a/test/utils/mem-store.js b/test/utils/mem-store.js index 81488307..6220ec0d 100644 --- a/test/utils/mem-store.js +++ b/test/utils/mem-store.js @@ -7,7 +7,9 @@ const defaultHashAlg = 'sha2-256' const createMultihash = (data, hashAlg) => { return new Promise((resolve, reject) => { - multihashing(data, hashAlg || defaultHashAlg, (err, multihash) => { + const buffer = Buffer.from(JSON.stringify(data)) + + multihashing(buffer, hashAlg || defaultHashAlg, (err, multihash) => { if (err) { return reject(err) } @@ -17,44 +19,56 @@ const createMultihash = (data, hashAlg) => { }) } -// const LRU = require('lru') -// const ImmutableDB = require('./immutabledb-interface') -// const createMultihash = require('./create-multihash') +const transformLinksIntoCids = (data) => { + if (!data) { + return data + } + + if (data['/']) { + const hash = data['/'] + + return { + toBaseEncodedString: () => hash + } + } + + if (Array.isArray(data)) { + return data.map(transformLinksIntoCids) + } + + if (typeof data === 'object') { + return Object.keys(data).reduce((obj, key) => { + obj[key] = transformLinksIntoCids(data[key]) + + return obj + }, {}) + } + + return data +} /* Memory store using an LRU cache */ class MemStore { constructor () { - this._store = {}// new LRU(1000) + this._store = new Map() } async put (value) { - const data = value// new Buffer(JSON.stringify(value)) + const data = value const hash = await createMultihash(data) - // console.log(this._store) - // this._store.set(hash, data) - if (!this._store) this._store = {} - // console.log(this._store) - // console.log(hash, data) - this._store[hash] = data - // return hash + + this._store.set(hash, data) + return { - toJSON: () => { - return { - data: value, - multihash: hash - } - } + toBaseEncodedString: () => hash } } async get (key) { + const data = this._store.get(key) + return { - toJSON: () => { - return { - data: this._store[key], - multihash: key - } - } + value: transformLinksIntoCids(data) } } }